diff --git a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectBoilerPlate.xtend b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectBoilerPlate.xtend index e0e54b8a9..6e1948c6d 100644 --- a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectBoilerPlate.xtend +++ b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectBoilerPlate.xtend @@ -17,6 +17,7 @@ import com.regnosys.rosetta.generator.java.types.JavaPojoProperty import java.util.Collection import com.rosetta.util.types.JavaClass import com.regnosys.rosetta.generator.java.types.RJavaEnum +import com.regnosys.rosetta.types.RDataType class ModelObjectBoilerPlate { @@ -43,6 +44,19 @@ class ModelObjectBoilerPlate { return prop.name } + def String javaRuneAnnotation(JavaPojoProperty prop) { + if (prop.type == REFERENCE) { + return '@ref:scoped' + } else + return prop.runeName + } + + def boolean addRuneMetaAnnotation(JavaPojoProperty prop) { + return prop.type == REFERENCE || + prop.type==META_FIELDS || + (javaRuneAnnotation(prop) == "@data" && prop.type.isValueRosettaModelObject) + } + def StringConcatenationClient implementsClause(JavaPojoInterface javaType) { '''«FOR i : javaType.interfaces SEPARATOR ', '»«i»«ENDFOR»''' } diff --git a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectBuilderGenerator.xtend b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectBuilderGenerator.xtend index 422b4fcb8..d94f192cd 100644 --- a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectBuilderGenerator.xtend +++ b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectBuilderGenerator.xtend @@ -1,33 +1,33 @@ package com.regnosys.rosetta.generator.java.object -import com.rosetta.model.lib.meta.Key -import com.rosetta.model.lib.process.BuilderMerger -import java.util.ArrayList -import java.util.function.Consumer -import java.util.stream.Collectors -import org.eclipse.xtend2.lib.StringConcatenationClient - import com.regnosys.rosetta.generator.java.JavaScope -import com.regnosys.rosetta.generator.java.types.JavaTypeTranslator -import javax.inject.Inject -import com.rosetta.model.lib.annotations.RosettaAttribute -import com.rosetta.model.lib.RosettaModelObjectBuilder -import com.regnosys.rosetta.generator.java.types.JavaTypeUtil -import com.regnosys.rosetta.generator.java.types.JavaPojoProperty -import com.rosetta.util.types.JavaType -import com.rosetta.util.types.JavaClass -import com.regnosys.rosetta.generator.java.types.JavaPojoInterface -import com.regnosys.rosetta.generator.java.statement.builder.JavaExpression import com.regnosys.rosetta.generator.java.expression.TypeCoercionService +import com.regnosys.rosetta.generator.java.statement.JavaEnhancedForLoop +import com.regnosys.rosetta.generator.java.statement.JavaIfThenStatement +import com.regnosys.rosetta.generator.java.statement.builder.JavaExpression +import com.regnosys.rosetta.generator.java.statement.builder.JavaIfThenElseBuilder +import com.regnosys.rosetta.generator.java.statement.builder.JavaThis import com.regnosys.rosetta.generator.java.statement.builder.JavaVariable +import com.regnosys.rosetta.generator.java.types.JavaPojoInterface +import com.regnosys.rosetta.generator.java.types.JavaPojoProperty +import com.regnosys.rosetta.generator.java.types.JavaTypeTranslator +import com.regnosys.rosetta.generator.java.types.JavaTypeUtil import com.regnosys.rosetta.generator.java.types.RJavaWithMetaValue -import com.regnosys.rosetta.generator.java.statement.JavaIfThenStatement +import com.rosetta.model.lib.RosettaModelObjectBuilder +import com.rosetta.model.lib.annotations.RosettaAttribute +import com.rosetta.model.lib.annotations.RuneAttribute +import com.rosetta.model.lib.annotations.RuneMetaType +import com.rosetta.model.lib.meta.Key +import com.rosetta.model.lib.process.BuilderMerger +import com.rosetta.util.types.JavaClass import com.rosetta.util.types.JavaPrimitiveType -import com.regnosys.rosetta.generator.java.statement.builder.JavaThis -import com.regnosys.rosetta.generator.java.statement.JavaEnhancedForLoop -import com.regnosys.rosetta.generator.java.statement.builder.JavaIfThenElseBuilder +import com.rosetta.util.types.JavaType +import java.util.ArrayList import java.util.Collections -import com.regnosys.rosetta.generator.java.statement.builder.JavaConditionalExpression +import java.util.function.Consumer +import java.util.stream.Collectors +import javax.inject.Inject +import org.eclipse.xtend2.lib.StringConcatenationClient class ModelObjectBuilderGenerator { @@ -124,6 +124,8 @@ class ModelObjectBuilderGenerator { @Override @«RosettaAttribute»("«prop.javaAnnotation»") + @«RuneAttribute»("«prop.javaRuneAnnotation»") + «IF prop.addRuneMetaAnnotation»@«RuneMetaType»«ENDIF» public «prop.toBuilderTypeExt» «prop.getterName»() «field.completeAsReturn.toBlock» «IF prop.type.isRosettaModelObject» «IF !prop.type.isList» @@ -258,7 +260,11 @@ class ModelObjectBuilderGenerator { «val addMethodScope = scope.methodScope(addMethodName)» «val addMethodArg = new JavaVariable(addMethodScope.createUniqueIdentifier(currentProp.name.toFirstLower), itemType)» @Override - «IF isMainProp»@«RosettaAttribute»("«currentProp.javaAnnotation»")«ENDIF» + «IF isMainProp» + @«RosettaAttribute»("«currentProp.javaAnnotation»") + @«RuneAttribute»("«currentProp.javaRuneAnnotation»") + «IF currentProp.addRuneMetaAnnotation»@«RuneMetaType»«ENDIF» + «ENDIF» public «builderType» «addMethodName»(«itemType» «addMethodArg») « (if (isMainProp) { new JavaIfThenStatement( @@ -381,6 +387,10 @@ class ModelObjectBuilderGenerator { «val setMultiMethodScope = scope.methodScope(setMethodName)» «val setMultiMethodArg = new JavaVariable(setMultiMethodScope.createUniqueIdentifier(currentProp.name.toFirstLower + "s"), propType)» @Override + «IF isMainProp» + @«RuneAttribute»("«currentProp.javaRuneAnnotation»") + «IF currentProp.addRuneMetaAnnotation»@«RuneMetaType»«ENDIF» + «ENDIF» public «builderType» «setMethodName»(«propType» «setMultiMethodArg») « (if (isMainProp) { new JavaIfThenElseBuilder( @@ -459,7 +469,11 @@ class ModelObjectBuilderGenerator { «val setMethodScope = scope.methodScope(setMethodName)» «val setMethodArg = new JavaVariable(setMethodScope.createUniqueIdentifier(currentProp.name.toFirstLower), propType)» @Override - «IF isMainProp»@«RosettaAttribute»("«currentProp.javaAnnotation»")«ENDIF» + «IF isMainProp» + @«RosettaAttribute»("«currentProp.javaAnnotation»") + @«RuneAttribute»("«currentProp.javaRuneAnnotation»") + «IF currentProp.addRuneMetaAnnotation»@«RuneMetaType»«ENDIF» + «ENDIF» public «builderType» «setMethodName»(«propType» «setMethodArg») « (if (isMainProp) { JavaExpression.from('''this.«field» = «setMethodArg» == null ? null : «setMethodArg.toBuilder»''', JavaPrimitiveType.VOID) diff --git a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectGenerator.xtend b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectGenerator.xtend index 7b6be8e90..424be7bd5 100644 --- a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectGenerator.xtend +++ b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/object/ModelObjectGenerator.xtend @@ -27,6 +27,10 @@ import com.regnosys.rosetta.generator.java.types.JavaPojoProperty import com.regnosys.rosetta.generator.java.statement.builder.JavaExpression import com.regnosys.rosetta.generator.java.expression.TypeCoercionService import com.regnosys.rosetta.generator.java.statement.builder.JavaVariable +import com.rosetta.model.lib.annotations.RuneDataType +import com.regnosys.rosetta.config.RosettaConfiguration +import com.rosetta.model.lib.annotations.RuneAttribute +import com.rosetta.model.lib.annotations.RuneMetaType class ModelObjectGenerator { @@ -36,6 +40,7 @@ class ModelObjectGenerator { @Inject extension JavaTypeTranslator @Inject extension JavaTypeUtil @Inject extension TypeCoercionService + @Inject RosettaConfiguration rosettaConfiguration def generate(RootPackage root, IFileSystemAccess2 fsa, RDataType t, String version) { fsa.generateFile(root.child(t.name + '.java').withForwardSlashes, @@ -58,6 +63,7 @@ class ModelObjectGenerator { ''' «javaType.javadoc» @«RosettaDataType»(value="«javaType.rosettaName»", builder=«javaType.toBuilderImplType».class, version="«javaType.version»") + @«RuneDataType»(value="«javaType.rosettaName»", model="«rosettaConfiguration.model.name»", builder=«javaType.toBuilderImplType».class, version="«javaType.version»") public interface «javaType» extends «implementsClause(javaType)» { «metaType» «metaDataIdentifier» = new «metaType»(); @@ -165,6 +171,7 @@ class ModelObjectGenerator { } @Override + @«RuneAttribute»("@type") default Class getType() { return «javaType».class; } @@ -227,6 +234,8 @@ class ModelObjectGenerator { «val field = new JavaVariable(scope.getIdentifierOrThrow(prop), prop.type)» @Override @«RosettaAttribute»("«prop.javaAnnotation»") + @«RuneAttribute»("«prop.javaRuneAnnotation»") + «IF prop.addRuneMetaAnnotation»@«RuneMetaType»«ENDIF» public «prop.type» «prop.getterName»() «field.completeAsReturn.toBlock» «IF !extended»«derivedIncompatibleGettersForProperty(field, prop, scope)»«ENDIF» diff --git a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/JavaPojoProperty.java b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/JavaPojoProperty.java index 473cb43df..5c41d04bf 100644 --- a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/JavaPojoProperty.java +++ b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/JavaPojoProperty.java @@ -27,6 +27,7 @@ public class JavaPojoProperty { private final String name; + private final String runeName; private final String compatibilityName; private final JavaType type; private final String javadoc; @@ -34,11 +35,12 @@ public class JavaPojoProperty { private final AttributeMeta meta; // used in `process` method private final boolean hasLocation; // used in builder `getOrCreate` - public JavaPojoProperty(String name, String compatibilityName, JavaType type, String javadoc, AttributeMeta meta, boolean hasLocation) { - this(name, compatibilityName, type, javadoc, meta, hasLocation, null); + public JavaPojoProperty(String name, String runeName, String compatibilityName, JavaType type, String javadoc, AttributeMeta meta, boolean hasLocation) { + this(name, runeName, compatibilityName, type, javadoc, meta, hasLocation, null); } - private JavaPojoProperty(String name, String compatibilityName, JavaType type, String javadoc, AttributeMeta meta, boolean hasLocation, JavaPojoProperty parentProperty) { + private JavaPojoProperty(String name, String runeName, String compatibilityName, JavaType type, String javadoc, AttributeMeta meta, boolean hasLocation, JavaPojoProperty parentProperty) { this.name = name; + this.runeName = runeName; this.compatibilityName = compatibilityName; this.type = type; this.javadoc = javadoc; @@ -47,7 +49,7 @@ private JavaPojoProperty(String name, String compatibilityName, JavaType type, S this.parentProperty = parentProperty; } public JavaPojoProperty specialize(String compatibilityName, JavaType newType, String newJavadoc, AttributeMeta newMeta, boolean newHasLocation) { - return new JavaPojoProperty(name, compatibilityName, newType, newJavadoc, newMeta, newHasLocation, this); + return new JavaPojoProperty(name, runeName, compatibilityName, newType, newJavadoc, newMeta, newHasLocation, this); } public boolean isCompatibleWithParent() { @@ -57,6 +59,9 @@ public boolean isCompatibleWithParent() { public String getName() { return name; } + public String getRuneName() { + return runeName; + } public String getGetterName() { return "get" + StringUtils.capitalize(compatibilityName); } @@ -97,7 +102,7 @@ public String toString() { } @Override public int hashCode() { - return Objects.hash(compatibilityName, hasLocation, javadoc, meta, name, parentProperty, type); + return Objects.hash(compatibilityName, hasLocation, javadoc, meta, name, runeName, parentProperty, type); } @Override public boolean equals(Object obj) { @@ -109,7 +114,7 @@ public boolean equals(Object obj) { return false; JavaPojoProperty other = (JavaPojoProperty) obj; return Objects.equals(compatibilityName, other.compatibilityName) && hasLocation == other.hasLocation - && Objects.equals(javadoc, other.javadoc) && meta == other.meta && Objects.equals(name, other.name) + && Objects.equals(javadoc, other.javadoc) && meta == other.meta && Objects.equals(name, other.name) && Objects.equals(runeName, other.runeName) && Objects.equals(parentProperty, other.parentProperty) && Objects.equals(type, other.type); } } diff --git a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaFieldWithMeta.java b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaFieldWithMeta.java index fd7ac19ff..03f105d12 100644 --- a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaFieldWithMeta.java +++ b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaFieldWithMeta.java @@ -60,8 +60,8 @@ public List> getInterfaces() { @Override public Collection getOwnProperties() { return List.of( - new JavaPojoProperty("value", "value", valueType, null, null, false), - new JavaPojoProperty("meta", "meta", typeUtil.META_FIELDS, null, null, false) + new JavaPojoProperty("value", "@data", "value", valueType, null, null, false), + new JavaPojoProperty("meta", "meta", "meta", typeUtil.META_FIELDS, null, null, false) ); } } diff --git a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaPojoInterface.java b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaPojoInterface.java index 6b7aa8925..c05fbe794 100644 --- a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaPojoInterface.java +++ b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaPojoInterface.java @@ -84,19 +84,20 @@ private void initializeProperties() { type.getOwnAttributes().forEach(attr -> { String name = attr.getName(); JavaType type = typeTranslator.toMetaJavaType(attr); - addPropertyIfNecessary(name, type, ModelGeneratorUtil.javadoc(attr.getDefinition(), attr.getDocReferences(), null), attr.getRMetaAnnotatedType().hasMetaAttribute("id") ? AttributeMeta.GLOBAL_KEY_FIELD : null, attr.getRMetaAnnotatedType().hasMetaAttribute("location")); + addPropertyIfNecessary(name, name, type, ModelGeneratorUtil.javadoc(attr.getDefinition(), attr.getDocReferences(), null), attr.getRMetaAnnotatedType().hasMetaAttribute("id") ? AttributeMeta.GLOBAL_KEY_FIELD : null, attr.getRMetaAnnotatedType().hasMetaAttribute("location")); }); if (type.hasMetaAttribute("key")) { JavaType metaFieldsType = type.hasMetaAttribute("template") ? typeUtil.META_AND_TEMPLATE_FIELDS : typeUtil.META_FIELDS; - addPropertyIfNecessary("meta", metaFieldsType, null, null, false); + addPropertyIfNecessary("meta", "meta", metaFieldsType, null, null, false); } } } - private void addPropertyIfNecessary(String name, JavaType type, String javadoc, AttributeMeta meta, boolean hasLocation) { + private void addPropertyIfNecessary(String name, String runeName, JavaType type, String javadoc, AttributeMeta meta, boolean hasLocation) { JavaPojoProperty parentProperty = allProperties.get(name); if (parentProperty == null) { JavaPojoProperty newProperty = new JavaPojoProperty( name, + runeName, name, type, javadoc, diff --git a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaReferenceWithMeta.java b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaReferenceWithMeta.java index 1ca8326bb..30b4b31d5 100644 --- a/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaReferenceWithMeta.java +++ b/rosetta-lang/src/main/java/com/regnosys/rosetta/generator/java/types/RJavaReferenceWithMeta.java @@ -62,10 +62,10 @@ public List> getInterfaces() { @Override public Collection getOwnProperties() { return List.of( - new JavaPojoProperty("value", "value", valueType, null, null, false), - new JavaPojoProperty("globalReference", "globalReference", javaTypeUtil.STRING, null, AttributeMeta.META, false), - new JavaPojoProperty("externalReference", "externalReference", javaTypeUtil.STRING, null, AttributeMeta.META, false), - new JavaPojoProperty("reference", "reference", javaTypeUtil.REFERENCE, null, null, false) + new JavaPojoProperty("value", "@data", "value", valueType, null, null, false), + new JavaPojoProperty("globalReference", "@ref", "globalReference", javaTypeUtil.STRING, null, AttributeMeta.META, false), + new JavaPojoProperty("externalReference", "@ref:external", "externalReference", javaTypeUtil.STRING, null, AttributeMeta.META, false), + new JavaPojoProperty("reference", null, "reference", javaTypeUtil.REFERENCE, null, null, false) ); } } diff --git a/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RosettaAttribute.java b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RosettaAttribute.java index 9abae19ac..2dd434b0a 100644 --- a/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RosettaAttribute.java +++ b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RosettaAttribute.java @@ -20,6 +20,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +@Deprecated @Documented @Retention(RetentionPolicy.RUNTIME) public @interface RosettaAttribute { diff --git a/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RosettaDataType.java b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RosettaDataType.java index a3e5f410d..dd813a934 100644 --- a/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RosettaDataType.java +++ b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RosettaDataType.java @@ -22,6 +22,7 @@ import com.rosetta.model.lib.RosettaModelObjectBuilder; +@Deprecated @Documented @Retention(RetentionPolicy.RUNTIME) public @interface RosettaDataType { diff --git a/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneAttribute.java b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneAttribute.java new file mode 100644 index 000000000..42ad0c121 --- /dev/null +++ b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneAttribute.java @@ -0,0 +1,12 @@ +package com.rosetta.model.lib.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +public @interface RuneAttribute { + + String value() default ""; +} diff --git a/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneDataType.java b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneDataType.java new file mode 100644 index 000000000..b182a2d85 --- /dev/null +++ b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneDataType.java @@ -0,0 +1,19 @@ +package com.rosetta.model.lib.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import com.rosetta.model.lib.RosettaModelObjectBuilder; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +public @interface RuneDataType { + String value() default ""; + + String model() default ""; + + Class builder(); + + String version() default ""; +} diff --git a/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneMetaType.java b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneMetaType.java new file mode 100644 index 000000000..218be27f4 --- /dev/null +++ b/rosetta-runtime/src/main/java/com/rosetta/model/lib/annotations/RuneMetaType.java @@ -0,0 +1,11 @@ +package com.rosetta.model.lib.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +public @interface RuneMetaType { + +} diff --git a/rosetta-runtime/src/main/java/com/rosetta/model/lib/meta/Reference.java b/rosetta-runtime/src/main/java/com/rosetta/model/lib/meta/Reference.java index ea47aca4a..7de825ac6 100644 --- a/rosetta-runtime/src/main/java/com/rosetta/model/lib/meta/Reference.java +++ b/rosetta-runtime/src/main/java/com/rosetta/model/lib/meta/Reference.java @@ -20,6 +20,8 @@ import com.rosetta.model.lib.RosettaModelObjectBuilder; import com.rosetta.model.lib.annotations.RosettaAttribute; import com.rosetta.model.lib.annotations.RosettaDataType; +import com.rosetta.model.lib.annotations.RuneAttribute; +import com.rosetta.model.lib.annotations.RuneDataType; import com.rosetta.model.lib.path.RosettaPath; import com.rosetta.model.lib.process.BuilderMerger; import com.rosetta.model.lib.process.BuilderProcessor; @@ -40,6 +42,7 @@ * for inside that TradeableProduct */ @RosettaDataType(value = "Reference", builder = Reference.ReferenceBuilderImpl.class) +@RuneDataType(value = "Reference", builder = Reference.ReferenceBuilderImpl.class, version="0.0.0") public interface Reference extends RosettaModelObject { Reference build(); @@ -103,6 +106,7 @@ public String getPointsTo() { } @RosettaAttribute("value") + @RuneAttribute("@ref:scoped") public String getReference() { return reference; } @@ -175,6 +179,7 @@ public String getPointsTo() { } @RosettaAttribute("value") + @RuneAttribute("@ref:scoped") public String getReference() { return reference; } @@ -185,6 +190,7 @@ public Reference build() { } @RosettaAttribute("value") + @RuneAttribute("@ref:scoped") public ReferenceBuilder setReference(String reference) { this.reference = reference; return this; diff --git a/rosetta-runtime/src/main/java/com/rosetta/model/metafields/MetaAndTemplateFields.java b/rosetta-runtime/src/main/java/com/rosetta/model/metafields/MetaAndTemplateFields.java index 04a913745..4452ff888 100644 --- a/rosetta-runtime/src/main/java/com/rosetta/model/metafields/MetaAndTemplateFields.java +++ b/rosetta-runtime/src/main/java/com/rosetta/model/metafields/MetaAndTemplateFields.java @@ -1,19 +1,19 @@ package com.rosetta.model.metafields; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; import com.rosetta.model.lib.RosettaModelObject; import com.rosetta.model.lib.RosettaModelObjectBuilder; import com.rosetta.model.lib.annotations.RosettaAttribute; import com.rosetta.model.lib.annotations.RosettaDataType; +import com.rosetta.model.lib.annotations.RuneAttribute; +import com.rosetta.model.lib.annotations.RuneDataType; import com.rosetta.model.lib.meta.BasicRosettaMetaData; import com.rosetta.model.lib.meta.GlobalKeyFields; -import com.rosetta.model.lib.meta.GlobalKeyFields.GlobalKeyFieldsBuilder; import com.rosetta.model.lib.meta.Key; import com.rosetta.model.lib.meta.MetaDataFields; -import com.rosetta.model.lib.meta.MetaDataFields.MetaDataFieldsBuilder; import com.rosetta.model.lib.meta.RosettaMetaData; import com.rosetta.model.lib.meta.TemplateFields; -import com.rosetta.model.lib.meta.TemplateFields.TemplateFieldsBuilder; import com.rosetta.model.lib.path.RosettaPath; import com.rosetta.model.lib.process.AttributeMeta; import com.rosetta.model.lib.process.BuilderMerger; @@ -29,8 +29,11 @@ /** * @version 1 + * + * Note this class was made static as of DSL version 9.24.0 prior to that it was generated */ @RosettaDataType(value="MetaAndTemplateFields", builder=MetaAndTemplateFields.MetaAndTemplateFieldsBuilderImpl.class, version="0.0.0") +@RuneDataType(value="MetaAndTemplateFields", builder=MetaAndTemplateFields.MetaAndTemplateFieldsBuilderImpl.class, version="0.0.0") public interface MetaAndTemplateFields extends RosettaModelObject, GlobalKeyFields, TemplateFields, MetaDataFields { MetaAndTemplateFieldsMeta metaData = new MetaAndTemplateFieldsMeta(); @@ -44,6 +47,7 @@ public interface MetaAndTemplateFields extends RosettaModelObject, GlobalKeyFiel String getGlobalKey(); String getExternalKey(); List getKey(); + String getKeyScoped(); /*********************** Build Methods ***********************/ MetaAndTemplateFields build(); @@ -94,6 +98,7 @@ interface MetaAndTemplateFieldsBuilder extends MetaAndTemplateFields, RosettaMod MetaAndTemplateFields.MetaAndTemplateFieldsBuilder addKey(Key key1, int _idx); MetaAndTemplateFields.MetaAndTemplateFieldsBuilder addKey(List key2); MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setKey(List key3); + MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setKeyScoped(String keyScoped); @Override default void process(RosettaPath path, BuilderProcessor processor) { @@ -135,6 +140,7 @@ protected MetaAndTemplateFieldsImpl(MetaAndTemplateFields.MetaAndTemplateFieldsB @Override @RosettaAttribute("scheme") + @RuneAttribute("scheme") public String getScheme() { return scheme; } @@ -153,6 +159,7 @@ public String getLocation() { @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") public String getAddress() { return address; } @@ -165,12 +172,14 @@ public String getTemplateGlobalReference() { @Override @RosettaAttribute("globalKey") + @RuneAttribute("@key") public String getGlobalKey() { return globalKey; } @Override @RosettaAttribute("externalKey") + @RuneAttribute("@key:external") public String getExternalKey() { return externalKey; } @@ -181,6 +190,15 @@ public List getKey() { return key; } + @Override + @RuneAttribute("@key:scoped") + public String getKeyScoped() { + if (key == null || key.isEmpty()) { + return null; + } + return key.get(0).getKeyValue(); + } + @Override public MetaAndTemplateFields build() { return this; @@ -268,6 +286,7 @@ public MetaAndTemplateFieldsBuilderImpl() { @Override @RosettaAttribute("scheme") + @RuneAttribute("scheme") public String getScheme() { return scheme; } @@ -286,6 +305,7 @@ public String getLocation() { @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") public String getAddress() { return address; } @@ -298,12 +318,14 @@ public String getTemplateGlobalReference() { @Override @RosettaAttribute("globalKey") + @RuneAttribute("@key") public String getGlobalKey() { return globalKey; } @Override @RosettaAttribute("externalKey") + @RuneAttribute("@key:external") public String getExternalKey() { return externalKey; } @@ -326,8 +348,18 @@ public Key.KeyBuilder getOrCreateKey(int _index) { }); } + @Override + @RuneAttribute("@key:scoped") + public String getKeyScoped() { + if (key == null || key.isEmpty()) { + return null; + } + return key.get(0).getKeyValue(); + } + @Override @RosettaAttribute("scheme") + @RuneAttribute("scheme") public MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setScheme(String scheme) { this.scheme = scheme==null?null:scheme; return this; @@ -346,6 +378,7 @@ public MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setLocation(String loc } @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") public MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setAddress(String address) { this.address = address==null?null:address; return this; @@ -358,12 +391,14 @@ public MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setTemplateGlobalRefer } @Override @RosettaAttribute("globalKey") + @RuneAttribute("@key") public MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setGlobalKey(String globalKey) { this.globalKey = globalKey==null?null:globalKey; return this; } @Override @RosettaAttribute("externalKey") + @RuneAttribute("@key:external") public MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setExternalKey(String externalKey) { this.externalKey = externalKey==null?null:externalKey; return this; @@ -403,6 +438,16 @@ public MetaAndTemplateFields.MetaAndTemplateFieldsBuilder setKey(List(); + if (keyScoped!=null) { + this.key = Lists.newArrayList(Key.builder().setKeyValue(keyScoped)); + } + return this; + } + @Override public MetaAndTemplateFields build() { diff --git a/rosetta-runtime/src/main/java/com/rosetta/model/metafields/MetaFields.java b/rosetta-runtime/src/main/java/com/rosetta/model/metafields/MetaFields.java index 76b5f3b52..36b316879 100644 --- a/rosetta-runtime/src/main/java/com/rosetta/model/metafields/MetaFields.java +++ b/rosetta-runtime/src/main/java/com/rosetta/model/metafields/MetaFields.java @@ -1,16 +1,24 @@ package com.rosetta.model.metafields; +import static java.util.Optional.ofNullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; import com.rosetta.model.lib.RosettaModelObject; import com.rosetta.model.lib.RosettaModelObjectBuilder; import com.rosetta.model.lib.annotations.RosettaAttribute; import com.rosetta.model.lib.annotations.RosettaDataType; +import com.rosetta.model.lib.annotations.RuneAttribute; +import com.rosetta.model.lib.annotations.RuneDataType; import com.rosetta.model.lib.meta.BasicRosettaMetaData; import com.rosetta.model.lib.meta.GlobalKeyFields; -import com.rosetta.model.lib.meta.GlobalKeyFields.GlobalKeyFieldsBuilder; import com.rosetta.model.lib.meta.Key; import com.rosetta.model.lib.meta.MetaDataFields; -import com.rosetta.model.lib.meta.MetaDataFields.MetaDataFieldsBuilder; import com.rosetta.model.lib.meta.RosettaMetaData; import com.rosetta.model.lib.path.RosettaPath; import com.rosetta.model.lib.process.AttributeMeta; @@ -18,17 +26,14 @@ import com.rosetta.model.lib.process.BuilderProcessor; import com.rosetta.model.lib.process.Processor; import com.rosetta.util.ListEquals; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -import static java.util.Optional.ofNullable; /** * @version 1 + * + * Note this class was made static as of DSL version 9.24.0 prior to that it was generated */ @RosettaDataType(value="MetaFields", builder=MetaFields.MetaFieldsBuilderImpl.class, version="0.0.0") +@RuneDataType(value="MetaFields", builder=MetaFields.MetaFieldsBuilderImpl.class, version="0.0.0") public interface MetaFields extends RosettaModelObject, GlobalKeyFields, MetaDataFields { MetaFieldsMeta metaData = new MetaFieldsMeta(); @@ -41,7 +46,8 @@ public interface MetaFields extends RosettaModelObject, GlobalKeyFields, MetaDat String getGlobalKey(); String getExternalKey(); List getKey(); - + String getScopedKey(); + /*********************** Build Methods ***********************/ MetaFields build(); @@ -89,6 +95,8 @@ interface MetaFieldsBuilder extends MetaFields, RosettaModelObjectBuilder, Globa MetaFields.MetaFieldsBuilder addKey(Key key1, int _idx); MetaFields.MetaFieldsBuilder addKey(List key2); MetaFields.MetaFieldsBuilder setKey(List key3); + MetaFields.MetaFieldsBuilder setScopedKey(String scopedKey); + String getScopedKey(); @Override default void process(RosettaPath path, BuilderProcessor processor) { @@ -127,6 +135,7 @@ protected MetaFieldsImpl(MetaFields.MetaFieldsBuilder builder) { @Override @RosettaAttribute("scheme") + @RuneAttribute("@scheme") public String getScheme() { return scheme; } @@ -145,28 +154,41 @@ public String getLocation() { @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") public String getAddress() { return address; } @Override @RosettaAttribute("globalKey") + @RuneAttribute("@key") public String getGlobalKey() { return globalKey; } @Override @RosettaAttribute("externalKey") + @RuneAttribute("@key:external") public String getExternalKey() { return externalKey; } @Override @RosettaAttribute("location") + @Deprecated public List getKey() { return key; } + @Override + @RuneAttribute("@key:scoped") + public String getScopedKey() { + if (key == null || key.isEmpty()) { + return null; + } + return key.get(0).getKeyValue(); + } + @Override public MetaFields build() { return this; @@ -249,6 +271,7 @@ public MetaFieldsBuilderImpl() { @Override @RosettaAttribute("scheme") + @RuneAttribute("@scheme") public String getScheme() { return scheme; } @@ -267,28 +290,41 @@ public String getLocation() { @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") public String getAddress() { return address; } @Override @RosettaAttribute("globalKey") + @RuneAttribute("@key") public String getGlobalKey() { return globalKey; } @Override @RosettaAttribute("externalKey") + @RuneAttribute("@key:external") public String getExternalKey() { return externalKey; } @Override @RosettaAttribute("location") + @Deprecated public List getKey() { return key; } + @Override + @RuneAttribute("@key:scoped") + public String getScopedKey() { + if (key == null || key.isEmpty()) { + return null; + } + return key.get(0).getKeyValue(); + } + public Key.KeyBuilder getOrCreateKey(int _index) { if (key==null) { @@ -303,6 +339,7 @@ public Key.KeyBuilder getOrCreateKey(int _index) { @Override @RosettaAttribute("scheme") + @RuneAttribute("@scheme") public MetaFields.MetaFieldsBuilder setScheme(String scheme) { this.scheme = scheme==null?null:scheme; return this; @@ -321,18 +358,21 @@ public MetaFields.MetaFieldsBuilder setLocation(String location) { } @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") public MetaFields.MetaFieldsBuilder setAddress(String address) { this.address = address==null?null:address; return this; } @Override @RosettaAttribute("globalKey") + @RuneAttribute("@key") public MetaFields.MetaFieldsBuilder setGlobalKey(String globalKey) { this.globalKey = globalKey==null?null:globalKey; return this; } @Override @RosettaAttribute("externalKey") + @RuneAttribute("@key:external") public MetaFields.MetaFieldsBuilder setExternalKey(String externalKey) { this.externalKey = externalKey==null?null:externalKey; return this; @@ -360,6 +400,7 @@ public MetaFields.MetaFieldsBuilder addKey(List keys) { @Override @RosettaAttribute("location") + @Deprecated public MetaFields.MetaFieldsBuilder setKey(List keys) { if (keys == null) { this.key = new ArrayList<>(); @@ -372,6 +413,16 @@ public MetaFields.MetaFieldsBuilder setKey(List keys) { return this; } + @Override + @RuneAttribute("@key:scoped") + public MetaFields.MetaFieldsBuilder setScopedKey(String scopedKey) { + this.key = new ArrayList<>(); + if (scopedKey!=null) { + this.key = Lists.newArrayList(Key.builder().setKeyValue(scopedKey)); + } + return this; + } + @Override public MetaFields build() { diff --git a/rosetta-testing/src/test/java/com/regnosys/rosetta/generator/java/object/PojoInheritanceRegressionTest.xtend b/rosetta-testing/src/test/java/com/regnosys/rosetta/generator/java/object/PojoInheritanceRegressionTest.xtend index 3cee755c4..c3cd160f7 100644 --- a/rosetta-testing/src/test/java/com/regnosys/rosetta/generator/java/object/PojoInheritanceRegressionTest.xtend +++ b/rosetta-testing/src/test/java/com/regnosys/rosetta/generator/java/object/PojoInheritanceRegressionTest.xtend @@ -76,6 +76,8 @@ class PojoInheritanceRegressionTest { import com.rosetta.model.lib.RosettaModelObjectBuilder; import com.rosetta.model.lib.annotations.RosettaAttribute; import com.rosetta.model.lib.annotations.RosettaDataType; + import com.rosetta.model.lib.annotations.RuneAttribute; + import com.rosetta.model.lib.annotations.RuneDataType; import com.rosetta.model.lib.mapper.MapperC; import com.rosetta.model.lib.meta.RosettaMetaData; import com.rosetta.model.lib.path.RosettaPath; @@ -109,6 +111,7 @@ class PojoInheritanceRegressionTest { * @version test */ @RosettaDataType(value="Foo2", builder=Foo2.Foo2BuilderImpl.class, version="test") + @RuneDataType(value="Foo2", model="My test model", builder=Foo2.Foo2BuilderImpl.class, version="test") public interface Foo2 extends Foo1 { Foo2Meta metaData = new Foo2Meta(); @@ -135,6 +138,7 @@ class PojoInheritanceRegressionTest { } @Override + @RuneAttribute("@type") default Class getType() { return Foo2.class; } @@ -211,12 +215,14 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("attr") + @RuneAttribute("attr") public Integer getAttr() { return attr; } @Override @RosettaAttribute("numberAttr") + @RuneAttribute("numberAttr") public BigInteger getNumberAttrOverriddenAsBigInteger() { return numberAttr; } @@ -228,12 +234,14 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parent") + @RuneAttribute("parent") public Child getParent() { return parent; } @Override @RosettaAttribute("parentList") + @RuneAttribute("parentList") public ReferenceWithMetaChild getParentListOverriddenAsSingleReferenceWithMetaChild() { return parentList; } @@ -245,6 +253,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("stringAttr") + @RuneAttribute("stringAttr") public FieldWithMetaString getStringAttr() { return stringAttr; } @@ -318,12 +327,14 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("attr") + @RuneAttribute("attr") public Integer getAttr() { return attr; } @Override @RosettaAttribute("numberAttr") + @RuneAttribute("numberAttr") public BigInteger getNumberAttrOverriddenAsBigInteger() { return numberAttr; } @@ -335,6 +346,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parent") + @RuneAttribute("parent") public Child.ChildBuilder getParent() { return parent; } @@ -354,6 +366,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parentList") + @RuneAttribute("parentList") public ReferenceWithMetaChild.ReferenceWithMetaChildBuilder getParentListOverriddenAsSingleReferenceWithMetaChild() { return parentList; } @@ -384,6 +397,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("stringAttr") + @RuneAttribute("stringAttr") public FieldWithMetaString.FieldWithMetaStringBuilder getStringAttr() { return stringAttr; } @@ -403,6 +417,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("attr") + @RuneAttribute("attr") public Foo2.Foo2Builder setAttr(Integer _attr) { this.attr = _attr == null ? null : _attr; return this; @@ -410,6 +425,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("numberAttr") + @RuneAttribute("numberAttr") public Foo2.Foo2Builder setNumberAttr(BigInteger _numberAttr) { this.numberAttr = _numberAttr == null ? null : _numberAttr; return this; @@ -428,6 +444,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parent") + @RuneAttribute("parent") public Foo2.Foo2Builder setParent(Child _parent) { this.parent = _parent == null ? null : _parent.toBuilder(); return this; @@ -446,6 +463,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parentList") + @RuneAttribute("parentList") public Foo2.Foo2Builder setParentList(ReferenceWithMetaChild _parentList) { this.parentList = _parentList == null ? null : _parentList.toBuilder(); return this; @@ -505,6 +523,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("stringAttr") + @RuneAttribute("stringAttr") public Foo2.Foo2Builder setStringAttr(FieldWithMetaString _stringAttr) { this.stringAttr = _stringAttr == null ? null : _stringAttr.toBuilder(); return this; @@ -727,6 +746,8 @@ class PojoInheritanceRegressionTest { import com.rosetta.model.lib.RosettaModelObjectBuilder; import com.rosetta.model.lib.annotations.RosettaAttribute; import com.rosetta.model.lib.annotations.RosettaDataType; + import com.rosetta.model.lib.annotations.RuneAttribute; + import com.rosetta.model.lib.annotations.RuneDataType; import com.rosetta.model.lib.mapper.MapperC; import com.rosetta.model.lib.meta.RosettaMetaData; import com.rosetta.model.lib.path.RosettaPath; @@ -763,6 +784,7 @@ class PojoInheritanceRegressionTest { * @version test */ @RosettaDataType(value="Foo3", builder=Foo3.Foo3BuilderImpl.class, version="test") + @RuneDataType(value="Foo3", model="My test model", builder=Foo3.Foo3BuilderImpl.class, version="test") public interface Foo3 extends Foo2 { Foo3Meta metaData = new Foo3Meta(); @@ -787,6 +809,7 @@ class PojoInheritanceRegressionTest { } @Override + @RuneAttribute("@type") default Class getType() { return Foo3.class; } @@ -867,12 +890,14 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("attr") + @RuneAttribute("attr") public Integer getAttr() { return attr; } @Override @RosettaAttribute("numberAttr") + @RuneAttribute("numberAttr") public Integer getNumberAttrOverriddenAsInteger() { return numberAttr; } @@ -889,12 +914,14 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parent") + @RuneAttribute("parent") public Child getParent() { return parent; } @Override @RosettaAttribute("parentList") + @RuneAttribute("parentList") public ReferenceWithMetaGrandChild getParentListOverriddenAsReferenceWithMetaGrandChild() { return parentList; } @@ -915,6 +942,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("stringAttr") + @RuneAttribute("stringAttr") public FieldWithMetaString getStringAttr() { return stringAttr; } @@ -988,12 +1016,14 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("attr") + @RuneAttribute("attr") public Integer getAttr() { return attr; } @Override @RosettaAttribute("numberAttr") + @RuneAttribute("numberAttr") public Integer getNumberAttrOverriddenAsInteger() { return numberAttr; } @@ -1010,6 +1040,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parent") + @RuneAttribute("parent") public Child.ChildBuilder getParent() { return parent; } @@ -1029,6 +1060,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parentList") + @RuneAttribute("parentList") public ReferenceWithMetaGrandChild.ReferenceWithMetaGrandChildBuilder getParentListOverriddenAsReferenceWithMetaGrandChild() { return parentList; } @@ -1078,6 +1110,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("stringAttr") + @RuneAttribute("stringAttr") public FieldWithMetaString.FieldWithMetaStringBuilder getStringAttr() { return stringAttr; } @@ -1097,6 +1130,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("attr") + @RuneAttribute("attr") public Foo3.Foo3Builder setAttr(Integer _attr) { this.attr = _attr == null ? null : _attr; return this; @@ -1104,6 +1138,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("numberAttr") + @RuneAttribute("numberAttr") public Foo3.Foo3Builder setNumberAttr(Integer _numberAttr) { this.numberAttr = _numberAttr == null ? null : _numberAttr; return this; @@ -1133,6 +1168,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parent") + @RuneAttribute("parent") public Foo3.Foo3Builder setParent(Child _parent) { this.parent = _parent == null ? null : _parent.toBuilder(); return this; @@ -1151,6 +1187,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("parentList") + @RuneAttribute("parentList") public Foo3.Foo3Builder setParentList(ReferenceWithMetaGrandChild _parentList) { this.parentList = _parentList == null ? null : _parentList.toBuilder(); return this; @@ -1237,6 +1274,7 @@ class PojoInheritanceRegressionTest { @Override @RosettaAttribute("stringAttr") + @RuneAttribute("stringAttr") public Foo3.Foo3Builder setStringAttr(FieldWithMetaString _stringAttr) { this.stringAttr = _stringAttr == null ? null : _stringAttr.toBuilder(); return this; diff --git a/rosetta-testing/src/test/java/com/regnosys/rosetta/generator/java/object/PojoRegressionTest.xtend b/rosetta-testing/src/test/java/com/regnosys/rosetta/generator/java/object/PojoRegressionTest.xtend index 35f59e2a8..dd588abd5 100644 --- a/rosetta-testing/src/test/java/com/regnosys/rosetta/generator/java/object/PojoRegressionTest.xtend +++ b/rosetta-testing/src/test/java/com/regnosys/rosetta/generator/java/object/PojoRegressionTest.xtend @@ -79,6 +79,9 @@ class PojoRegressionTest { import com.rosetta.model.lib.RosettaModelObjectBuilder; import com.rosetta.model.lib.annotations.RosettaAttribute; import com.rosetta.model.lib.annotations.RosettaDataType; + import com.rosetta.model.lib.annotations.RuneAttribute; + import com.rosetta.model.lib.annotations.RuneDataType; + import com.rosetta.model.lib.annotations.RuneMetaType; import com.rosetta.model.lib.meta.RosettaMetaData; import com.rosetta.model.lib.path.RosettaPath; import com.rosetta.model.lib.process.AttributeMeta; @@ -111,6 +114,7 @@ class PojoRegressionTest { * @version test */ @RosettaDataType(value="Pojo", builder=Pojo.PojoBuilderImpl.class, version="test") + @RuneDataType(value="Pojo", model="My test model", builder=Pojo.PojoBuilderImpl.class, version="test") public interface Pojo extends RosettaModelObject, GlobalKey { PojoMeta metaData = new PojoMeta(); @@ -144,6 +148,7 @@ class PojoRegressionTest { } @Override + @RuneAttribute("@type") default Class getType() { return Pojo.class; } @@ -284,66 +289,78 @@ class PojoRegressionTest { @Override @RosettaAttribute("simpleAttr") + @RuneAttribute("simpleAttr") public String getSimpleAttr() { return simpleAttr; } @Override @RosettaAttribute("multiSimpleAttr") + @RuneAttribute("multiSimpleAttr") public List getMultiSimpleAttr() { return multiSimpleAttr; } @Override @RosettaAttribute("simpleAttrWithMeta") + @RuneAttribute("simpleAttrWithMeta") public FieldWithMetaString getSimpleAttrWithMeta() { return simpleAttrWithMeta; } @Override @RosettaAttribute("multiSimpleAttrWithMeta") + @RuneAttribute("multiSimpleAttrWithMeta") public List getMultiSimpleAttrWithMeta() { return multiSimpleAttrWithMeta; } @Override @RosettaAttribute("simpleAttrWithId") + @RuneAttribute("simpleAttrWithId") public FieldWithMetaString getSimpleAttrWithId() { return simpleAttrWithId; } @Override @RosettaAttribute("multiSimpleAttrWithId") + @RuneAttribute("multiSimpleAttrWithId") public List getMultiSimpleAttrWithId() { return multiSimpleAttrWithId; } @Override @RosettaAttribute("complexAttr") + @RuneAttribute("complexAttr") public Foo getComplexAttr() { return complexAttr; } @Override @RosettaAttribute("multiComplexAttr") + @RuneAttribute("multiComplexAttr") public List getMultiComplexAttr() { return multiComplexAttr; } @Override @RosettaAttribute("complexAttrWithRef") + @RuneAttribute("complexAttrWithRef") public ReferenceWithMetaFoo getComplexAttrWithRef() { return complexAttrWithRef; } @Override @RosettaAttribute("multiComplexAttrWithRef") + @RuneAttribute("multiComplexAttrWithRef") public List getMultiComplexAttrWithRef() { return multiComplexAttrWithRef; } @Override @RosettaAttribute("meta") + @RuneAttribute("meta") + @RuneMetaType public MetaFields getMeta() { return meta; } @@ -447,18 +464,21 @@ class PojoRegressionTest { @Override @RosettaAttribute("simpleAttr") + @RuneAttribute("simpleAttr") public String getSimpleAttr() { return simpleAttr; } @Override @RosettaAttribute("multiSimpleAttr") + @RuneAttribute("multiSimpleAttr") public List getMultiSimpleAttr() { return multiSimpleAttr; } @Override @RosettaAttribute("simpleAttrWithMeta") + @RuneAttribute("simpleAttrWithMeta") public FieldWithMetaString.FieldWithMetaStringBuilder getSimpleAttrWithMeta() { return simpleAttrWithMeta; } @@ -478,6 +498,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiSimpleAttrWithMeta") + @RuneAttribute("multiSimpleAttrWithMeta") public List getMultiSimpleAttrWithMeta() { return multiSimpleAttrWithMeta; } @@ -497,6 +518,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("simpleAttrWithId") + @RuneAttribute("simpleAttrWithId") public FieldWithMetaString.FieldWithMetaStringBuilder getSimpleAttrWithId() { return simpleAttrWithId; } @@ -516,6 +538,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiSimpleAttrWithId") + @RuneAttribute("multiSimpleAttrWithId") public List getMultiSimpleAttrWithId() { return multiSimpleAttrWithId; } @@ -535,6 +558,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("complexAttr") + @RuneAttribute("complexAttr") public Foo.FooBuilder getComplexAttr() { return complexAttr; } @@ -554,6 +578,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiComplexAttr") + @RuneAttribute("multiComplexAttr") public List getMultiComplexAttr() { return multiComplexAttr; } @@ -573,6 +598,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("complexAttrWithRef") + @RuneAttribute("complexAttrWithRef") public ReferenceWithMetaFoo.ReferenceWithMetaFooBuilder getComplexAttrWithRef() { return complexAttrWithRef; } @@ -592,6 +618,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiComplexAttrWithRef") + @RuneAttribute("multiComplexAttrWithRef") public List getMultiComplexAttrWithRef() { return multiComplexAttrWithRef; } @@ -611,6 +638,8 @@ class PojoRegressionTest { @Override @RosettaAttribute("meta") + @RuneAttribute("meta") + @RuneMetaType public MetaFields.MetaFieldsBuilder getMeta() { return meta; } @@ -630,6 +659,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("simpleAttr") + @RuneAttribute("simpleAttr") public Pojo.PojoBuilder setSimpleAttr(String _simpleAttr) { this.simpleAttr = _simpleAttr == null ? null : _simpleAttr; return this; @@ -637,6 +667,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiSimpleAttr") + @RuneAttribute("multiSimpleAttr") public Pojo.PojoBuilder addMultiSimpleAttr(String _multiSimpleAttr) { if (_multiSimpleAttr != null) { this.multiSimpleAttr.add(_multiSimpleAttr); @@ -661,6 +692,7 @@ class PojoRegressionTest { } @Override + @RuneAttribute("multiSimpleAttr") public Pojo.PojoBuilder setMultiSimpleAttr(List multiSimpleAttrs) { if (multiSimpleAttrs == null) { this.multiSimpleAttr = new ArrayList<>(); @@ -673,6 +705,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("simpleAttrWithMeta") + @RuneAttribute("simpleAttrWithMeta") public Pojo.PojoBuilder setSimpleAttrWithMeta(FieldWithMetaString _simpleAttrWithMeta) { this.simpleAttrWithMeta = _simpleAttrWithMeta == null ? null : _simpleAttrWithMeta.toBuilder(); return this; @@ -686,6 +719,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiSimpleAttrWithMeta") + @RuneAttribute("multiSimpleAttrWithMeta") public Pojo.PojoBuilder addMultiSimpleAttrWithMeta(FieldWithMetaString _multiSimpleAttrWithMeta) { if (_multiSimpleAttrWithMeta != null) { this.multiSimpleAttrWithMeta.add(_multiSimpleAttrWithMeta.toBuilder()); @@ -722,6 +756,7 @@ class PojoRegressionTest { } @Override + @RuneAttribute("multiSimpleAttrWithMeta") public Pojo.PojoBuilder setMultiSimpleAttrWithMeta(List multiSimpleAttrWithMetas) { if (multiSimpleAttrWithMetas == null) { this.multiSimpleAttrWithMeta = new ArrayList<>(); @@ -754,6 +789,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("simpleAttrWithId") + @RuneAttribute("simpleAttrWithId") public Pojo.PojoBuilder setSimpleAttrWithId(FieldWithMetaString _simpleAttrWithId) { this.simpleAttrWithId = _simpleAttrWithId == null ? null : _simpleAttrWithId.toBuilder(); return this; @@ -767,6 +803,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiSimpleAttrWithId") + @RuneAttribute("multiSimpleAttrWithId") public Pojo.PojoBuilder addMultiSimpleAttrWithId(FieldWithMetaString _multiSimpleAttrWithId) { if (_multiSimpleAttrWithId != null) { this.multiSimpleAttrWithId.add(_multiSimpleAttrWithId.toBuilder()); @@ -803,6 +840,7 @@ class PojoRegressionTest { } @Override + @RuneAttribute("multiSimpleAttrWithId") public Pojo.PojoBuilder setMultiSimpleAttrWithId(List multiSimpleAttrWithIds) { if (multiSimpleAttrWithIds == null) { this.multiSimpleAttrWithId = new ArrayList<>(); @@ -835,6 +873,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("complexAttr") + @RuneAttribute("complexAttr") public Pojo.PojoBuilder setComplexAttr(Foo _complexAttr) { this.complexAttr = _complexAttr == null ? null : _complexAttr.toBuilder(); return this; @@ -842,6 +881,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiComplexAttr") + @RuneAttribute("multiComplexAttr") public Pojo.PojoBuilder addMultiComplexAttr(Foo _multiComplexAttr) { if (_multiComplexAttr != null) { this.multiComplexAttr.add(_multiComplexAttr.toBuilder()); @@ -866,6 +906,7 @@ class PojoRegressionTest { } @Override + @RuneAttribute("multiComplexAttr") public Pojo.PojoBuilder setMultiComplexAttr(List multiComplexAttrs) { if (multiComplexAttrs == null) { this.multiComplexAttr = new ArrayList<>(); @@ -879,6 +920,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("complexAttrWithRef") + @RuneAttribute("complexAttrWithRef") public Pojo.PojoBuilder setComplexAttrWithRef(ReferenceWithMetaFoo _complexAttrWithRef) { this.complexAttrWithRef = _complexAttrWithRef == null ? null : _complexAttrWithRef.toBuilder(); return this; @@ -892,6 +934,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("multiComplexAttrWithRef") + @RuneAttribute("multiComplexAttrWithRef") public Pojo.PojoBuilder addMultiComplexAttrWithRef(ReferenceWithMetaFoo _multiComplexAttrWithRef) { if (_multiComplexAttrWithRef != null) { this.multiComplexAttrWithRef.add(_multiComplexAttrWithRef.toBuilder()); @@ -928,6 +971,7 @@ class PojoRegressionTest { } @Override + @RuneAttribute("multiComplexAttrWithRef") public Pojo.PojoBuilder setMultiComplexAttrWithRef(List multiComplexAttrWithRefs) { if (multiComplexAttrWithRefs == null) { this.multiComplexAttrWithRef = new ArrayList<>(); @@ -960,6 +1004,8 @@ class PojoRegressionTest { @Override @RosettaAttribute("meta") + @RuneAttribute("meta") + @RuneMetaType public Pojo.PojoBuilder setMeta(MetaFields _meta) { this.meta = _meta == null ? null : _meta.toBuilder(); return this; @@ -1282,6 +1328,9 @@ class PojoRegressionTest { import com.rosetta.model.lib.RosettaModelObjectBuilder; import com.rosetta.model.lib.annotations.RosettaAttribute; import com.rosetta.model.lib.annotations.RosettaDataType; + import com.rosetta.model.lib.annotations.RuneAttribute; + import com.rosetta.model.lib.annotations.RuneDataType; + import com.rosetta.model.lib.annotations.RuneMetaType; import com.rosetta.model.lib.meta.BasicRosettaMetaData; import com.rosetta.model.lib.meta.FieldWithMeta; import com.rosetta.model.lib.meta.FieldWithMeta.FieldWithMetaBuilder; @@ -1298,6 +1347,7 @@ class PojoRegressionTest { * @version 1 */ @RosettaDataType(value="FieldWithMetaString", builder=FieldWithMetaString.FieldWithMetaStringBuilderImpl.class, version="0.0.0") + @RuneDataType(value="FieldWithMetaString", model="My test model", builder=FieldWithMetaString.FieldWithMetaStringBuilderImpl.class, version="0.0.0") public interface FieldWithMetaString extends RosettaModelObject, FieldWithMeta, GlobalKey { FieldWithMetaStringMeta metaData = new FieldWithMetaStringMeta(); @@ -1322,6 +1372,7 @@ class PojoRegressionTest { } @Override + @RuneAttribute("@type") default Class getType() { return FieldWithMetaString.class; } @@ -1368,12 +1419,15 @@ class PojoRegressionTest { @Override @RosettaAttribute("value") + @RuneAttribute("@data") public String getValue() { return value; } @Override @RosettaAttribute("meta") + @RuneAttribute("meta") + @RuneMetaType public MetaFields getMeta() { return meta; } @@ -1432,12 +1486,15 @@ class PojoRegressionTest { @Override @RosettaAttribute("value") + @RuneAttribute("@data") public String getValue() { return value; } @Override @RosettaAttribute("meta") + @RuneAttribute("meta") + @RuneMetaType public MetaFields.MetaFieldsBuilder getMeta() { return meta; } @@ -1457,6 +1514,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("value") + @RuneAttribute("@data") public FieldWithMetaString.FieldWithMetaStringBuilder setValue(String _value) { this.value = _value == null ? null : _value; return this; @@ -1464,6 +1522,8 @@ class PojoRegressionTest { @Override @RosettaAttribute("meta") + @RuneAttribute("meta") + @RuneMetaType public FieldWithMetaString.FieldWithMetaStringBuilder setMeta(MetaFields _meta) { this.meta = _meta == null ? null : _meta.toBuilder(); return this; @@ -1548,6 +1608,9 @@ class PojoRegressionTest { import com.rosetta.model.lib.RosettaModelObjectBuilder; import com.rosetta.model.lib.annotations.RosettaAttribute; import com.rosetta.model.lib.annotations.RosettaDataType; + import com.rosetta.model.lib.annotations.RuneAttribute; + import com.rosetta.model.lib.annotations.RuneDataType; + import com.rosetta.model.lib.annotations.RuneMetaType; import com.rosetta.model.lib.meta.BasicRosettaMetaData; import com.rosetta.model.lib.meta.Reference; import com.rosetta.model.lib.meta.Reference.ReferenceBuilder; @@ -1569,6 +1632,7 @@ class PojoRegressionTest { * @version 1 */ @RosettaDataType(value="ReferenceWithMetaFoo", builder=ReferenceWithMetaFoo.ReferenceWithMetaFooBuilderImpl.class, version="0.0.0") + @RuneDataType(value="ReferenceWithMetaFoo", model="My test model", builder=ReferenceWithMetaFoo.ReferenceWithMetaFooBuilderImpl.class, version="0.0.0") public interface ReferenceWithMetaFoo extends RosettaModelObject, ReferenceWithMeta { ReferenceWithMetaFooMeta metaData = new ReferenceWithMetaFooMeta(); @@ -1595,6 +1659,7 @@ class PojoRegressionTest { } @Override + @RuneAttribute("@type") default Class getType() { return ReferenceWithMetaFoo.class; } @@ -1654,24 +1719,30 @@ class PojoRegressionTest { @Override @RosettaAttribute("value") + @RuneAttribute("@data") + @RuneMetaType public Foo getValue() { return value; } @Override @RosettaAttribute("globalReference") + @RuneAttribute("@ref") public String getGlobalReference() { return globalReference; } @Override @RosettaAttribute("externalReference") + @RuneAttribute("@ref:external") public String getExternalReference() { return externalReference; } @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") + @RuneMetaType public Reference getReference() { return reference; } @@ -1740,6 +1811,8 @@ class PojoRegressionTest { @Override @RosettaAttribute("value") + @RuneAttribute("@data") + @RuneMetaType public Foo.FooBuilder getValue() { return value; } @@ -1759,18 +1832,22 @@ class PojoRegressionTest { @Override @RosettaAttribute("globalReference") + @RuneAttribute("@ref") public String getGlobalReference() { return globalReference; } @Override @RosettaAttribute("externalReference") + @RuneAttribute("@ref:external") public String getExternalReference() { return externalReference; } @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") + @RuneMetaType public Reference.ReferenceBuilder getReference() { return reference; } @@ -1790,6 +1867,8 @@ class PojoRegressionTest { @Override @RosettaAttribute("value") + @RuneAttribute("@data") + @RuneMetaType public ReferenceWithMetaFoo.ReferenceWithMetaFooBuilder setValue(Foo _value) { this.value = _value == null ? null : _value.toBuilder(); return this; @@ -1797,6 +1876,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("globalReference") + @RuneAttribute("@ref") public ReferenceWithMetaFoo.ReferenceWithMetaFooBuilder setGlobalReference(String _globalReference) { this.globalReference = _globalReference == null ? null : _globalReference; return this; @@ -1804,6 +1884,7 @@ class PojoRegressionTest { @Override @RosettaAttribute("externalReference") + @RuneAttribute("@ref:external") public ReferenceWithMetaFoo.ReferenceWithMetaFooBuilder setExternalReference(String _externalReference) { this.externalReference = _externalReference == null ? null : _externalReference; return this; @@ -1811,6 +1892,8 @@ class PojoRegressionTest { @Override @RosettaAttribute("address") + @RuneAttribute("@ref:scoped") + @RuneMetaType public ReferenceWithMetaFoo.ReferenceWithMetaFooBuilder setReference(Reference _reference) { this.reference = _reference == null ? null : _reference.toBuilder(); return this;