This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository eugene. See http://git.nuiton.org/eugene.git commit a0b82eda1d3759f8861d5194e914abdf7a5f0c89 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Aug 15 17:07:46 2015 +0200 Change some tag value to stereotype. See #3751 --- .../eugene/java/AbstractJavaBeanTransformer.java | 22 +- .../nuiton/eugene/java/JavaBeanTransformer.java | 4 +- .../eugene/java/JavaTemplatesStereoTypes.java | 317 ++++++++++++++++++ .../nuiton/eugene/java/JavaTemplatesTagValues.java | 355 ++------------------- .../eugene/java/SimpleJavaBeanTransformer.java | 13 +- .../SimpleJavaBeanWithNoInterfaceTransformer.java | 11 +- .../eugene/java/JavaTemplatesStereoTypesTest.java | 9 +- .../eugene/java/JavaTemplatesTagValuesTest.java | 7 - 8 files changed, 384 insertions(+), 354 deletions(-) diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/AbstractJavaBeanTransformer.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/AbstractJavaBeanTransformer.java index bf282fc..0aa90ac 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/AbstractJavaBeanTransformer.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/AbstractJavaBeanTransformer.java @@ -38,7 +38,7 @@ import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelPackage; -import org.nuiton.eugene.models.tagvalue.MissingTagValueException; +import org.nuiton.eugene.models.stereotype.MissingStereoTypeException; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; @@ -62,6 +62,7 @@ public abstract class AbstractJavaBeanTransformer extends ObjectModelTransformer private static final Log log = LogFactory.getLog(AbstractJavaBeanTransformer.class); private JavaTemplatesTagValues javaTemplatesTagValues; + private JavaTemplatesStereoTypes javaTemplatesStereoTypes; public JavaTemplatesTagValues getJavaTemplatesTagValues() { if (javaTemplatesTagValues == null) { @@ -70,6 +71,13 @@ public abstract class AbstractJavaBeanTransformer extends ObjectModelTransformer return javaTemplatesTagValues; } + public JavaTemplatesStereoTypes getJavaTemplatesStereoTypes() { + if (javaTemplatesStereoTypes == null) { + javaTemplatesStereoTypes = getStereotypeDefinitionProvider(JavaTemplatesStereoTypes.class); + } + return javaTemplatesStereoTypes; + } + protected boolean notFoundInClassPath(ObjectModelClass input, String className) { String fqn = input.getPackageName() + "." + className; boolean inClassPath = isInClassPath(fqn); @@ -843,12 +851,12 @@ public abstract class AbstractJavaBeanTransformer extends ObjectModelTransformer if (!notInClassPath) { - boolean canOverride = getJavaTemplatesTagValues().isOverrideAbstractClasses(aclass, aPackage, model); + boolean canOverride = getJavaTemplatesStereoTypes().isOverrideAbstractClasses(aclass, aPackage, model); String fqn = aclass.getPackageName() + "." + abstractClassName; if (!canOverride) { String message = "Can not override abstract class " + fqn + ", already found in classpath"; - message += "\n\nTo remove this check, add a tag value *overrideAbstractClasses* on model, package or class."; - MissingTagValueException exception = new MissingTagValueException("overrideAbstractClasses", "true", message, aPackage, aclass); + message += "\n\nTo remove this check, add the stereotype *overrideAbstractClasses* on model, package or class."; + MissingStereoTypeException exception = new MissingStereoTypeException("overrideAbstractClasses", message, aPackage, aclass); if (log.isErrorEnabled()) { log.error(exception.toString()); } @@ -869,13 +877,13 @@ public abstract class AbstractJavaBeanTransformer extends ObjectModelTransformer if (!noMethods) { - boolean canOverride = getJavaTemplatesTagValues().isAcceptBeanWithMethods(aclass, aPackage, model); + boolean canOverride = getJavaTemplatesStereoTypes().isAcceptBeanWithMethods(aclass, aPackage, model); String fqn = aclass.getPackageName() + "." + className; if (!canOverride) { String message = "Concrete class " + fqn + " contains some methods, the current generator does not accept it."; message += "\n\nSuch methods are not made to be designed, you should directly write them in the concrete class."; - message += "\n\nTo remove this check, add a tag value *acceptBeanWithMethods* on model, package or class:"; - MissingTagValueException exception = new MissingTagValueException("acceptBeanWithMethods", "true", message, aPackage, aclass); + message += "\n\nTo remove this check, add the stereotype *acceptBeanWithMethods* on model, package or class."; + MissingStereoTypeException exception = new MissingStereoTypeException("acceptBeanWithMethods", message, aPackage, aclass); if (log.isErrorEnabled()) { log.error(exception.toString()); } diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java index e65e7de..79437d1 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java @@ -176,10 +176,10 @@ public class JavaBeanTransformer extends AbstractJavaBeanTransformer { generateI18nBlockAndConstants(aPackage, input, output); - boolean usePCS = getJavaTemplatesTagValues().isGeneratePropertyChangeSupport(input, aPackage, model); + boolean usePCS = !getJavaTemplatesStereoTypes().isSkipGeneratePropertyChangeSupport(input, aPackage, model); boolean generateBooleanGetMethods = getEugeneTagValues().isGenerateBooleanGetMethods(input, aPackage, model); - boolean generateNotEmptyCollections = getJavaTemplatesTagValues().isGenerateNotEmptyCollections(input, aPackage, model); + boolean generateNotEmptyCollections = !getJavaTemplatesStereoTypes().isSkipGenerateNotEmptyCollections(input, aPackage, model); // Get available properties List<ObjectModelAttribute> properties = getProperties(input); diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java index 838d3cd..1023421 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java @@ -22,6 +22,7 @@ package org.nuiton.eugene.java; * #L% */ +import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.ObjectModelPackage; import org.nuiton.eugene.models.stereotype.StereotypeDefinition; @@ -50,6 +51,148 @@ public class JavaTemplatesStereoTypes extends StereotypeDefinitionProvider { public static final String STEREOTYPE_BEAN = "bean"; /** + * Tag value to authorize user to generate some bean with methods, some generators won't generate them : Lots code). + * + * By default, user should never add methods in bean classes, simply write them in your java code!. + * + * You can globaly use it on the complete model, on packages, or to a specific classifier. + * + * @see #isAcceptBeanWithMethods(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To authorize to generate bean with method (in some generator such method won't be generated).") + public static final String STEREOTYPE_ACCEPT_BEAN_WITH_METHODS = "acceptBeanWithMethods"; + + /** + * Tag value to authorize user to override abstract classes. + * + * By default, user should never override abstract classes but works on implementation ones. + * + * You can globaly use it on the complete model, on packages, or to a specific classifier. + * + * @see #isOverrideAbstractClasses(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To authorize to override abstract classes.") + public static final String STEREOTYPE_OVERRIDE_ABSTRACT_CLASSES = "overrideAbstractClasses"; + + /** + * Tag value to generate property change support on generated beans. + * + * You can globaly use it on the complete model, on packages, or to a specific classifier. + * + * @see #isSkipGeneratePropertyChangeSupport(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 2.12 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To generate property change support code.") + public static final String STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT = "generatePropertyChangeSupport"; + + /** + * Tag value to generate lazy instanciation of any collection to avoid NPEs. + * + * You can globaly use it on the complete model or a package, or to a specific classifier. + * + * @see #isSkipGenerateNotEmptyCollections(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 2.12 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To lazy instanciate collections to avoid NPE codes.") + public static final String STEREOTYPE_SKIP_GENERATE_NOT_EMPTY_COLLECTIONS = "generateNotEmptyCollections"; + + /** + * To generate an interface of each simple bean. + * + * You can globaly use it on the complete model or to a specific classifier. + * + * @see #isSimpleBeanSkipGenerateInterface(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 2.6.2 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To generate an interface for each bean " + + "for a class or any class of a model.\n" + + "(only effective with simple bean generator)") + public static final String STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_INTERFACE = "simpleBeanGenerateInterface"; + + /** + * To generate a factory of generated simple beans. + * + * You must use it on the complete model. + * + * @see #isSimpleBeanSkipGenerateFactory(ObjectModel) + * @since 2.6.2 + */ + @StereotypeDefinition( + target = {ObjectModel.class}, + documentation = "To generate a factory of simple bean.\n" + + "(only effective with simple bean generator)") + public static final String STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_FACTORY = "simpleBeanGenerateFactory"; + + /** + * To generate a factory of generated simple beans. + * + * You must use it on the complete model. + * + * @see #isSimpleBeanSkipGenerateDefaults(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 2.7.2 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To generate defaults class with simple operations on the type.\n" + + "(only effective with simple bean generator)") + public static final String STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_DEFAULTS = "simpleBeanGenerateDefaults"; + + /** + * To generate a factory of generated simple beans. + * + * You must use it on the complete model. + * + * @see #isSimpleBeanWithNoInterfaceSkipGenerateDefaults(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To skip generation of defaults class with simple operations on the type.\n" + + "(only effective with simple bean generator)") + public static final String STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_DEFAULTS = "simpleBeanWithNoInterfaceGenerateDefaults"; + + + /** + * To generate or not guava predicates on each property of the bean. + * + * You can globaly use it on the complete model or to a specific classifier. + * + * @see #isSimpleBeanWithNoInterfaceSkipGeneratePredicates(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To generate or not guava predicates on propertyes on beans.\n" + + "(only effective with simple bean with no interface generator)") + public static final String STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_PREDICATES = "simpleBeanWithNoInterfaceGeneratePredicates"; + + /** + * To generate or not guava functions on each property of the bean. + * + * You can globaly use it on the complete model or to a specific classifier. + * + * @see #isSimpleBeanWithNoInterfaceSkipGenerateFunctions(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + @StereotypeDefinition( + target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, + documentation = "To generate or not guava predicates on propertyes on beans.\n" + + "(only effective with simple bean with no interface generator)") + public static final String STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_FUNCTIONS = "simpleBeanWithNoInterfaceGenerateFunctions"; + + /** * Check if the given classifier has the {@link #STEREOTYPE_BEAN} stereotype. * * @param classifier classifier to test @@ -71,4 +214,178 @@ public class JavaTemplatesStereoTypes extends StereotypeDefinitionProvider { return Stereotypes.findDirectStereotype(STEREOTYPE_BEAN, aPackage); } + /** + * Obtain the value of the {@link #STEREOTYPE_ACCEPT_BEAN_WITH_METHODS} tag value on the given model, package or classifier. + * + * It will first look on the model, then and package and then in the given classifier. + * + * If no value found, then will use the default value of the tag value. + * + * @param classifier classifier to seek + * @param aPackage package to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_ACCEPT_BEAN_WITH_METHODS + * @since 3.0 + */ + public boolean isAcceptBeanWithMethods(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_ACCEPT_BEAN_WITH_METHODS, classifier, aPackage, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_OVERRIDE_ABSTRACT_CLASSES} tag value on the given model, package or classifier. + * + * It will first look on the model, then and package and then in the given classifier. + * + * If no value found, then will use the default value of the tag value. + * + * @param classifier classifier to seek + * @param aPackage package to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_OVERRIDE_ABSTRACT_CLASSES + * @since 3.0 + */ + public boolean isOverrideAbstractClasses(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_OVERRIDE_ABSTRACT_CLASSES, classifier, aPackage, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT} tag value on the given model, package or classifier. + * + * It will first look on the model, then and package and then in the given classifier. + * + * If no value found, then will use the default value of the tag value. + * + * @param classifier classifier to seek + * @param aPackage package to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT + * @since 2.12 + */ + public boolean isSkipGeneratePropertyChangeSupport(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT, classifier, aPackage, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_SKIP_GENERATE_NOT_EMPTY_COLLECTIONS} tag value on the given model, package or classifier. + * + * It will first look on the model, then and package and then in the given classifier. + * + * If no value found, then will use the default value of the tag value. + * + * @param classifier classifier to seek + * @param aPackage package to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_SKIP_GENERATE_NOT_EMPTY_COLLECTIONS + * @since 2.12 + */ + public boolean isSkipGenerateNotEmptyCollections(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_SKIP_GENERATE_NOT_EMPTY_COLLECTIONS, classifier, aPackage, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_INTERFACE} tag value on the given model or classifier. + * + * It will first look on the model, and then in the given classifier. + * + * @param classifier classifier to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_INTERFACE + * @since 2.3 + */ + public boolean isSimpleBeanSkipGenerateInterface(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_INTERFACE, classifier, aPackage, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_FACTORY} tag value on the given model or classifier. + * + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_FACTORY + * @since 2.7.2 + */ + public boolean isSimpleBeanSkipGenerateFactory(ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_FACTORY, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_DEFAULTS} tag value on the given model or classifier. + * + * It will first look on the model, and then in the given classifier. + * + * @param classifier classifier to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_DEFAULTS + * @since 2.7.2 + */ + public boolean isSimpleBeanSkipGenerateDefaults(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_SIMPLE_BEAN_SKIP_GENERATE_DEFAULTS, classifier, aPackage, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_DEFAULTS} tag value on the given model or classifier. + * + * It will first look on the model, and then in the given classifier. + * + * @param classifier classifier to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_DEFAULTS + * @since 3.0 + */ + public boolean isSimpleBeanWithNoInterfaceSkipGenerateDefaults(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_DEFAULTS, classifier, aPackage, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_PREDICATES} tag value on the given model or classifier. + * + * It will first look on the model, and then in the given classifier. + * + * <strong>If not filled, then use default {@code s} value.</strong> + * + * @param classifier classifier to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_PREDICATES + * @since 3.0 + */ + public boolean isSimpleBeanWithNoInterfaceSkipGeneratePredicates(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_PREDICATES, classifier, aPackage, model); + return value; + } + + /** + * Obtain the value of the {@link #STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_FUNCTIONS} tag value on the given model or classifier. + * + * It will first look on the model, and then in the given classifier. + * + * <strong>If not filled, then use default {@code s} value.</strong> + * + * @param classifier classifier to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see #STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_FUNCTIONS + * @since 3.0 + */ + public boolean isSimpleBeanWithNoInterfaceSkipGenerateFunctions(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + boolean value = Stereotypes.findDirectStereotype(STEREOTYPE_SIMPLE_BEAN_WITH_NO_INTERFACE_SKIP_GENERATE_FUNCTIONS, classifier, aPackage, model); + return value; + } + + } diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java index 04f62f7..e11ebd9 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java @@ -38,70 +38,38 @@ import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider; */ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { - /** - * Tag value to authorize user to generate some bean with methods, some generators won't generate them : Lots code). - * - * By default, user should never add methods in bean classes, simply write them in your java code!. - * - * You can globaly use it on the complete model, on packages, or to a specific classifier. - * - * @see #isAcceptBeanWithMethods(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 3.0 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "false", - documentation = "To authorize to generate bean with method (in some generator such method won't be generated).") - public static final String TAG_ACCEPT_BEAN_WITH_METHODS = "acceptBeanWithMethods"; - - /** - * Tag value to authorize user to override abstract classes. - * - * By default, user should never override abstract classes but works on implementation ones. - * - * You can globaly use it on the complete model, on packages, or to a specific classifier. - * - * @see #isOverrideAbstractClasses(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 3.0 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "false", - documentation = "To authorize to override abstract classes.") - public static final String TAG_OVERRIDE_ABSTRACT_CLASSES = "overrideAbstractClasses"; - - /** - * Tag value to generate property change support on generated beans. - * - * You can globaly use it on the complete model, on packages, or to a specific classifier. - * - * @see #isGeneratePropertyChangeSupport(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 2.12 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "true", - documentation = "To generate property change support code.") - public static final String TAG_GENERATE_PROPERTY_CHANGE_SUPPORT = "generatePropertyChangeSupport"; - - /** - * Tag value to generate lazy instanciation of any collection to avoid NPEs. - * - * You can globaly use it on the complete model or a package, or to a specific classifier. - * - * @see #isGenerateNotEmptyCollections(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 2.12 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "true", - documentation = "To lazy instanciate collections to avoid NPE codes.") - public static final String TAG_GENERATE_NOT_EMPTY_COLLECTIONS = "generateNotEmptyCollections"; +// /** +// * Tag value to generate property change support on generated beans. +// * +// * You can globaly use it on the complete model, on packages, or to a specific classifier. +// * +// * @see #isSkipGeneratePropertyChangeSupport(ObjectModelClassifier, ObjectModelPackage, ObjectModel) +// * @since 2.12 +// */ +// @TagValueDefinition( +// target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, +// defaultValue = "true", +// documentation = "To generate property change support code.") +// public static final String TAG_GENERATE_PROPERTY_CHANGE_SUPPORT = "generatePropertyChangeSupport"; +// +// /** +// * Tag value to generate lazy instanciation of any collection to avoid NPEs. +// * +// * You can globaly use it on the complete model or a package, or to a specific classifier. +// * +// * @see #isSkipGenerateNotEmptyCollections(ObjectModelClassifier, ObjectModelPackage, ObjectModel) +// * @since 2.12 +// */ +// @TagValueDefinition( +// target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, +// defaultValue = "true", +// documentation = "To lazy instanciate collections to avoid NPE codes.") +// public static final String TAG_GENERATE_NOT_EMPTY_COLLECTIONS = "generateNotEmptyCollections"; /** * Tag value to use a super class for generated bean. * - * If the bean needs Property change support (says you use the {@link #TAG_GENERATE_PROPERTY_CHANGE_SUPPORT}), + * If the bean needs Property change support (says you use the {@link JavaTemplatesStereoTypes#STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT}), * then your class must provide everything for it. * * More over, if you use some collections in your bean you must also define @@ -165,7 +133,7 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { /** * Tag value to use a super class for generated bean. * - * If the bean needs Property change support (says you use the tag-value {@link #TAG_GENERATE_PROPERTY_CHANGE_SUPPORT}, + * If the bean needs Property change support (says you use the tag-value {@link JavaTemplatesStereoTypes#STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT}, * then your class must provide evrything for it. * * More over, if you use some collections in your bean you must also define @@ -258,22 +226,6 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { public static final String TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX = "simpleBeanClassNameSuffix"; /** - * To generate an interface of each simple bean. - * - * You can globaly use it on the complete model or to a specific classifier. - * - * @see #isSimpleBeanGenerateInterface(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 2.6.2 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "true", - documentation = "To generate an interface for each bean " + - "for a class or any class of a model.\n" + - "(only effective with simple bean generator)") - public static final String TAG_SIMPLE_BEAN_GENERATE_INTERFACE = "simpleBeanGenerateInterface"; - - /** * Tag value to use a super interface for generated interfaces on simple bean. * * You can globaly use it on the complete model or to a specific classifier. @@ -319,35 +271,6 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { public static final String TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX = "simpleBeanInterfaceNameSuffix"; /** - * To generate a factory of generated simple beans. - * - * You must use it on the complete model. - * - * @see #isSimpleBeanGenerateFactory(ObjectModel) - * @since 2.6.2 - */ - @TagValueDefinition( - target = {ObjectModel.class}, defaultValue = "false", - documentation = "To generate a factory of simple bean.\n" + - "(only effective with simple bean generator)") - public static final String TAG_SIMPLE_BEAN_GENERATE_FACTORY = "simpleBeanGenerateFactory"; - - /** - * To generate a factory of generated simple beans. - * - * You must use it on the complete model. - * - * @see #isSimpleBeanGenerateDefaults(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 2.7.2 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "true", - documentation = "To generate defaults class with simple operations on the type.\n" + - "(only effective with simple bean generator)") - public static final String TAG_SIMPLE_BEAN_GENERATE_DEFAULTS = "simpleBeanGenerateDefaults"; - - /** * Tag value to use a super super-class for generated defaults class of a * simple bean. * @@ -396,7 +319,7 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { /** * Tag value to use a super class for generated bean. * - * If the bean needs Property change support (says you use the tag-value {@link #TAG_GENERATE_PROPERTY_CHANGE_SUPPORT}, + * If the bean needs Property change support (says you use the tag-value {@link JavaTemplatesStereoTypes#STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT}, * then your class must provide evrything for it. * * More over, if you use some collections in your bean you must also define @@ -458,21 +381,6 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { public static final String TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_SUPER_CLASS = "simpleBeanWithNoInterfaceSuperClass"; /** - * To generate a factory of generated simple beans. - * - * You must use it on the complete model. - * - * @see #isSimpleBeanWithNoInterfaceGenerateDefaults(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 3.0 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "true", - documentation = "To generate defaults class with simple operations on the type.\n" + - "(only effective with simple bean generator)") - public static final String TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_DEFAULTS = "simpleBeanWithNoInterfaceGenerateDefaults"; - - /** * Tag value to use a super super-class for generated defaults class of a simple bean. * * You can globaly use it on the complete model or to a specific classifier. @@ -548,112 +456,6 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { public static final String TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_DEFAULTS_CLASS_NAME_SUFFIX = "simpleBeanWithNoInterfaceDefaultsClassNameSuffix"; /** - * To generate or not guava predicates on each property of the bean. - * - * You can globaly use it on the complete model or to a specific classifier. - * - * @see #isSimpleBeanWithNoInterfaceGeneratePredicates(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 3.0 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "true", - documentation = "To generate or not guava predicates on propertyes on beans.\n" + - "(only effective with simple bean with no interface generator)") - public static final String TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_PREDICATES = "simpleBeanWithNoInterfaceGeneratePredicates"; - - /** - * To generate or not guava functions on each property of the bean. - * - * You can globaly use it on the complete model or to a specific classifier. - * - * @see #isSimpleBeanWithNoInterfaceGenerateFunctions(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 3.0 - */ - @TagValueDefinition( - target = {ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class}, - defaultValue = "true", - documentation = "To generate or not guava predicates on propertyes on beans.\n" + - "(only effective with simple bean with no interface generator)") - public static final String TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_FUNCTIONS = "simpleBeanWithNoInterfaceGenerateFunctions"; - - /** - * Obtain the value of the {@link #TAG_ACCEPT_BEAN_WITH_METHODS} tag value on the given model, package or classifier. - * - * It will first look on the model, then and package and then in the given classifier. - * - * If no value found, then will use the default value of the tag value. - * - * @param classifier classifier to seek - * @param aPackage package to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_ACCEPT_BEAN_WITH_METHODS - * @since 3.0 - */ - public boolean isAcceptBeanWithMethods(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_ACCEPT_BEAN_WITH_METHODS, classifier, aPackage, model); - return value; - } - - /** - * Obtain the value of the {@link #TAG_OVERRIDE_ABSTRACT_CLASSES} tag value on the given model, package or classifier. - * - * It will first look on the model, then and package and then in the given classifier. - * - * If no value found, then will use the default value of the tag value. - * - * @param classifier classifier to seek - * @param aPackage package to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_OVERRIDE_ABSTRACT_CLASSES - * @since 3.0 - */ - public boolean isOverrideAbstractClasses(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_OVERRIDE_ABSTRACT_CLASSES, classifier, aPackage, model); - return value; - } - - /** - * Obtain the value of the {@link #TAG_GENERATE_PROPERTY_CHANGE_SUPPORT} tag value on the given model, package or classifier. - * - * It will first look on the model, then and package and then in the given classifier. - * - * If no value found, then will use the default value of the tag value. - * - * @param classifier classifier to seek - * @param aPackage package to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_GENERATE_PROPERTY_CHANGE_SUPPORT - * @since 2.12 - */ - public boolean isGeneratePropertyChangeSupport(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_GENERATE_PROPERTY_CHANGE_SUPPORT, classifier, aPackage, model); - return value; - } - - /** - * Obtain the value of the {@link #TAG_GENERATE_NOT_EMPTY_COLLECTIONS} tag value on the given model, package or classifier. - * - * It will first look on the model, then and package and then in the given classifier. - * - * If no value found, then will use the default value of the tag value. - * - * @param classifier classifier to seek - * @param aPackage package to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_GENERATE_NOT_EMPTY_COLLECTIONS - * @since 2.12 - */ - public boolean isGenerateNotEmptyCollections(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_GENERATE_NOT_EMPTY_COLLECTIONS, classifier, aPackage, model); - return value; - } - - /** * Obtain the value of the {@link #TAG_BEAN_SUPER_CLASS} tag value on the given model or classifier. * * It will first look on the model, and then in the given classifier. @@ -686,35 +488,6 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { } /** - * Obtain the value of the {@link #TAG_SIMPLE_BEAN_GENERATE_INTERFACE} tag value on the given model or classifier. - * - * It will first look on the model, and then in the given classifier. - * - * @param classifier classifier to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_SIMPLE_BEAN_GENERATE_INTERFACE - * @since 2.3 - */ - public boolean isSimpleBeanGenerateInterface(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_SIMPLE_BEAN_GENERATE_INTERFACE, classifier, aPackage, model); - return value; - } - - /** - * Obtain the value of the {@link #TAG_SIMPLE_BEAN_GENERATE_FACTORY} tag value on the given model or classifier. - * - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_SIMPLE_BEAN_GENERATE_FACTORY - * @since 2.7.2 - */ - public boolean isSimpleBeanGenerateFactory(ObjectModel model) { - boolean value = findBooleanTagValue(TAG_SIMPLE_BEAN_GENERATE_FACTORY, model); - return value; - } - - /** * Obtain the value of the {@link #TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS} tag value on the given model or classifier. * * It will first look on the model, and then in the given classifier. @@ -795,22 +568,6 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { } /** - * Obtain the value of the {@link #TAG_SIMPLE_BEAN_GENERATE_DEFAULTS} tag value on the given model or classifier. - * - * It will first look on the model, and then in the given classifier. - * - * @param classifier classifier to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_SIMPLE_BEAN_GENERATE_DEFAULTS - * @since 2.7.2 - */ - public boolean isSimpleBeanGenerateDefaults(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_SIMPLE_BEAN_GENERATE_DEFAULTS, classifier, aPackage, model); - return value; - } - - /** * Obtain the value of the {@link #TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS} tag value on the given model or classifier. * * It will first look on the model, and then in the given classifier. @@ -880,22 +637,6 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { } /** - * Obtain the value of the {@link #TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_DEFAULTS} tag value on the given model or classifier. - * - * It will first look on the model, and then in the given classifier. - * - * @param classifier classifier to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_DEFAULTS - * @since 3.0 - */ - public boolean isSimpleBeanWithNoInterfaceGenerateDefaults(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_DEFAULTS, classifier, aPackage, model); - return value; - } - - /** * Obtain the value of the {@link #TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_DEFAULTS_SUPER_CLASS} tag value on the given model or classifier. * * It will first look on the model, and then in the given classifier. @@ -980,40 +721,4 @@ public class JavaTemplatesTagValues extends TagValueDefinitionProvider { return value; } - /** - * Obtain the value of the {@link #TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_PREDICATES} tag value on the given model or classifier. - * - * It will first look on the model, and then in the given classifier. - * - * <strong>If not filled, then use default {@code s} value.</strong> - * - * @param classifier classifier to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_PREDICATES - * @since 3.0 - */ - public boolean isSimpleBeanWithNoInterfaceGeneratePredicates(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_PREDICATES, classifier, aPackage, model); - return value; - } - - /** - * Obtain the value of the {@link #TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_FUNCTIONS} tag value on the given model or classifier. - * - * It will first look on the model, and then in the given classifier. - * - * <strong>If not filled, then use default {@code s} value.</strong> - * - * @param classifier classifier to seek - * @param model model to seek - * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see #TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_FUNCTIONS - * @since 3.0 - */ - public boolean isSimpleBeanWithNoInterfaceGenerateFunctions(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - boolean value = findBooleanTagValue(TAG_SIMPLE_BEAN_WITH_NO_INTERFACE_GENERATE_FUNCTIONS, classifier, aPackage, model); - return value; - } - } diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java index 7a4f1a6..61562e5 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java @@ -142,7 +142,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { generateBeanDefaults(input, abstractDefaultClassName, defaultClassName); } - boolean generateAbstractDefaults = getJavaTemplatesTagValues().isSimpleBeanGenerateDefaults(input, aPackage, model) + boolean generateAbstractDefaults = !getJavaTemplatesStereoTypes().isSimpleBeanSkipGenerateDefaults(input, aPackage, model) && canGenerateAbstractClass(aPackage, input, abstractDefaultClassName); if (generateAbstractDefaults) { @@ -152,8 +152,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { protected boolean canGenerateFactory(ObjectModel model, String className) { - boolean generateFactory = - getJavaTemplatesTagValues().isSimpleBeanGenerateFactory(model); + boolean generateFactory = !getJavaTemplatesStereoTypes().isSimpleBeanSkipGenerateFactory(model); String defaultPackage = getDefaultPackageName(); @@ -168,7 +167,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { String className) { boolean generateInterface = - getJavaTemplatesTagValues().isSimpleBeanGenerateInterface(input, aPackage, model); + !getJavaTemplatesStereoTypes().isSimpleBeanSkipGenerateInterface(input, aPackage, model); boolean canGenerate = generateInterface && notFoundInClassPath(input, className); return canGenerate; @@ -180,7 +179,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { boolean withInput = input != null; boolean canGenerate = notFoundInClassPath(input, className) - && getJavaTemplatesTagValues().isSimpleBeanGenerateDefaults(input, aPackage, model); + && !getJavaTemplatesStereoTypes().isSimpleBeanSkipGenerateDefaults(input, aPackage, model); if (canGenerate) { @@ -391,10 +390,10 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { // Get available properties List<ObjectModelAttribute> properties = getProperties(input); - boolean usePCS = getJavaTemplatesTagValues().isGeneratePropertyChangeSupport(input, aPackage, model); + boolean usePCS = !getJavaTemplatesStereoTypes().isSkipGeneratePropertyChangeSupport(input, aPackage, model); boolean generateBooleanGetMethods = getEugeneTagValues().isGenerateBooleanGetMethods(input, aPackage, model); - boolean generateNotEmptyCollections = getJavaTemplatesTagValues().isGenerateNotEmptyCollections(input, aPackage, model); + boolean generateNotEmptyCollections = !getJavaTemplatesStereoTypes().isSkipGenerateNotEmptyCollections(input, aPackage, model); // Add properties field + javabean methods for (ObjectModelAttribute attr : properties) { diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java index c0af983..2d6667d 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java @@ -87,6 +87,7 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr ImmutableSet.Builder<ObjectModelClass> beanDefaultClassesBuilder = new ImmutableSet.Builder<>(); JavaTemplatesTagValues javaTemplatesTagValues = getJavaTemplatesTagValues(); + JavaTemplatesStereoTypes javaTemplatesStereoTypes = getJavaTemplatesStereoTypes(); for (ObjectModelClass aClass : model.getClasses()) { @@ -101,7 +102,7 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr String generateName = generateName(classNamePrefix, aClass.getName(), classNameSuffix); beanNameTranslationBuilder.put(aClass, generateName); - boolean canGenerateDefaults = javaTemplatesTagValues.isSimpleBeanWithNoInterfaceGenerateDefaults(aClass, aPackage, model); + boolean canGenerateDefaults = !javaTemplatesStereoTypes.isSimpleBeanWithNoInterfaceSkipGenerateDefaults(aClass, aPackage, model); if (canGenerateDefaults) { @@ -247,9 +248,9 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr // Get available properties List<ObjectModelAttribute> properties = getProperties(input); - boolean usePCS = getJavaTemplatesTagValues().isGeneratePropertyChangeSupport(input, aPackage, model); + boolean usePCS = !getJavaTemplatesStereoTypes().isSkipGeneratePropertyChangeSupport(input, aPackage, model); boolean generateBooleanGetMethods = getEugeneTagValues().isGenerateBooleanGetMethods(input, aPackage, model); - boolean generateNotEmptyCollections = getJavaTemplatesTagValues().isGenerateNotEmptyCollections(input, aPackage, model); + boolean generateNotEmptyCollections = !getJavaTemplatesStereoTypes().isSkipGenerateNotEmptyCollections(input, aPackage, model); // Add properties field + javabean methods for (ObjectModelAttribute attr : properties) { @@ -318,12 +319,12 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr generateAbstractBeanDefaultsCopyMethods(output, typeName); - boolean generatePredicates = getJavaTemplatesTagValues().isSimpleBeanWithNoInterfaceGeneratePredicates(aClass, aPackage, model); + boolean generatePredicates = !getJavaTemplatesStereoTypes().isSimpleBeanWithNoInterfaceSkipGeneratePredicates(aClass, aPackage, model); if (generatePredicates) { generateAbstractBeanDefaultsPredicates(aClass, output, typeName); } - boolean generateFunctions = getJavaTemplatesTagValues().isSimpleBeanWithNoInterfaceGenerateFunctions(aClass, aPackage, model); + boolean generateFunctions = !getJavaTemplatesStereoTypes().isSimpleBeanWithNoInterfaceSkipGenerateFunctions(aClass, aPackage, model); if (generateFunctions) { generateAbstractBeanDefaultsFunctions(aClass, output, typeName); } diff --git a/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java b/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java index 39e65f0..8e3b2ed 100644 --- a/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java +++ b/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java @@ -26,6 +26,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.ObjectModelEnumeration; @@ -50,12 +51,18 @@ public class JavaTemplatesStereoTypesTest { public void validate() throws Exception { validate(JavaTemplatesStereoTypes.STEREOTYPE_BEAN, true, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class); + validate(JavaTemplatesStereoTypes.STEREOTYPE_SKIP_GENERATE_NOT_EMPTY_COLLECTIONS, true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); + validate(JavaTemplatesStereoTypes.STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT, true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); + validate(JavaTemplatesStereoTypes.STEREOTYPE_SKIP_GENERATE_NOT_EMPTY_COLLECTIONS, false, ObjectModelOperation.class, ObjectModelAttribute.class); + validate(JavaTemplatesStereoTypes.STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT, false, ObjectModelOperation.class, ObjectModelAttribute.class); validate(JavaTemplatesStereoTypes.STEREOTYPE_BEAN, false, ObjectModel.class, ObjectModelOperation.class); long l = System.nanoTime(); validate(JavaTemplatesStereoTypes.STEREOTYPE_BEAN + l, false, ObjectModelPackage.class, ObjectModel.class, ObjectModelOperation.class); - + validate(JavaTemplatesStereoTypes.STEREOTYPE_SKIP_GENERATE_NOT_EMPTY_COLLECTIONS + l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); + validate(JavaTemplatesStereoTypes.STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT + l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); + } protected void validate(String name, boolean expected, Class<?>... types) { diff --git a/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java b/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java index e650642..d8595f6 100644 --- a/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java +++ b/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java @@ -48,17 +48,10 @@ public class JavaTemplatesTagValuesTest { @Test public void validate() throws Exception { - validate(JavaTemplatesTagValues.TAG_GENERATE_NOT_EMPTY_COLLECTIONS, true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); - validate(JavaTemplatesTagValues.TAG_GENERATE_PROPERTY_CHANGE_SUPPORT, true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); validate(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); - - validate(JavaTemplatesTagValues.TAG_GENERATE_NOT_EMPTY_COLLECTIONS, false, ObjectModelOperation.class, ObjectModelAttribute.class); - validate(JavaTemplatesTagValues.TAG_GENERATE_PROPERTY_CHANGE_SUPPORT, false, ObjectModelOperation.class, ObjectModelAttribute.class); validate(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, false, ObjectModelOperation.class, ObjectModelAttribute.class); long l = System.nanoTime(); - validate(JavaTemplatesTagValues.TAG_GENERATE_NOT_EMPTY_COLLECTIONS+ l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); - validate(JavaTemplatesTagValues.TAG_GENERATE_PROPERTY_CHANGE_SUPPORT + l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); validate(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS + l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.