r3069 - branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator
Author: echatellier Date: 2014-04-16 12:14:56 +0200 (Wed, 16 Apr 2014) New Revision: 3069 Url: http://forge.nuiton.org/projects/topia/repository/revisions/3069 Log: fixes #3154: Add tag value to not generate fireOnPreRead and fireOnPostRead listeners Modified: branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaTagValues.java Modified: branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java =================================================================== --- branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2014-04-16 08:22:06 UTC (rev 3068) +++ branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2014-04-16 10:14:56 UTC (rev 3069) @@ -732,20 +732,39 @@ addOperation(outputInterface, getJavaBeanMethodName(operationPrefix, attrName), attrType, ObjectModelJavaModifier.PACKAGE); + boolean generateReadListeners = !TopiaGeneratorUtil.isDoNotGenerateReadListeners(attribute, model); + // Implementation ObjectModelOperation implOperation = createImplOperation(interfaceOperation); attrType = TopiaGeneratorUtil.getSimpleName(attrType); - setOperationBody(implOperation, "" + StringBuilder body = new StringBuilder(); + if (generateReadListeners) { + body.append("" /*{ fireOnPreRead(<%=constantName%>, <%=attrName%>); +}*/); + } + + body.append("" +/*{ <%=attrType%> result = this.<%=attrName%>; +}*/); + + if (generateReadListeners) { + body.append("" +/*{ fireOnPostRead(<%=constantName%>, <%=attrName%>); +}*/); + } + + body.append("" +/*{ return result; - }*/ - ); + }*/); + setOperationBody(implOperation, body.toString()); } protected void addMultipleAddOperation(ObjectModelAttribute attribute, Modified: branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java =================================================================== --- branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2014-04-16 08:22:06 UTC (rev 3068) +++ branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2014-04-16 10:14:56 UTC (rev 3069) @@ -25,11 +25,13 @@ package org.nuiton.topia.generator; import java.util.LinkedHashSet; + import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.AbstractGenerator; +import org.nuiton.eugene.EugeneTagValues; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.ModelPropertiesUtil; import org.nuiton.eugene.java.JavaGeneratorUtil; @@ -1876,6 +1878,23 @@ boolean generate = StringUtils.isNotEmpty(tagValue) && Boolean.valueOf(tagValue); return generate; } + + /** + * Obtain the value of the {@link TopiaTagValues#TAG_DO_NOT_GENERATE_READ_LISTENERS} + * tag value on the given model or classifier. + * + * It will first look on the model, and then in the given classifier. + * + * @param model model to seek + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see TopiaTagValues#TAG_DO_NOT_GENERATE_READ_LISTENERS + * @since 2.9 + */ + public static boolean isDoNotGenerateReadListeners(ObjectModelAttribute attribute, ObjectModel model) { + String value = findTagValue(TopiaTagValues.TAG_DO_NOT_GENERATE_READ_LISTENERS, attribute, model); + return value != null && "true".equals(value); + } } // TopiaGeneratorUtil Modified: branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaTagValues.java =================================================================== --- branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaTagValues.java 2014-04-16 08:22:06 UTC (rev 3068) +++ branches/topia-2.9.x/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaTagValues.java 2014-04-16 10:14:56 UTC (rev 3069) @@ -467,4 +467,14 @@ @TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class}, documentation = "Add a \"id\" property with its getter/setter on a DTO.") String TAG_GENERATE_TOPIA_ID_IN_DTO = "generateDTOTopiaId"; + + /** + * Tag to specify if we want to generate fireOnPreRead and fireOnPostRead method into entity getters. + * + * @see TopiaGeneratorUtil#isDoNotGenerateReadListeners(ObjectModelClassifier, ObjectModel) + * @since 2.6.7 + */ + @TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class}, + documentation = "Add a \"id\" property with its getter/setter on a DTO.") + String TAG_DO_NOT_GENERATE_READ_LISTENERS = "notGenerateReadListeners"; }
participants (1)
-
echatellier@users.nuiton.org