diff --git a/com.regnosys.rosetta.tests/src/com/regnosys/rosetta/generator/java/calculation/RosettaCalculationGenerationTest.xtend b/com.regnosys.rosetta.tests/src/com/regnosys/rosetta/generator/java/calculation/RosettaCalculationGenerationTest.xtend index 3967e0398..f76f8e71f 100644 --- a/com.regnosys.rosetta.tests/src/com/regnosys/rosetta/generator/java/calculation/RosettaCalculationGenerationTest.xtend +++ b/com.regnosys.rosetta.tests/src/com/regnosys/rosetta/generator/java/calculation/RosettaCalculationGenerationTest.xtend @@ -58,7 +58,6 @@ class RosettaCalculationGenerationTest { package com.rosetta.test.model.functions; import com.google.inject.Inject; - import com.google.inject.Provider; import com.rosetta.model.lib.functions.Mapper; import com.rosetta.model.lib.functions.MapperS; import com.rosetta.model.lib.functions.RosettaFunction; @@ -74,19 +73,19 @@ class RosettaCalculationGenerationTest { */ public class PeriodEnumFunc { - @Inject protected Provider MONTHProvider; + @Inject protected PeriodEnumFunc.MONTH MONTH; public BigDecimal evaluate(PeriodEnum in1, Period in2) { switch (in1) { case MONTH: - return MONTHProvider.get().evaluate(in1, in2); + return MONTH.evaluate(in1, in2); default: throw new IllegalArgumentException("Enum value not implemented: " + in1); } } - public class MONTH implements RosettaFunction { + public static class MONTH implements RosettaFunction { /** * @param in1 @@ -604,7 +603,6 @@ class RosettaCalculationGenerationTest { package com.rosetta.test.model.functions; import com.google.inject.Inject; - import com.google.inject.Provider; import com.rosetta.model.lib.functions.Mapper; import com.rosetta.model.lib.functions.MapperS; import com.rosetta.model.lib.functions.RosettaFunction; @@ -620,22 +618,22 @@ class RosettaCalculationGenerationTest { */ public class MathFunc { - @Inject protected Provider INCRProvider; - @Inject protected Provider DECRProvider; + @Inject protected MathFunc.INCR INCR; + @Inject protected MathFunc.DECR DECR; public String evaluate(Math in1, MathInput in2) { switch (in1) { case INCR: - return INCRProvider.get().evaluate(in1, in2); + return INCR.evaluate(in1, in2); case DECR: - return DECRProvider.get().evaluate(in1, in2); + return DECR.evaluate(in1, in2); default: throw new IllegalArgumentException("Enum value not implemented: " + in1); } } - public class INCR implements RosettaFunction { + public static class INCR implements RosettaFunction { // RosettaFunction dependencies // @@ -661,7 +659,7 @@ class RosettaCalculationGenerationTest { } - public class DECR implements RosettaFunction { + public static class DECR implements RosettaFunction { // RosettaFunction dependencies // diff --git a/com.regnosys.rosetta/src/com/regnosys/rosetta/generator/java/function/CardinalityProvider.xtend b/com.regnosys.rosetta/src/com/regnosys/rosetta/generator/java/function/CardinalityProvider.xtend index 7fa1b60cd..f164c0beb 100644 --- a/com.regnosys.rosetta/src/com/regnosys/rosetta/generator/java/function/CardinalityProvider.xtend +++ b/com.regnosys.rosetta/src/com/regnosys/rosetta/generator/java/function/CardinalityProvider.xtend @@ -21,7 +21,7 @@ class CardinalityProvider { RosettaFunction: obj.output.card.isIsMany Function: if(obj.output === null) false else obj.output.isMulti Attribute: obj.card.isMany - default: {println(obj.eClass) false} + default: false } } } \ No newline at end of file diff --git a/com.regnosys.rosetta/src/com/regnosys/rosetta/generator/java/function/FuncGenerator.xtend b/com.regnosys.rosetta/src/com/regnosys/rosetta/generator/java/function/FuncGenerator.xtend index 6f4ee8d4c..24bd4292d 100644 --- a/com.regnosys.rosetta/src/com/regnosys/rosetta/generator/java/function/FuncGenerator.xtend +++ b/com.regnosys.rosetta/src/com/regnosys/rosetta/generator/java/function/FuncGenerator.xtend @@ -55,7 +55,7 @@ class FuncGenerator { val classBody = if (func.handleAsEnumFunction) { tracImports(func.dispatchClassBody(func.name, dependencies, javaNames, version)) } else { - tracImports(func.classBody(func.name, dependencies, javaNames, version)) + tracImports(func.classBody(func.name, dependencies, javaNames, version, false)) } val content = ''' package «javaNames.packages.functions.packageName»; @@ -79,11 +79,11 @@ class FuncGenerator { val condDeps = (func.conditions + func.postConditions).flatMap[expressions].flatMap [ functionDependencyProvider.functionDependencies(it) ] - return Util.distinctBy(deps + condDeps, [name]).sortBy[it.name] + return Util.distinctBy(deps + condDeps, [name]).sortBy[it.name] } private def StringConcatenationClient classBody(Function func, String className, - Iterable dependencies, extension JavaNames names, String version) { + Iterable dependencies, extension JavaNames names, String version, boolean isStatic) { val isAbstract = func.operations.nullOrEmpty val outputName = getOutput(func)?.name val outputType = func.outputTypeOrVoid(names) @@ -91,7 +91,7 @@ class FuncGenerator { val outNeedsBuilder = expressionWithBuilder.needsBuilder(getOutput(func)) ''' «IF isAbstract»@«ImplementedBy»(«className»Impl.class)«ENDIF» - public «IF isAbstract»abstract «ENDIF»class «className» implements «RosettaFunction» { + public «IF isStatic»static «ENDIF»«IF isAbstract»abstract «ENDIF»class «className» implements «RosettaFunction» { «IF !dependencies.empty» // RosettaFunction dependencies @@ -173,7 +173,7 @@ class FuncGenerator { «ENDFOR» «FOR enumFunc : dispatchingFuncs» - @«Inject» protected «Provider»<«toTargetClassName(enumFunc)»> «toTargetClassName(enumFunc).lastSegment»Provider; + @«Inject» protected «toTargetClassName(enumFunc)» «toTargetClassName(enumFunc).lastSegment»; «ENDFOR» public «outputType» evaluate(«function.inputsAsParameters(names)») { @@ -181,7 +181,7 @@ class FuncGenerator { «FOR enumFunc : dispatchingFuncs» «val enumValClass = toTargetClassName(enumFunc).lastSegment» case «enumValClass»: - return «enumValClass»Provider.get().evaluate(«function.inputsAsArguments(names)»); + return «enumValClass».evaluate(«function.inputsAsArguments(names)»); «ENDFOR» default: throw new IllegalArgumentException("Enum value not implemented: " + «enumParam»); @@ -191,7 +191,7 @@ class FuncGenerator { «FOR enumFunc : dispatchingFuncs» «val enumValClass = toTargetClassName(enumFunc).lastSegment» - «enumFunc.classBody(enumValClass, collectFunctionDependencies(enumFunc),names, version)» + «enumFunc.classBody(enumValClass, collectFunctionDependencies(enumFunc), names, version, true)» «ENDFOR» }''' }