All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
java.Attribute.xpt Maven / Gradle / Ivy
«IMPORT uml»
«IMPORT JMM»
«IMPORT jeaf»
«EXTENSION java::GeneratorCommons»
«EXTENSION java::Naming»
«EXTENSION entity::ModelProperties»
«EXTENSION functions::Internal»
«EXTENSION functions::SoftLink»
«EXTENSION functions::AddToJSON»
«EXTENSION functions::JEAFDeprecated»
// this properties should be processed
// for now all properties should be processed
«DEFINE PropertyDeclaration FOR Property»
«IF this.generateBackwardCompatibility() == false»
«EXPAND jeafgenerator::api::ClassExtensionHook::BeforeClassPropertyDeclaration(this.type.fqn())»
«IF this.isSoftLink()»
«EXPAND SoftLinkPropertyDeclaration FOR (SoftLink) this»
«ELSEIF this.association == null»
«EXPAND DoPropertyDeclaration»
«ELSE»
«EXPAND DoAssociationPropertyDeclaration»
«ENDIF»
«EXPAND jeafgenerator::api::ClassExtensionHook::AfterClassPropertyDeclaration(this.type.fqn())»
«ENDIF»
«ENDDEFINE»
«DEFINE PropertyAccessors FOR Property»
«IF this.isSoftLink()»
«EXPAND SoftLinkAccessors FOR (SoftLink) this»
«ELSEIF this.isCollectionType() || association != null»
«EXPAND DoAssociationAccessors»
«ELSE»
«IF !isStatic»
«EXPAND Getter»
«IF isReadOnly() == false»
«EXPAND Setter»
«ENDIF»
«ENDIF»
«ENDIF»
«EXPAND jeafgenerator::api::ClassExtensionHook::AfterClassPropertyAccessors(this.type.fqn())»
«ENDDEFINE»
// processing the properties
«DEFINE DoPropertyDeclaration FOR Property»
«EXPAND functions::Javadoc::JavadocForProperty»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«EXPAND RESTParamAnnotation»
«EXPAND java::Jackson::JSONAlias»
«EXPAND Validation::ValidationAnnotation»
«IF generateValidationAnnotationsForAttributesFromMultiplicity() && isStatic == false && isTransient() == false && isMultivalued() == true && isStereotypeApplied("Size") == false && lower > 0»@«getEnterpriseJavaPackage()».validation.constraints.Size(min = «lower»)«ENDIF»
«IF generateValidationAnnotationsForAttributesFromMultiplicity() && isStatic == false && isTransient() == false && isMultivalued() == false && type.isPrimitiveType() == false && this.requiresNotNullAnnotation() && lower > 0»@«getEnterpriseJavaPackage()».validation.constraints.NotNull«ENDIF»
«visibility» «IF isStatic» static «ENDIF» «IF isReadOnly() && belongsToTransientBidirectionalBackReference() == false»final «ENDIF» «IF isTransient()»transient «ENDIF» «this.fqn()» «name»«IF this.isRealInitValue() && this.isMultivalued()== false && this.isStatic == true» = «this.initValue()»«ENDIF»;
«ENDDEFINE»
// processing the properties
«DEFINE SoftLinkPropertyDeclaration FOR SoftLink»
«EXPAND functions::Javadoc::JavadocForProperty»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«EXPAND RESTParamAnnotation»
«EXPAND java::Jackson::JSONAlias»
«EXPAND Validation::ValidationAnnotation»
«IF isMultivalued()»
«IF generateJacksonAnnotations() && isTransient() == false»
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SKIP)
«ENDIF»
«IF generateValidationAnnotationsForAssociationsFromMultiplicity() && isStatic == false && isTransient() == false && isStereotypeApplied("Size") == false && lower > 0»@«getEnterpriseJavaPackage()».validation.constraints.Size(min = «lower»)«ENDIF»
«IF generateValidationAnnotationsForAssociationsFromMultiplicity() && isStatic == false && isTransient() == false && this.requiresNotNullAnnotation() && lower > 0»@«getEnterpriseJavaPackage()».validation.constraints.NotNull«ENDIF»
«visibility» «IF isReadOnly()»final «ENDIF» «IF isTransient()»transient «ENDIF» «this.getCollectionType()»<«this.getMultivaluedJavaSoftLinkType()»> «this.getSoftLinkPropertyName()»;
«ELSE»
«IF generateValidationAnnotationsForAssociationsFromMultiplicity() && isStatic == false && isTransient() == false && this.requiresNotNullAnnotation() && lower > 0»@«getEnterpriseJavaPackage()».validation.constraints.NotNull«ENDIF»
«visibility» «IF isReadOnly()»final «ENDIF» «IF isTransient()»transient «ENDIF» «this.getJavaSoftLinkType()» «this.getSoftLinkPropertyName()»;
«ENDIF»
«ENDDEFINE»
«DEFINE SoftLinkAccessors FOR SoftLink»
«IF isNavigable()»
«IF isMultivalued()»
«EXPAND SoftLinkToManyAccessorMethods»
«ELSE»
«EXPAND SoftLinkToOneAccessorMethods»
«ENDIF»
«ENDIF»
«ENDDEFINE»
// processing the association properties
«DEFINE DoAssociationPropertyDeclaration FOR Property»
«EXPAND functions::Javadoc::JavadocForProperty»
«IF isNavigable()»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«EXPAND RESTParamAnnotation»
«EXPAND java::Jackson::JSONAlias»
«EXPAND Validation::ValidationAnnotation»
«IF isMultivalued()»
«IF generateJacksonAnnotations() && isTransient() == false»
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SKIP)
«ENDIF»
«IF generateValidationAnnotationsForAssociationsFromMultiplicity() && isStatic == false && isTransient() == false && isStereotypeApplied("Size") == false && lower > 0»@«getEnterpriseJavaPackage()».validation.constraints.Size(min = «lower»)«ENDIF»
«IF generateValidationAnnotationsForAssociationsFromMultiplicity() && isStatic == false && isTransient() == false && this.requiresNotNullAnnotation() && lower > 0»@«getEnterpriseJavaPackage()».validation.constraints.NotNull«ENDIF»
«visibility» «IF isReadOnly()»final «ENDIF» «IF isTransient()»transient «ENDIF» «this.fqn()» «asInstanceVar()»;
«ELSE»
«IF generateValidationAnnotationsForAssociationsFromMultiplicity() && isStatic == false && isTransient() == false && this.requiresNotNullAnnotation() && lower > 0»@«getEnterpriseJavaPackage()».validation.constraints.NotNull«ENDIF»
«visibility» «IF isReadOnly() && belongsToTransientBidirectionalBackReference() == false»final «ENDIF» «IF isTransient()»transient «ENDIF» «type.fqn()» «asInstanceVar()»;
«ENDIF»
«REM» Special handling for bi-directional associations with one transient association end«ENDREM»
«IF this.isTransientBidirectionalBackReference()»
/**
* Attribute is required for correct handling of bidirectional associations in case of deserialization.
*/
private transient boolean «asInstanceVar()»BackReferenceInitialized;
«ENDIF»
«ENDIF»
«ENDDEFINE»
«DEFINE DoAssociationAccessors FOR Property»
«IF isNavigable()»
«IF isMultivalued()»
«EXPAND ToManyAccessorMethods»
«ELSE»
«EXPAND ToOneAccessorMethods»
«ENDIF»
«ENDIF»
«ENDDEFINE»
// TODO Get and set method should be final for service objects.
«DEFINE Getter FOR Property»
«EXPAND functions::Javadoc::JavadocForPropertyGetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isDeprecated() == false && type.isPrimitiveType() && type.isBooleanType() && this.isMultivalued() == false-»
@Deprecated
«ENDIF-»
«IF this.isInternalProperty() == false»public«ENDIF» «this.fqn()» «asGetter()»() {
«IF this.generateBackwardCompatibility() == false»
«IF this.isMultivalued() == false»return «asInstanceVar()»;
«ELSE»
«this.fqn()» lReturnValue;
if(«asInstanceVar()» != null) {
«IF this.isBinaryType()»
«IF disableBinaryDataImmutability()»
lReturnValue = «asInstanceVar()»;
«ELSE»
lReturnValue = new «type.fqn()»[«asInstanceVar()».length];
System.arraycopy(«asInstanceVar()», 0, lReturnValue, 0, «asInstanceVar()».length);
«ENDIF»
«ELSE»
«IF disableArrayImmutability()»
lReturnValue = «asInstanceVar()»;
«ELSE»
lReturnValue = new «type.fqn()»[«asInstanceVar()».length];
System.arraycopy(«asInstanceVar()», 0, lReturnValue, 0, «asInstanceVar()».length);
«ENDIF»
«ENDIF»
}
else {
lReturnValue = null;
}
return lReturnValue;
«ENDIF»
«ELSE»
«EXPAND java::Helper::CallGetterForSuccessor»
«ENDIF»
}
«IF type.isPrimitiveType() && type.isBooleanType() && this.isMultivalued() == false»
«EXPAND functions::Javadoc::JavadocForPropertyGetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false»public«ENDIF» boolean is«name.toFirstUpper()»() {
«IF this.generateBackwardCompatibility() == false»
return «name»;
«ELSE»
«EXPAND java::Helper::CallGetterForSuccessor»
«ENDIF»
}
«ENDIF»
«ENDDEFINE»
«DEFINE AbstractGetterForDerivedProperty FOR Property»
«EXPAND functions::Javadoc::JavadocForPropertyGetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF generateJacksonAnnotations() && this.isAddToJSON()»@com.fasterxml.jackson.annotation.JsonGetter«ENDIF»
«IF this.isInternalProperty() == false»public«ENDIF» abstract «IF this.association == null»«this.fqn()»«ELSE»«this.fqn()»«ENDIF» «asGetter()»();
«IF generateJacksonAnnotations() && this.isAddToJSON() && this.isMultivalued()»
@com.fasterxml.jackson.annotation.JsonSetter
private void set«name.toFirstUpper()»(«this.fqn()» «asParameter()») {
// Actively ignore passed objects as this is just a derived property. Unfortunately there is no more elegant variant to not run into problems during deserialization.
}
«ENDIF»
«ENDDEFINE»
«DEFINE EmptyGetterImplForDerivedProperty FOR Property»
«EXPAND functions::Javadoc::JavadocForPropertyGetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF generateJacksonAnnotations() && this.isAddToJSON()»@com.fasterxml.jackson.annotation.JsonGetter«ENDIF»
@Override
«IF this.isInternalProperty() == false»public«ENDIF» «IF this.association == null»«this.fqn()»«ELSE»«this.fqn()»«ENDIF» «asGetter()»() {
// TODO Implement method for derived property "«this.name»".
«IF this.type.isPrimitiveType() && this.isMultivalued() == false»
«IF this.fqn() != "boolean"» return 0; «ELSE» return false;«ENDIF»
«ELSE»
return null;
«ENDIF»
}
«ENDDEFINE»
«DEFINE Setter FOR Property»
«EXPAND functions::Javadoc::JavadocForPropertySetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false»public«ENDIF» void «asSetter()»(«this.fqn()» «asParameter()») {
«IF this.generateBackwardCompatibility() == false»
// Assign value to attribute
«IF this.isMultivalued() == false»
«asInstanceVar()»=«asParameter()»;
«ELSE»
if(«asParameter()» != null) {
«IF this.isBinaryType()»
«IF disableBinaryDataImmutability()»
«asInstanceVar()» = «asParameter()»;
«ELSE»
«asInstanceVar()» = new «type.fqn()»[«asParameter()».length];
System.arraycopy(«asParameter()», 0, «asInstanceVar()», 0, «asParameter()».length);
«ENDIF»
«ELSE»
«IF disableArrayImmutability()»
«asInstanceVar()» = «asParameter()»;
«ELSE»
«asInstanceVar()» = new «type.fqn()»[«asParameter()».length];
System.arraycopy(«asParameter()», 0, «asInstanceVar()», 0, «asParameter()».length);
«ENDIF»
«ENDIF»
}
else {
«asInstanceVar()» = null;
}
«ENDIF»
«ELSE»
«EXPAND java::Helper::CallSetterForSuccessor»
«ENDIF»
}
«ENDDEFINE»
«DEFINE SoftLinkToOneAccessorMethods FOR SoftLink»
«EXPAND functions::Javadoc::JavadocForPropertyGetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public «this.getJavaSoftLinkType()» get«this.getSoftLinkPropertyName().toFirstUpper()» () {
«IF ((NamedElement)this.owner).isPersistentObject()»
«this.getSoftLinkPropertyName()» = this.unproxy(«asInstanceVar()»);«ENDIF»
«IF this.isTransientBidirectionalBackReference()»
// Due to restrictions in JSON serialization / deserialization bi-directional associations need a special handling after an object was deserialized.
if («this.asInstanceVar()»BackReferenceInitialized == false) {
«this.getSoftLinkPropertyName()»BackReferenceInitialized = true;
«IF opposite.isMultivalued() == true»
«this.asInstanceVar()».addTo«opposite.name.toFirstUpper()»((«opposite.type.name»)this);
«ELSE»
«this.asInstanceVar()».«opposite.asSetter()»((«opposite.type.name»)this);
«ENDIF»
}
«ENDIF»
return «this.getSoftLinkPropertyName()»;
}
«IF isReadOnly() == false»
«EXPAND functions::Javadoc::JavadocForPropertySetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public void set«this.getSoftLinkPropertyName().toFirstUpper()» («this.getJavaSoftLinkType()» «asParameter()») {
«IF generateNullChecksForToOneAssociationsOfServiceObjects() && this.getJavaSoftLinkType() != "long"»
// «asParameter()» must not be null. To unset an association the unset method has to be called.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
«this.getSoftLinkPropertyName()» = «asParameter()»;
}
«IF this.getJavaSoftLinkType() != "long"»
«EXPAND functions::Javadoc::JavadocForPropertyUnset»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public final void unset«this.getSoftLinkPropertyName().toFirstUpper()» () {
«EXPAND GenerateRemoveOpposite»
«IF opposite == null || opposite.isNavigable() == false»
«this.getSoftLinkPropertyName()» = null;
«ENDIF»
}
«ENDIF»
«ENDIF»
«ENDDEFINE»
// Setter for associations
«DEFINE SoftLinkToManyAccessorMethods FOR SoftLink»
«EXPAND functions::Javadoc::JavadocForPropertyGetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public «this.getCollectionType()»<«this.getMultivaluedJavaSoftLinkType()»> get«this.getSoftLinkPropertyName().toFirstUpper()»() {
«IF this.isTransientBidirectionalBackReference()»
// Due to restrictions in JSON serialization / deserialization bi-directional associations need a special handling after an object was deserialized.
if («this.asInstanceVar()»BackReferenceInitialized == false) {
«this.asInstanceVar()»BackReferenceInitialized = true;
for («this.type.fqn()» lNext : «this.asInstanceVar()») {
«IF opposite.isMultivalued() == true»
lNext.addTo«opposite.name.toFirstUpper()»((«opposite.type.name»)this);
«ELSE»
lNext.«opposite.asSetter()»((«opposite.type.name»)this);
«ENDIF»
}
}
«ENDIF»
«IF disableCollectionImmutability()»
// Return all «this.type.name» objects directly without any protection against modification.
return «this.getSoftLinkPropertyName()»;
«ELSE»
// Return all «this.type.name» objects as unmodifiable collection.
return java.util.Collections.unmodifiable«this.getCollectionTypeShort()»(«this.getSoftLinkPropertyName()»);
«ENDIF»
}
«IF isReadOnly() == false»
«IF generatePublicSettersForAssociations()»
/**
* Method sets the association {@link #«asInstanceVar()»} to the passed collection. All objects that formerly were part of the association will be removed from it.
*
* @param «asParameter()» Collection with objects to which {@link #«asInstanceVar()»} should be set. The parameter may be null. In this case {@link #«asInstanceVar()»} is just unset.
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public void set«this.getSoftLinkPropertyName().toFirstUpper()»(«this.getCollectionType()»<«this.getMultivaluedJavaSoftLinkType()»> «asParameter()») {
// Check of parameter is not required.
// Remove all objects from association "«this.getSoftLinkPropertyName()»".
this.clear«this.getSoftLinkPropertyName().toFirstUpper()»();
// If the association is null, removing all entries is sufficient.
if(«asParameter()» != null) {
«this.getSoftLinkPropertyName()» = new «this.getCollectionImplType()»<«type.fqn()»>(«asParameter()»);
}
}
«ENDIF»
«EXPAND functions::Javadoc::JavadocForPropertyAdd»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public void addTo«this.getSoftLinkPropertyName().toFirstUpper()» («this.getMultivaluedJavaSoftLinkType()» «asParameter()») {
«IF isTargetRuntimeJEAF()»
// Check parameter "«asParameter()»" for invalid value null.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
«IF opposite != null && opposite.isNavigable() == true»
«IF opposite.isMultivalued() == false»
// Since this is not a many-to-many association the association to which the passed object belongs, has to
// be released.
«asParameter()».«opposite.asUnset()»();
«ENDIF»
«ENDIF»
// Add passed object to collection of associated «this.type.name» objects.
«this.getSoftLinkPropertyName()».add(«asParameter()»);
«EXPAND GenerateInitOpposite»
}
«EXPAND functions::Javadoc::JavadocForPropertyAddAll»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public void addTo«this.getSoftLinkPropertyName().toFirstUpper()» (java.util.Collection<«this.getMultivaluedJavaSoftLinkType()»> «asParameter()») {
«IF isTargetRuntimeJEAF()»
// Check parameter "«asParameter()»" for invalid value null.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
// Add all passed objects.
for («this.getMultivaluedJavaSoftLinkType()» lNextObject : «asParameter()») {
this.addTo«this.getSoftLinkPropertyName().toFirstUpper()»(lNextObject);
}
}
/**
* Method removes the passed object from {@link #«asInstanceVar()»}.
*
* @param «asParameter()» Object that should be removed from {@link #«asInstanceVar()»}. The parameter must not be null.
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public void removeFrom«this.getSoftLinkPropertyName().toFirstUpper()» («this.getMultivaluedJavaSoftLinkType()» «asParameter()») {
«IF isTargetRuntimeJEAF()»
// Check parameter for invalid value null.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
// Remove passed object from collection of associated «this.type.name» objects.
«this.getSoftLinkPropertyName()».remove(«asParameter()»);
«EXPAND GenerateRemoveOpposite»
}
/**
* Method removes all objects from {@link #«asInstanceVar()»}.
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
public void clear«this.getSoftLinkPropertyName().toFirstUpper()» () {
«IF opposite != null && opposite.isNavigable() == true»
// Remove all objects from association "«asInstanceVar()»".
java.util.Collection<«this.getMultivaluedJavaSoftLinkType()»> «asLocalVar()» = new java.util.HashSet<«this.getMultivaluedJavaSoftLinkType()»>(«asInstanceVar()»);
java.util.Iterator<«this.getMultivaluedJavaSoftLinkType()»> lIterator = «asLocalVar()».iterator();
while(lIterator.hasNext()) {
// As association is bidirectional we have to clear it in both directions.
this.removeFrom«this.getSoftLinkPropertyName().toFirstUpper()»(lIterator.next());
}
«ELSE»
// Remove all objects from association "«asInstanceVar()»".
«this.getSoftLinkPropertyName()».clear();
«ENDIF»
}
«ENDIF»
«ENDDEFINE»
«DEFINE ToOneAccessorMethods FOR Property»
«EXPAND functions::Javadoc::JavadocForPropertyGetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false»public«ENDIF» «type.fqn()» «asGetter()» () {
«IF ((NamedElement)this.owner).isPersistentObject()»
«asInstanceVar()» = this.unproxy(«asInstanceVar()»);«ENDIF»
«IF this.generateBackwardCompatibility() == false»
«IF this.isTransientBidirectionalBackReference()»
// Due to restrictions in JSON serialization / deserialization bi-directional associations need a special handling after an object was deserialized.
if («this.asInstanceVar()»BackReferenceInitialized == false) {
«this.asInstanceVar()»BackReferenceInitialized = true;
«IF opposite.isMultivalued() == true»
«this.asInstanceVar()».addTo«opposite.name.toFirstUpper()»((«opposite.type.name»)this);
«ELSE»
«this.asInstanceVar()».«opposite.asSetter()»((«opposite.type.name»)this);
«ENDIF»
}
«ENDIF»
return «asInstanceVar()»;
«ELSE»
«EXPAND java::Helper::CallGetterForSuccessor»
«ENDIF»
}
«IF isReadOnly() == false»
«EXPAND functions::Javadoc::JavadocForPropertySetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false && this.belongsToTransientBidirectionalBackReference() == false»public«ENDIF» void «asSetter()» («type.fqn()» «asParameter()») {
«IF this.generateBackwardCompatibility() == false»
«IF generateNullChecksForToOneAssociationsOfServiceObjects()»
// «asParameter()» must not be null. To unset an association the unset method has to be called.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
«IF opposite != null && opposite.isNavigable() == true»
// Release already referenced object before setting a new association.
if(«asInstanceVar()» != null) {
«IF opposite.isMultivalued() == true»
«asInstanceVar()».removeFrom«opposite.name.toFirstUpper()»( («opposite.type.fqn()») this);
«ELSE»
«asInstanceVar()».«opposite.asUnset()»();
«ENDIF»
}
«ENDIF»
«asInstanceVar()» = «asParameter()»;
«EXPAND GenerateInitOpposite»
«ELSE»
«EXPAND java::Helper::CallSetterForSuccessor»
«ENDIF»
}
«EXPAND functions::Javadoc::JavadocForPropertyUnset»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false && this.belongsToTransientBidirectionalBackReference() == false»public«ENDIF» final void «asUnset()» () {
«IF this.generateBackwardCompatibility() == false»
«EXPAND GenerateRemoveOpposite»
«IF opposite == null || opposite.isNavigable() == false || this.belongsToTransientBidirectionalBackReference()»
«asInstanceVar()» = null;
«ENDIF»
«ELSE»
«EXPAND java::Helper::CallUnsetForSuccessor»
«ENDIF»
}
«REM»Even though class is readonly it is still required to set transient back reference«ENDREM»
«ELSEIF belongsToTransientBidirectionalBackReference()»
«EXPAND functions::Javadoc::JavadocForPropertySetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
void «asSetter()» («type.fqn()» «asParameter()») {
«IF this.generateBackwardCompatibility() == false»
«IF generateNullChecksForToOneAssociationsOfServiceObjects()»
// «asParameter()» must not be null. To unset an association the unset method has to be called.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
«asInstanceVar()» = «asParameter()»;
«ELSE»
«EXPAND java::Helper::CallUnsetForSuccessor»
«ENDIF»
}
«ENDIF»
«ENDDEFINE»
// Getter for associations
«DEFINE ToManyAccessorMethods FOR Property»
«EXPAND functions::Javadoc::JavadocForPropertyGetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false»public«ENDIF» «this.fqn()» «asGetter()» () {
«IF this.generateBackwardCompatibility() == false»
«IF this.isTransientBidirectionalBackReference()»
// Due to restrictions in JSON serialization / deserialization bi-directional associations need a special handling after an object was deserialized.
if («this.asInstanceVar()»BackReferenceInitialized == false) {
«this.asInstanceVar()»BackReferenceInitialized = true;
for («this.type.fqn()» lNext : «this.asInstanceVar()») {
«IF opposite.isMultivalued() == true»
lNext.addTo«opposite.name.toFirstUpper()»((«opposite.type.name»)this);
«ELSE»
lNext.«opposite.asSetter()»((«opposite.type.name»)this);
«ENDIF»
}
}
«ENDIF»
«IF disableCollectionImmutability()»
// Return all «this.type.name» objects directly without any protection against modification.
return «asInstanceVar()»;
«ELSE»
// Return all «this.type.name» objects as unmodifiable collection.
return java.util.Collections.unmodifiable«this.getCollectionTypeShort()»(«asInstanceVar()»);
«ENDIF»
«ELSE»
«EXPAND java::Helper::CallGetterForSuccessor»
«ENDIF»
}
«IF isReadOnly() == false»
«IF generatePublicSettersForAssociations()»
«EXPAND functions::Javadoc::JavadocForPropertySetter»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false && this.belongsToTransientBidirectionalBackReference() == false»public«ENDIF» void set«name.toFirstUpper()»(«this.fqn()» «asParameter()») {
«IF this.generateBackwardCompatibility() == false»
// Check of parameter is not required.
// Remove all objects from association "«asInstanceVar()»".
this.clear«name.toFirstUpper()»();
// If the association is null, removing all entries is sufficient.
if(«asParameter()» != null) {
«asInstanceVar()» = new «this.getCollectionImplType()»<«type.fqn()»>(«asParameter()»);
}
«ELSE»
«EXPAND java::Helper::CallSetterForSuccessor»
«ENDIF»
}
«ENDIF»
«EXPAND functions::Javadoc::JavadocForPropertyAdd»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false && this.belongsToTransientBidirectionalBackReference() == false»public«ENDIF» void addTo«name.toFirstUpper()» («this.type.fqn()» «asParameter()») {
«IF this.generateBackwardCompatibility() == false»
«IF isTargetRuntimeJEAF()»
// Check parameter "«asParameter()»" for invalid value null.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
«IF opposite != null && opposite.isNavigable() == true»
«IF opposite.isMultivalued() == false && this.belongsToTransientBidirectionalBackReference() == false»
// Since this is not a many-to-many association the association to which the passed object belongs, has to be released.
«asParameter()».«opposite.asUnset()»();
«ENDIF»
«ENDIF»
// Add passed object to collection of associated «this.type.name» objects.
«asInstanceVar()».add(«asParameter()»);
«EXPAND GenerateInitOpposite»
«ELSE»
«EXPAND java::Helper::CallAddToForSuccessor»
«ENDIF»
}
«EXPAND functions::Javadoc::JavadocForPropertyAddAll»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false && this.belongsToTransientBidirectionalBackReference() == false»public«ENDIF» void addTo«name.toFirstUpper()» (java.util.Collection<«this.type.fqn()»> «asParameter()») {
«IF isTargetRuntimeJEAF()»
// Check parameter "«asParameter()»" for invalid value null.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
// Add all passed objects.
for («this.type.fqn()» lNextObject : «asParameter()») {
this.addTo«name.toFirstUpper()»(lNextObject);
}
}
/**
* Method removes the passed object from {@link #«asInstanceVar()»}.
*
* @param «asParameter()» Object that should be removed from {@link #«asInstanceVar()»}. The parameter must not be null.
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false && this.belongsToTransientBidirectionalBackReference() == false»public«ENDIF» void removeFrom«name.toFirstUpper()» («type.fqn()» «asParameter()») {
«IF this.generateBackwardCompatibility() == false»
«IF isTargetRuntimeJEAF()»
// Check parameter for invalid value null.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
// Remove passed object from collection of associated «this.type.name» objects.
«asInstanceVar()».remove(«asParameter()»);
«EXPAND GenerateRemoveOpposite»
«ELSE»
«EXPAND java::Helper::CallRemoveFromForSuccessor»
«ENDIF»
}
/**
* Method removes all objects from {@link #«asInstanceVar()»}.
*/
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
«IF this.isInternalProperty() == false && this.belongsToTransientBidirectionalBackReference() == false»public«ENDIF» void clear«name.toFirstUpper()» () {
«IF this.generateBackwardCompatibility() == false»
«IF opposite != null && opposite.isNavigable() == true»
// Remove all objects from association "«asInstanceVar()»".
java.util.Collection<«type.fqn()»> «asLocalVar()» = new java.util.HashSet<«type.fqn()»>(«asInstanceVar()»);
java.util.Iterator<«type.fqn()»> lIterator = «asLocalVar()».iterator();
while(lIterator.hasNext()) {
// As association is bidirectional we have to clear it in both directions.
this.removeFrom«name.toFirstUpper()»(lIterator.next());
}
«ELSE»
// Remove all objects from association "«asInstanceVar()»".
«asInstanceVar()».clear();
«ENDIF»
«ELSE»
«EXPAND java::Helper::CallClearForSuccessor»
«ENDIF»
}
«REM»Even though class is readonly it is still required to set transient back reference«ENDREM»
«ELSEIF belongsToTransientBidirectionalBackReference()»
«EXPAND functions::Javadoc::JavadocForPropertyAdd»
«EXPAND java::Helper::GenerateDeprecationAnnotation-»
void addTo«name.toFirstUpper()» («this.type.fqn()» «asParameter()») {
«IF isTargetRuntimeJEAF()»
// Check parameter "«asParameter()»" for invalid value null.
com.anaptecs.jeaf.xfun.api.checks.Check.checkInvalidParameterNull(«asParameter()», "«asParameter()»");
«ENDIF»
// Add passed object to collection of associated «this.type.name» objects.
«asInstanceVar()».add(«asParameter()»);
}
«ENDIF»
«ENDDEFINE»
// Template generates the code that will be generated if the association is bidirectional.
«DEFINE GenerateInitOpposite FOR Property»
«IF opposite != null && opposite.isNavigable() == true && this.belongsToTransientBidirectionalBackReference() == false»
«IF opposite.isMultivalued() == true»
// The association is set in both directions because within the UML model it is defined to be bidirectional.
// In case that one side will be removed from the association the other side will also be removed.
if («IF generateNullChecksForToOneAssociationsOfServiceObjects() == false» «asParameter()» != null && «ENDIF»«asParameter()».get«opposite.name.toFirstUpper()»().contains(this) == false ) {
«asParameter()».addTo«opposite.name.toFirstUpper()»( («opposite.type.fqn()») this);
}
«ELSE»
// The association is set in both directions because within the UML model it is defined to be bidirectional.
// In case that one side will be removed from the association the other side will also be removed.
if(«IF generateNullChecksForToOneAssociationsOfServiceObjects() == false» «asParameter()» != null && «ENDIF»this.equals(«asParameter()».get«opposite.name.toFirstUpper()»()) == false) {
«asParameter()».«opposite.asSetter()»( («opposite.type.fqn()») this);
}
«ENDIF»
«ENDIF»
«ENDDEFINE»
«DEFINE GenerateRemoveOpposite FOR Property»
«IF opposite != null && opposite.isNavigable() == true && this.belongsToTransientBidirectionalBackReference() == false»
// The association is set in both directions because within the UML model it is defined to be bidirectional.
// In case that one side will be removed from the association the other side will also be removed.
«IF isMultivalued() == true»
«IF opposite.isMultivalued() == true»
if («asParameter()».get«opposite.name.toFirstUpper()»().contains(this) == true ) {
«asParameter()».removeFrom«opposite.name.toFirstUpper()»( («opposite.type.fqn()») this);
}
«ELSE»
if(this.equals(«asParameter()».get«opposite.name.toFirstUpper()»()) == true) {
«asParameter()».«opposite.asUnset()»();
}
«ENDIF»
«ELSE»
«IF opposite != null && opposite.isNavigable() == true && this.isMultivalued() == false»
«type.fqn()» «type.asLocalVar()» = «asInstanceVar()»;
«ENDIF»
«asInstanceVar()» = null;
«IF opposite.isMultivalued() == true»
if («type.asLocalVar()» != null && «type.asLocalVar()».get«opposite.name.toFirstUpper()»().contains(this) == true ) {
«type.asLocalVar()».removeFrom«opposite.name.toFirstUpper()»( («opposite.type.fqn()») this);
}
«ELSE»
if(«type.asLocalVar()» != null && this.equals(«type.asLocalVar()».get«opposite.name.toFirstUpper()»()) == true) {
«type.asLocalVar()».«opposite.asUnset()»();
}
«ENDIF»
«ENDIF»
«ENDIF»
«ENDDEFINE»
//copies the attributes from the businessobject to the transferobject
«DEFINE CopyAttributeToTransfer FOR Property»«IF !isReadOnly()»lTransferObject.«asSetter()»(this.«asGetter()»());«ENDIF»«ENDDEFINE»
«DEFINE CopyAttributeToBusiness FOR Property»«IF !isReadOnly()»lPersistentObject.«asSetter()»(this.«asGetter()»());«ENDIF»«ENDDEFINE»
«DEFINE RESTParamAnnotation FOR Property»
«IF generateJAXRSAnnotations() == true -»
«IF this.isStereotypeApplied("PathParam") -»
@«getEnterpriseJavaPackage()».ws.rs.PathParam("«EXPAND java::OpenAPI::RESTParamName FOR this»")
«ENDIF-»
«IF this.isStereotypeApplied("HeaderParam") -»
@«getEnterpriseJavaPackage()».ws.rs.HeaderParam("«EXPAND java::OpenAPI::RESTParamName FOR this»")
«ENDIF-»
«IF this.isStereotypeApplied("QueryParam") -»
@«getEnterpriseJavaPackage()».ws.rs.QueryParam("«EXPAND java::OpenAPI::RESTParamName FOR this»")
«ENDIF-»
«IF this.isStereotypeApplied("CookieParam") -»
@«getEnterpriseJavaPackage()».ws.rs.CookieParam("«EXPAND java::OpenAPI::RESTParamName FOR this»")
«ENDIF-»
«IF this.isStereotypeApplied("BeanParam") -»
@«getEnterpriseJavaPackage()».ws.rs.BeanParam
«ENDIF-»
«IF this.type.isStereotypeApplied("BeanParam") -»
@«getEnterpriseJavaPackage()».ws.rs.BeanParam
«ENDIF-»
«ENDIF-»
«ENDDEFINE»