branch develop updated (1cd6d0b -> df54aeb)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git from 1cd6d0b remove annotations on java package files (break site generation) new 414e6a8 optimize license plugin configuration new d0a47d8 fix javadoc new df54aeb Remove notion of stereotypes, only keep tag values (stereotypes are boolean tag values) (Fixes #4064) The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit df54aeb665547d67a76725f6afe9b1979e4ec2e8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Oct 8 14:40:49 2016 +0200 Remove notion of stereotypes, only keep tag values (stereotypes are boolean tag values) (Fixes #4064) commit d0a47d87f5da2f8719652900fd927c282a31654b Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Oct 8 12:04:37 2016 +0200 fix javadoc commit 414e6a852f34bb44772ea3fbebd6758961036c57 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Oct 8 12:02:24 2016 +0200 optimize license plugin configuration Summary of changes: .../eugene/java/AbstractJavaBeanTransformer.java | 12 +- .../nuiton/eugene/java/EugeneJavaStereoTypes.java | 436 --------------------- .../nuiton/eugene/java/EugeneJavaTagValues.java | 30 ++ .../nuiton/eugene/java/JavaBeanTransformer.java | 8 +- .../eugene/java/JavaBeanTransformerTagValues.java | 2 +- .../eugene/java/JavaEnumerationTransformer.java | 4 +- .../eugene/java/SimpleJavaBeanTransformer.java | 30 +- .../java/SimpleJavaBeanTransformerTagValues.java | 2 +- .../SimpleJavaBeanWithNoInterfaceTransformer.java | 14 +- ...avaBeanWithNoInterfaceTransformerTagValues.java | 2 +- ...stereotype.provider.StereotypeMetadatasProvider | 1 - ...ion.tagvalue.provider.TagValueMetadatasProvider | 5 +- .../eugene/java/EugeneJavaStereoTypesTest.java | 80 ---- .../eugene/java/EugeneJavaTagValuesTest.java | 15 + .../nuiton/eugene/plugin/AvailableDataMojo.java | 101 +---- .../nuiton/eugene/plugin/StereotypesReport.java | 88 ----- .../eugene/plugin/modelextension/ClassBean.java | 6 +- .../eugene/plugin/modelextension/ElementBean.java | 20 +- .../plugin/modelextension/ModelBeanBuilder.java | 13 +- .../plugin/renderer/StereotypesReportRenderer.java | 177 --------- .../writer/BaseChainedFileWriterToMemoryModel.java | 2 +- .../org/nuiton/eugene/EugeneCoreStereotypes.java | 161 -------- .../org/nuiton/eugene/EugeneCoreTagValues.java | 81 +++- .../main/java/org/nuiton/eugene/ModelReader.java | 10 +- .../org/nuiton/eugene/java/JavaGeneratorUtil.java | 8 +- .../main/java/org/nuiton/eugene/models/Model.java | 3 +- .../MismatchStereotypeTargetException.java | 34 -- .../extension/stereotype/StereotypeMetadata.java | 62 --- .../stereotype/StereotypeNotFoundException.java | 34 -- .../extension/stereotype/StereotypeUtil.java | 153 -------- .../extension/stereotype/WithStereotypes.java | 58 --- .../AggregateStereotypeMetadatasProvider.java | 113 ------ .../DefaultStereotypeMetadatasProvider.java | 84 ---- .../provider/StereotypeMetadatasProvider.java | 47 --- .../InvalidStereotypeSyntaxException.java | 2 +- .../MissingStereoTypeException.java | 10 +- .../tagvalue/MissingTagValueException.java | 8 +- .../models/extension/tagvalue/TagValueUtil.java | 27 ++ .../eugene/models/object/ObjectModelElement.java | 3 +- .../eugene/models/object/ObjectModelPackage.java | 3 +- .../object/reader/AbstractObjectModelReader.java | 2 +- .../extension/CompactModelExtensionFileParser.java | 9 +- .../extension/FlatModelExtensionFileParser.java | 13 +- .../reader/extension/LoadModelExtension.java | 46 +-- .../reader/extension/ModelExtensionFileParser.java | 2 +- .../object/xml/ObjectModelAttributeImpl.java | 4 +- .../models/object/xml/ObjectModelElementImpl.java | 21 +- .../eugene/models/object/xml/ObjectModelImpl.java | 56 +-- .../models/object/xml/ObjectModelPackageImpl.java | 1 - .../eugene/models/state/xml/StateModelImpl.java | 21 +- ...stereotype.provider.StereotypeMetadatasProvider | 1 - .../nuiton/eugene/EugeneCoreStereotypesTest.java | 74 ---- .../org/nuiton/eugene/EugeneCoreTagValuesTest.java | 7 + pom.xml | 1 - 54 files changed, 320 insertions(+), 1887 deletions(-) delete mode 100644 eugene-java-templates/src/main/java/org/nuiton/eugene/java/EugeneJavaStereoTypes.java delete mode 100644 eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider delete mode 100644 eugene-java-templates/src/test/java/org/nuiton/eugene/java/EugeneJavaStereoTypesTest.java delete mode 100644 eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/StereotypesReport.java delete mode 100644 eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/renderer/StereotypesReportRenderer.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/EugeneCoreStereotypes.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MismatchStereotypeTargetException.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeMetadata.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeNotFoundException.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeUtil.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/WithStereotypes.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/AggregateStereotypeMetadatasProvider.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/DefaultStereotypeMetadatasProvider.java delete mode 100644 eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/StereotypeMetadatasProvider.java rename eugene/src/main/java/org/nuiton/eugene/models/extension/{stereotype => tagvalue}/InvalidStereotypeSyntaxException.java (94%) rename eugene/src/main/java/org/nuiton/eugene/models/extension/{stereotype => tagvalue}/MissingStereoTypeException.java (93%) delete mode 100644 eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider delete mode 100644 eugene/src/test/java/org/nuiton/eugene/EugeneCoreStereotypesTest.java -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 414e6a852f34bb44772ea3fbebd6758961036c57 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Oct 8 12:02:24 2016 +0200 optimize license plugin configuration --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8530335..99e11da 100644 --- a/pom.xml +++ b/pom.xml @@ -511,7 +511,6 @@ <configuration> <extraExtensions> <objectmodel>xml</objectmodel> - <xsl>xml</xsl> <xsd>xml</xsd> </extraExtensions> </configuration> -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit d0a47d87f5da2f8719652900fd927c282a31654b Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Oct 8 12:04:37 2016 +0200 fix javadoc --- .../models/extension/stereotype/MissingStereoTypeException.java | 8 ++++---- .../models/extension/tagvalue/MissingTagValueException.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MissingStereoTypeException.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MissingStereoTypeException.java index fad8714..2b28d75 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MissingStereoTypeException.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MissingStereoTypeException.java @@ -68,10 +68,10 @@ public class MissingStereoTypeException extends RuntimeException { * * Order of usage is : model, packages (from root to final package), then class. * - * @param stereoTypeName - * @param aPackage - * @param aClass - * @return the orderer set of stack usage. + * @param stereoTypeName name of stereotype + * @param aPackage package used + * @param aClass class used + * @return the ordered set of stack usage. */ public LinkedHashSet<String> getUsageStack(String stereoTypeName, ObjectModelPackage aPackage, ObjectModelClass aClass) { String suffix = ".stereotype=" + stereoTypeName; diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/MissingTagValueException.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/MissingTagValueException.java index c3275b8..eaf3814 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/MissingTagValueException.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/MissingTagValueException.java @@ -71,10 +71,10 @@ public class MissingTagValueException extends RuntimeException { * * Order of usage is : model, packages (from root to final package), then class. * - * @param tagValueName - * @param tagValueValue - * @param aPackage - * @param aClass + * @param tagValueName tag value name + * @param tagValueValue tag value + * @param aPackage package used + * @param aClass class used * @return the orderer set of stack usage. */ protected LinkedHashSet<String> getUsageStack(String tagValueName, String tagValueValue, ObjectModelPackage aPackage, ObjectModelClass aClass) { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit df54aeb665547d67a76725f6afe9b1979e4ec2e8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Oct 8 14:40:49 2016 +0200 Remove notion of stereotypes, only keep tag values (stereotypes are boolean tag values) (Fixes #4064) --- .../eugene/java/AbstractJavaBeanTransformer.java | 12 +- .../nuiton/eugene/java/EugeneJavaStereoTypes.java | 436 --------------------- .../nuiton/eugene/java/EugeneJavaTagValues.java | 30 ++ .../nuiton/eugene/java/JavaBeanTransformer.java | 8 +- .../eugene/java/JavaBeanTransformerTagValues.java | 2 +- .../eugene/java/JavaEnumerationTransformer.java | 4 +- .../eugene/java/SimpleJavaBeanTransformer.java | 30 +- .../java/SimpleJavaBeanTransformerTagValues.java | 2 +- .../SimpleJavaBeanWithNoInterfaceTransformer.java | 14 +- ...avaBeanWithNoInterfaceTransformerTagValues.java | 2 +- ...stereotype.provider.StereotypeMetadatasProvider | 1 - ...ion.tagvalue.provider.TagValueMetadatasProvider | 5 +- .../eugene/java/EugeneJavaStereoTypesTest.java | 80 ---- .../eugene/java/EugeneJavaTagValuesTest.java | 15 + .../nuiton/eugene/plugin/AvailableDataMojo.java | 101 +---- .../nuiton/eugene/plugin/StereotypesReport.java | 88 ----- .../eugene/plugin/modelextension/ClassBean.java | 6 +- .../eugene/plugin/modelextension/ElementBean.java | 20 +- .../plugin/modelextension/ModelBeanBuilder.java | 13 +- .../plugin/renderer/StereotypesReportRenderer.java | 177 --------- .../writer/BaseChainedFileWriterToMemoryModel.java | 2 +- .../org/nuiton/eugene/EugeneCoreStereotypes.java | 161 -------- .../org/nuiton/eugene/EugeneCoreTagValues.java | 81 +++- .../main/java/org/nuiton/eugene/ModelReader.java | 10 +- .../org/nuiton/eugene/java/JavaGeneratorUtil.java | 8 +- .../main/java/org/nuiton/eugene/models/Model.java | 3 +- .../MismatchStereotypeTargetException.java | 34 -- .../extension/stereotype/StereotypeMetadata.java | 62 --- .../stereotype/StereotypeNotFoundException.java | 34 -- .../extension/stereotype/StereotypeUtil.java | 153 -------- .../extension/stereotype/WithStereotypes.java | 58 --- .../AggregateStereotypeMetadatasProvider.java | 113 ------ .../DefaultStereotypeMetadatasProvider.java | 84 ---- .../provider/StereotypeMetadatasProvider.java | 47 --- .../InvalidStereotypeSyntaxException.java | 2 +- .../MissingStereoTypeException.java | 2 +- .../models/extension/tagvalue/TagValueUtil.java | 27 ++ .../eugene/models/object/ObjectModelElement.java | 3 +- .../eugene/models/object/ObjectModelPackage.java | 3 +- .../object/reader/AbstractObjectModelReader.java | 2 +- .../extension/CompactModelExtensionFileParser.java | 9 +- .../extension/FlatModelExtensionFileParser.java | 13 +- .../reader/extension/LoadModelExtension.java | 46 +-- .../reader/extension/ModelExtensionFileParser.java | 2 +- .../object/xml/ObjectModelAttributeImpl.java | 4 +- .../models/object/xml/ObjectModelElementImpl.java | 21 +- .../eugene/models/object/xml/ObjectModelImpl.java | 56 +-- .../models/object/xml/ObjectModelPackageImpl.java | 1 - .../eugene/models/state/xml/StateModelImpl.java | 21 +- ...stereotype.provider.StereotypeMetadatasProvider | 1 - .../nuiton/eugene/EugeneCoreStereotypesTest.java | 74 ---- .../org/nuiton/eugene/EugeneCoreTagValuesTest.java | 7 + 52 files changed, 312 insertions(+), 1878 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 39a5868..cfb4c18 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 @@ -30,7 +30,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.models.extension.stereotype.MissingStereoTypeException; +import org.nuiton.eugene.models.extension.tagvalue.MissingStereoTypeException; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelClassifier; @@ -61,11 +61,9 @@ public abstract class AbstractJavaBeanTransformer extends ObjectModelTransformer private static final Log log = LogFactory.getLog(AbstractJavaBeanTransformer.class); protected final EugeneJavaTagValues javaTemplatesTagValues; - protected final EugeneJavaStereoTypes javaTemplatesStereoTypes; public AbstractJavaBeanTransformer() { javaTemplatesTagValues = new EugeneJavaTagValues(); - javaTemplatesStereoTypes = new EugeneJavaStereoTypes(); } protected boolean notFoundInClassPath(ObjectModelClass input, String className) { @@ -779,8 +777,8 @@ public abstract class AbstractJavaBeanTransformer extends ObjectModelTransformer ObjectModelClassifier output) { String i18nPrefix = eugeneTagValues.getI18nPrefixTagValue(input, - aPackage, - model); + aPackage, + model); if (!StringUtils.isEmpty(i18nPrefix)) { generateI18nBlock(input, output, i18nPrefix); } @@ -853,7 +851,7 @@ public abstract class AbstractJavaBeanTransformer extends ObjectModelTransformer if (!notInClassPath) { - boolean canOverride = javaTemplatesStereoTypes.isOverrideAbstractClasses(aclass, aPackage, model); + boolean canOverride = javaTemplatesTagValues.isOverrideAbstractClasses(aclass, aPackage, model); String fqn = aclass.getPackageName() + "." + abstractClassName; if (!canOverride) { String message = "Can not override abstract class " + fqn + ", already found in classpath"; @@ -879,7 +877,7 @@ public abstract class AbstractJavaBeanTransformer extends ObjectModelTransformer if (!noMethods) { - boolean canOverride = javaTemplatesStereoTypes.isAcceptBeanWithMethods(aclass, aPackage, model); + boolean canOverride = javaTemplatesTagValues.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."; diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/EugeneJavaStereoTypes.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/EugeneJavaStereoTypes.java deleted file mode 100644 index 244bdc2..0000000 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/EugeneJavaStereoTypes.java +++ /dev/null @@ -1,436 +0,0 @@ -package org.nuiton.eugene.java; - -/* - * #%L - * EUGene :: Java templates - * %% - * Copyright (C) 2012 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.StereotypeUtil; -import org.nuiton.eugene.models.extension.stereotype.provider.DefaultStereotypeMetadatasProvider; -import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelPackage; - -import java.util.Set; - -import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; - -/** - * Defines all stereotypes managed by Java templates. - * - * @author Tony Chemit - chemit@codelutin.com - * @plexus.component role="org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider" role-hint="eugene-java-templates" - * @since 2.5.6 - */ -public class EugeneJavaStereoTypes extends DefaultStereotypeMetadatasProvider { - - @Override - public String getDescription() { - return t("eugene.java.stereotypes"); - } - - public enum Store implements StereotypeMetadata { - - /** - * Stereotype for JavaBean objects to place on a classifier. - * - * @see #hasBeanStereotype(ObjectModelClassifier, ObjectModelPackage) - * @see #hasBeanStereotype(ObjectModelPackage) - * @since 2.5.6 - */ - bean(n("eugene.java.stereotype.bean"), false, ObjectModelClassifier.class, ObjectModelPackage.class), - - /** - * 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 - */ - @Deprecated - acceptBeanWithMethods(n("eugene.java.stereotype.acceptBeanWithMethods"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * 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 - */ - @Deprecated - overrideAbstractClasses(n("eugene.java.stereotype.overrideAbstractClasses"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * 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 - */ - @Deprecated - generatePropertyChangeSupport(n("eugene.java.stereotype.generatePropertyChangeSupport"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * 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 - */ - @Deprecated - generateNotEmptyCollections(n("eugene.java.stereotype.generateNotEmptyCollections"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * 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 - */ - @Deprecated - simpleBeanGenerateInterface(n("eugene.java.stereotype.simpleBeanGenerateInterface"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * To generate a factory of generated simple beans. - * - * You must use it on the complete model. - * - * @see #isSimpleBeanSkipGenerateFactory(ObjectModel) - * @since 2.6.2 - */ - @Deprecated - simpleBeanGenerateFactory(n("eugene.java.stereotype.simpleBeanGenerateFactory"), true, ObjectModel.class), - - /** - * 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 - */ - @Deprecated - simpleBeanGenerateDefaults(n("eugene.java.stereotype.simpleBeanGenerateDefaults"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * To generate a factory of generated simple beans. - * - * You must use it on the complete model. - * - * @see #isSimpleBeanWithNoInterfaceSkipGenerateDefaults(ObjectModelClassifier, ObjectModelPackage, ObjectModel) - * @since 3.0 - */ - @Deprecated - simpleBeanWithNoInterfaceGenerateDefaults(n("eugene.java.stereotype.simpleBeanWithNoInterfaceGenerateDefaults"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * 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 - */ - @Deprecated - simpleBeanWithNoInterfaceGeneratePredicates(n("eugene.java.stereotype.simpleBeanWithNoInterfaceGeneratePredicates"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * 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 - */ - @Deprecated - simpleBeanWithNoInterfaceGenerateFunctions(n("eugene.java.stereotype.simpleBeanWithNoInterfaceGenerateFunctions"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), - - /** - * To generate or not constructors methods on Default classes. - * - * You can globaly use it on the complete model, package or on a specific classifier. - * - * @see #isSimpleBeanWithNoInterfaceSkipGenerateDefaultConstructors(ObjectModelClassifier, ObjectModelPackage, ObjectModel)} - * @since 3.0 - */ - @Deprecated - simpleBeanWithNoInterfaceSkipGenerateConstructors(n("eugene.java.stereotype.simpleBeanWithNoInterfaceSkipGenerateConstructors"), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class); - - private final Set<Class<?>> targets; - private final String i18nDescriptionKey; - private final boolean deprecated; - - Store(String i18nDescriptionKey, boolean deprecated, Class<?>... targets) { - this.deprecated = deprecated; - this.targets = ImmutableSet.copyOf(targets); - this.i18nDescriptionKey = i18nDescriptionKey; - } - - @Override - public String getName() { - return name(); - } - - @Override - public Set<Class<?>> getTargets() { - return targets; - } - - @Override - public String getDescription() { - return t(i18nDescriptionKey); - } - - @Override - public boolean isDeprecated() { - return deprecated; - } - } - - public EugeneJavaStereoTypes() { - super((StereotypeMetadata[]) Store.values()); - } - - /** - * Check if the given classifier has the {@link Store#bean} stereotype. - * - * @param classifier classifier to test - * @return {@code true} if stereotype was found, {@code false otherwise} - * @see Store#bean - */ - public static boolean hasBeanStereotype(ObjectModelClassifier classifier, ObjectModelPackage aPackage) { - return StereotypeUtil.findDirectStereotype(Store.bean, classifier, aPackage); - } - - /** - * Check if the given aPackage has the {@link Store#bean} stereotype. - * - * @param aPackage classifier to test - * @return {@code true} if stereotype was found, {@code false otherwise} - * @see Store#bean - */ - public static boolean hasBeanStereotype(ObjectModelPackage aPackage) { - return StereotypeUtil.findDirectStereotype(Store.bean, aPackage); - } - - /** - * Obtain the value of the {@link Store#acceptBeanWithMethods} 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 Store#acceptBeanWithMethods - * @since 3.0 - */ - @Deprecated - public boolean isAcceptBeanWithMethods(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.acceptBeanWithMethods, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#overrideAbstractClasses} 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 Store#overrideAbstractClasses - * @since 3.0 - */ - @Deprecated - public boolean isOverrideAbstractClasses(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.overrideAbstractClasses, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#generatePropertyChangeSupport} 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 Store#generatePropertyChangeSupport - * @since 2.12 - */ - @Deprecated - public boolean isSkipGeneratePropertyChangeSupport(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.generatePropertyChangeSupport, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#generateNotEmptyCollections} 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 Store#generateNotEmptyCollections - * @since 2.12 - */ - @Deprecated - public boolean isSkipGenerateNotEmptyCollections(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.generateNotEmptyCollections, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#simpleBeanGenerateInterface} 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 Store#simpleBeanGenerateInterface - * @since 2.3 - */ - @Deprecated - public boolean isSimpleBeanSkipGenerateInterface(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.simpleBeanGenerateInterface, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#simpleBeanGenerateFactory} 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 Store#simpleBeanGenerateFactory - * @since 2.7.2 - */ - @Deprecated - public boolean isSimpleBeanSkipGenerateFactory(ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.simpleBeanGenerateFactory, model); - } - - /** - * Obtain the value of the {@link Store#simpleBeanGenerateDefaults} 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 Store#simpleBeanGenerateDefaults - * @since 2.7.2 - */ - @Deprecated - public boolean isSimpleBeanSkipGenerateDefaults(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.simpleBeanGenerateDefaults, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#simpleBeanWithNoInterfaceGenerateDefaults} 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 Store#simpleBeanWithNoInterfaceGenerateDefaults - * @since 3.0 - */ - @Deprecated - public boolean isSimpleBeanWithNoInterfaceSkipGenerateDefaults(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.simpleBeanWithNoInterfaceGenerateDefaults, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#simpleBeanWithNoInterfaceGeneratePredicates} 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 Store#simpleBeanWithNoInterfaceGeneratePredicates - * @since 3.0 - */ - @Deprecated - public boolean isSimpleBeanWithNoInterfaceSkipGeneratePredicates(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.simpleBeanWithNoInterfaceGeneratePredicates, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#simpleBeanWithNoInterfaceGenerateFunctions} 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 Store#simpleBeanWithNoInterfaceGenerateFunctions - * @since 3.0 - */ - @Deprecated - public boolean isSimpleBeanWithNoInterfaceSkipGenerateFunctions(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.simpleBeanWithNoInterfaceGenerateFunctions, classifier, aPackage, model); - } - - /** - * Obtain the value of the {@link Store#simpleBeanWithNoInterfaceSkipGenerateConstructors} 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 Store#simpleBeanWithNoInterfaceSkipGenerateConstructors - * @since 3.0 - */ - @Deprecated - public boolean isSimpleBeanWithNoInterfaceSkipGenerateDefaultConstructors(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { - return StereotypeUtil.findDirectStereotype(Store.simpleBeanWithNoInterfaceSkipGenerateConstructors, classifier, aPackage, model); - } - -} diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/EugeneJavaTagValues.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/EugeneJavaTagValues.java index f9d013d..2d000a5 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/EugeneJavaTagValues.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/EugeneJavaTagValues.java @@ -53,6 +53,15 @@ public class EugeneJavaTagValues extends DefaultTagValueMetadatasProvider { public enum Store implements TagValueMetadata { /** + * Boolean tag value for JavaBean objects to place on a classifier or package. + * + * @see #isBean(ObjectModelClassifier, ObjectModelPackage) + * @see #isBean(ObjectModelPackage) + * @since 2.5.6 + */ + bean(n("eugene.java.stereotype.bean"), boolean.class, null, ObjectModelClassifier.class, ObjectModelPackage.class), + + /** * 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!. @@ -244,4 +253,25 @@ public class EugeneJavaTagValues extends DefaultTagValueMetadatasProvider { return TagValueUtil.findBooleanTagValue(Store.java8, model); } + /** + * Check if the given classifier has the {@link Store#bean} stereotype. + * + * @param classifier classifier to test + * @return {@code true} if stereotype was found, {@code false otherwise} + * @see Store#bean + */ + public boolean isBean(ObjectModelClassifier classifier, ObjectModelPackage aPackage) { + return TagValueUtil.findBooleanTagValue(Store.bean, classifier, aPackage); + } + + /** + * Check if the given aPackage has the {@link Store#bean} stereotype. + * + * @param aPackage classifier to test + * @return {@code true} if stereotype was found, {@code false otherwise} + * @see Store#bean + */ + public boolean isBean(ObjectModelPackage aPackage) { + return TagValueUtil.findBooleanTagValue(Store.bean, aPackage); + } } 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 8dde685..ff7e967 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 @@ -61,7 +61,7 @@ public class JavaBeanTransformer extends AbstractJavaBeanTransformer { ObjectModelPackage aPackage = getPackage(input); - if (!JavaTemplatesStereoTypes.hasBeanStereotype(input, aPackage)) { + if (!javaTemplatesTagValues.isBean(input, aPackage)) { // not a bean return; @@ -138,7 +138,7 @@ public class JavaBeanTransformer extends AbstractJavaBeanTransformer { Collection<ObjectModelClass> superclasses = input.getSuperclasses(); if (CollectionUtils.isNotEmpty(superclasses)) { for (ObjectModelClass superclass : superclasses) { - if (JavaTemplatesStereoTypes.hasBeanStereotype(superclass, aPackage)) { + if (javaTemplatesTagValues.isBean(superclass, aPackage)) { superClassIsBean = true; break; } @@ -180,10 +180,10 @@ public class JavaBeanTransformer extends AbstractJavaBeanTransformer { generateI18nBlockAndConstants(aPackage, input, output); - boolean usePCS = !javaTemplatesStereoTypes.isSkipGeneratePropertyChangeSupport(input, aPackage, model); + boolean usePCS = !javaTemplatesTagValues.isSkipGeneratePropertyChangeSupport(input, aPackage, model); boolean generateBooleanGetMethods = eugeneTagValues.isGenerateBooleanGetMethods(input, aPackage, model); - boolean generateNotEmptyCollections = !javaTemplatesStereoTypes.isSkipGenerateNotEmptyCollections(input, aPackage, model); + boolean generateNotEmptyCollections = !javaTemplatesTagValues.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/JavaBeanTransformerTagValues.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformerTagValues.java index febd6ad..f2a20e8 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformerTagValues.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformerTagValues.java @@ -55,7 +55,7 @@ public class JavaBeanTransformerTagValues extends DefaultTagValueMetadatasProvid /** * Tag value to use a super class for generated bean. * - * If the bean needs Property change support (says you use the {@link JavaTemplatesStereoTypes#STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT}), + * If the bean needs Property change support (says you use the {@link EugeneJavaTagValues.Store#generatePropertyChangeSupport}), * then your class must provide everything for it. * * More over, if you use some collections in your bean you must also define diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaEnumerationTransformer.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaEnumerationTransformer.java index bcd5b54..62578bd 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaEnumerationTransformer.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaEnumerationTransformer.java @@ -27,7 +27,7 @@ package org.nuiton.eugene.java; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.EugeneCoreStereotypes; +import org.nuiton.eugene.EugeneCoreTagValues; import org.nuiton.eugene.models.object.ObjectModelEnumeration; import org.nuiton.eugene.models.object.ObjectModelPackage; @@ -72,7 +72,7 @@ public class JavaEnumerationTransformer extends ObjectModelTransformerToJava { protected boolean canGenerate(ObjectModelEnumeration input) { ObjectModelPackage aPackage = getPackage(input); - boolean b = !EugeneCoreStereotypes.hasSkipStereotype(input, aPackage); + boolean b = !EugeneCoreTagValues.isSkip(input, aPackage); if (b) { // check if not found in class-path 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 88c9405..0bc33b4 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 @@ -44,6 +44,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; + /** * SimpleJavaBeanTransformer generates simple bean with pcs support * (and nothing else) according to the JavaBeans 1.1 norm with no Impl generation mecanism. @@ -82,7 +83,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { ObjectModelPackage aPackage = getPackage(input); - if (!JavaTemplatesStereoTypes.hasBeanStereotype(input, aPackage)) { + if (!javaTemplatesTagValues.isBean(input, aPackage)) { // not a bean return; @@ -131,7 +132,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { } boolean generateClass = notFoundInClassPath(input, className) - && canGenerateClassWithMethods(aPackage, input, className); + && canGenerateClassWithMethods(aPackage, input, className); if (generateClass) { @@ -147,8 +148,8 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { generateBeanDefaults(input, abstractDefaultClassName, defaultClassName); } - boolean generateAbstractDefaults = !javaTemplatesStereoTypes.isSimpleBeanSkipGenerateDefaults(input, aPackage, model) - && canGenerateAbstractClass(aPackage, input, abstractDefaultClassName); + boolean generateAbstractDefaults = !simpleJavaBeanTransformerTagValues.isSimpleBeanSkipGenerateDefaults(input, aPackage, model) + && canGenerateAbstractClass(aPackage, input, abstractDefaultClassName); if (generateAbstractDefaults) { generateBeanAbstractDefaults(aPackage, input, abstractDefaultClassName); @@ -157,7 +158,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { protected boolean canGenerateFactory(ObjectModel model, String className) { - boolean generateFactory = !javaTemplatesStereoTypes.isSimpleBeanSkipGenerateFactory(model); + boolean generateFactory = !simpleJavaBeanTransformerTagValues.isSimpleBeanSkipGenerateFactory(model); String defaultPackage = getDefaultPackageName(); @@ -170,7 +171,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { ObjectModelClass input, String className) { - boolean generateInterface = !javaTemplatesStereoTypes.isSimpleBeanSkipGenerateInterface(input, aPackage, model); + boolean generateInterface = !simpleJavaBeanTransformerTagValues.isSimpleBeanSkipGenerateInterface(input, aPackage, model); return generateInterface && notFoundInClassPath(input, className); @@ -181,7 +182,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { boolean withInput = input != null; boolean canGenerate = notFoundInClassPath(input, className) - && !javaTemplatesStereoTypes.isSimpleBeanSkipGenerateDefaults(input, aPackage, model); + && !simpleJavaBeanTransformerTagValues.isSimpleBeanSkipGenerateDefaults(input, aPackage, model); if (canGenerate) { @@ -190,7 +191,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { // class in not abstract // class is a bean - canGenerate = !input.isAbstract() && JavaTemplatesStereoTypes.hasBeanStereotype(input, aPackage); + canGenerate = !input.isAbstract() && javaTemplatesTagValues.isBean(input, aPackage); } } @@ -209,8 +210,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { ObjectModelPackage aPackage = getPackage(packageName); - if (!aClass.isAbstract() && - JavaTemplatesStereoTypes.hasBeanStereotype(aClass, aPackage)) { + if (!aClass.isAbstract() && javaTemplatesTagValues.isBean(aClass, aPackage)) { String typeName = getBeanInterfaceName(aPackage, aClass); String typeBeanName = getBeanClassName(aPackage, aClass); @@ -265,10 +265,10 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { Collection<ObjectModelClass> superclasses = input.getSuperclasses(); if (CollectionUtils.isNotEmpty(superclasses)) { for (ObjectModelClass superclass : superclasses) { - if (JavaTemplatesStereoTypes.hasBeanStereotype(superclass, aPackage)) { + if (javaTemplatesTagValues.isBean(superclass, aPackage)) { superClassIsBean = true; superClass = superclass.getPackageName() + "." + - getBeanInterfaceName(aPackage, superclass); + getBeanInterfaceName(aPackage, superclass); break; } superClass = superclass.getQualifiedName(); @@ -339,7 +339,7 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { Collection<ObjectModelClass> superclasses = input.getSuperclasses(); if (CollectionUtils.isNotEmpty(superclasses)) { for (ObjectModelClass superclass : superclasses) { - if (JavaTemplatesStereoTypes.hasBeanStereotype(superclass, aPackage)) { + if (javaTemplatesTagValues.isBean(superclass, aPackage)) { superClassIsBean = true; superClass = superclass.getPackageName() + "." + getBeanClassName(aPackage, superclass); break; @@ -390,10 +390,10 @@ public class SimpleJavaBeanTransformer extends AbstractJavaBeanTransformer { // Get available properties List<ObjectModelAttribute> properties = getProperties(input); - boolean usePCS = !javaTemplatesStereoTypes.isSkipGeneratePropertyChangeSupport(input, aPackage, model); + boolean usePCS = !javaTemplatesTagValues.isSkipGeneratePropertyChangeSupport(input, aPackage, model); boolean generateBooleanGetMethods = eugeneTagValues.isGenerateBooleanGetMethods(input, aPackage, model); - boolean generateNotEmptyCollections = !javaTemplatesStereoTypes.isSkipGenerateNotEmptyCollections(input, aPackage, model); + boolean generateNotEmptyCollections = !javaTemplatesTagValues.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/SimpleJavaBeanTransformerTagValues.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformerTagValues.java index 378aef4..ca5e907 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformerTagValues.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformerTagValues.java @@ -85,7 +85,7 @@ public class SimpleJavaBeanTransformerTagValues extends DefaultTagValueMetadatas /** * Tag value to use a super class for generated bean. * - * If the bean needs Property change support (says you use the tag-value {@link JavaTemplatesStereoTypes#STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT}, + * If the bean needs Property change support (says you use the tag-value {@link EugeneJavaTagValues.Store#generatePropertyChangeSupport}, * then your class must provide evrything for it. * * More over, if you use some collections in your bean you must also define 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 79ae81a..ca783ca 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 @@ -97,7 +97,7 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr for (ObjectModelClass aClass : model.getClasses()) { ObjectModelPackage aPackage = model.getPackage(aClass.getPackageName()); - if (JavaTemplatesStereoTypes.hasBeanStereotype(aClass, aPackage)) { + if (javaTemplatesTagValues.isBean(aClass, aPackage)) { beanClassesBuilder.add(aClass); @@ -107,7 +107,7 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr String generateName = generateName(classNamePrefix, aClass.getName(), classNameSuffix); beanNameTranslationBuilder.put(aClass, generateName); - boolean canGenerateDefaults = !javaTemplatesStereoTypes.isSimpleBeanWithNoInterfaceSkipGenerateDefaults(aClass, aPackage, model); + boolean canGenerateDefaults = !simpleJavaBeanWithNoInterfaceTransformerTagValues.isSimpleBeanWithNoInterfaceSkipGenerateDefaults(aClass, aPackage, model); if (canGenerateDefaults) { @@ -314,9 +314,9 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr // Get available properties List<ObjectModelAttribute> properties = getProperties(input); - boolean usePCS = !javaTemplatesStereoTypes.isSkipGeneratePropertyChangeSupport(input, aPackage, model); + boolean usePCS = !javaTemplatesTagValues.isSkipGeneratePropertyChangeSupport(input, aPackage, model); boolean generateBooleanGetMethods = eugeneTagValues.isGenerateBooleanGetMethods(input, aPackage, model); - boolean generateNotEmptyCollections = !javaTemplatesStereoTypes.isSkipGenerateNotEmptyCollections(input, aPackage, model); + boolean generateNotEmptyCollections = !javaTemplatesTagValues.isSkipGenerateNotEmptyCollections(input, aPackage, model); // Add properties field + javabean methods for (ObjectModelAttribute attr : properties) { @@ -378,19 +378,19 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr }*/ ); - boolean generateContructors = !javaTemplatesStereoTypes.isSimpleBeanWithNoInterfaceSkipGenerateDefaultConstructors(aClass, aPackage, model) && !aClass.isAbstract(); + boolean generateContructors = !simpleJavaBeanWithNoInterfaceTransformerTagValues.isSimpleBeanWithNoInterfaceSkipGenerateDefaultConstructors(aClass, aPackage, model) && !aClass.isAbstract(); if (generateContructors) { generateAbstractBeanDefaultsConstructors(output, typeName); } generateAbstractBeanDefaultsCopyMethods(output, typeName); - boolean generatePredicates = !javaTemplatesStereoTypes.isSimpleBeanWithNoInterfaceSkipGeneratePredicates(aClass, aPackage, model); + boolean generatePredicates = !simpleJavaBeanWithNoInterfaceTransformerTagValues.isSimpleBeanWithNoInterfaceSkipGeneratePredicates(aClass, aPackage, model); if (generatePredicates) { generateAbstractBeanDefaultsPredicates(aClass, output, typeName); } - boolean generateFunctions = !javaTemplatesStereoTypes.isSimpleBeanWithNoInterfaceSkipGenerateFunctions(aClass, aPackage, model); + boolean generateFunctions = !simpleJavaBeanWithNoInterfaceTransformerTagValues.isSimpleBeanWithNoInterfaceSkipGenerateFunctions(aClass, aPackage, model); if (generateFunctions) { generateAbstractBeanDefaultsFunctions(aClass, output, typeName); } diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformerTagValues.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformerTagValues.java index 5a067ed..7887a24 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformerTagValues.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformerTagValues.java @@ -97,7 +97,7 @@ public class SimpleJavaBeanWithNoInterfaceTransformerTagValues extends DefaultTa /** * Tag value to use a super class for generated bean. * - * If the bean needs Property change support (says you use the tag-value {@link JavaTemplatesStereoTypes#STEREOTYPE_SKIP_GENERATE_PROPERTY_CHANGE_SUPPORT}, + * If the bean needs Property change support (says you use the tag-value {@link EugeneJavaTagValues.Store#generatePropertyChangeSupport}, * then your class must provide evrything for it. * * More over, if you use some collections in your bean you must also define diff --git a/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider b/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider deleted file mode 100644 index a0b948a..0000000 --- a/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider +++ /dev/null @@ -1 +0,0 @@ -org.nuiton.eugene.java.EugeneJavaStereoTypes \ No newline at end of file diff --git a/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider b/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider index 982aa83..1c26f8d 100644 --- a/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider +++ b/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider @@ -1 +1,4 @@ -org.nuiton.eugene.java.EugeneJavaTagValues \ No newline at end of file +org.nuiton.eugene.java.EugeneJavaTagValues +org.nuiton.eugene.java.JavaBeanTransformerTagValues +org.nuiton.eugene.java.SimpleJavaBeanTransformerTagValues +org.nuiton.eugene.java.SimpleJavaBeanWithNoInterfaceTransformerTagValues diff --git a/eugene-java-templates/src/test/java/org/nuiton/eugene/java/EugeneJavaStereoTypesTest.java b/eugene-java-templates/src/test/java/org/nuiton/eugene/java/EugeneJavaStereoTypesTest.java deleted file mode 100644 index 1ebd33b..0000000 --- a/eugene-java-templates/src/test/java/org/nuiton/eugene/java/EugeneJavaStereoTypesTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.nuiton.eugene.java; - -/* - * #%L - * EUGene :: Java templates - * %% - * Copyright (C) 2012 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.nuiton.eugene.models.extension.stereotype.MismatchStereotypeTargetException; -import org.nuiton.eugene.models.extension.stereotype.StereotypeNotFoundException; -import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; -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; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.ObjectModelPackage; - -public class EugeneJavaStereoTypesTest { - - protected StereotypeMetadatasProvider provider; - - @Before - public void setUp() throws Exception { - provider = new EugeneJavaStereoTypes(); - } - - @Test - public void validate() throws Exception { - - validate(EugeneJavaStereoTypes.Store.bean.getName(), true, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class); - validate(EugeneJavaStereoTypes.Store.generateNotEmptyCollections.getName(), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); - validate(EugeneJavaStereoTypes.Store.generatePropertyChangeSupport.getName(), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); - validate(EugeneJavaStereoTypes.Store.generateNotEmptyCollections.getName(), false, ObjectModelOperation.class, ObjectModelAttribute.class); - validate(EugeneJavaStereoTypes.Store.generatePropertyChangeSupport.getName(), false, ObjectModelOperation.class, ObjectModelAttribute.class); - - validate(EugeneJavaStereoTypes.Store.bean.getName(), false, ObjectModel.class, ObjectModelOperation.class); - - long l = System.nanoTime(); - validate(EugeneJavaStereoTypes.Store.bean.getName() + l, false, ObjectModelPackage.class, ObjectModel.class, ObjectModelOperation.class); - validate(EugeneJavaStereoTypes.Store.generateNotEmptyCollections.getName() + l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); - validate(EugeneJavaStereoTypes.Store.generatePropertyChangeSupport.getName() + l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); - - } - - protected void validate(String name, boolean expected, Class<?>... types) { - for (Class<?> type : types) { - try { - provider.validate(name, type); - Assert.assertTrue(expected); - } catch (StereotypeNotFoundException e) { - Assert.assertFalse(expected); - } catch (MismatchStereotypeTargetException e) { - Assert.assertFalse(expected); - } - } - } - -} diff --git a/eugene-java-templates/src/test/java/org/nuiton/eugene/java/EugeneJavaTagValuesTest.java b/eugene-java-templates/src/test/java/org/nuiton/eugene/java/EugeneJavaTagValuesTest.java index 3613c9b..66b7507 100644 --- a/eugene-java-templates/src/test/java/org/nuiton/eugene/java/EugeneJavaTagValuesTest.java +++ b/eugene-java-templates/src/test/java/org/nuiton/eugene/java/EugeneJavaTagValuesTest.java @@ -33,6 +33,7 @@ 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; +import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelPackage; @@ -47,10 +48,24 @@ public class EugeneJavaTagValuesTest { @Test public void validate() throws Exception { + + validate(EugeneJavaTagValues.Store.bean.getName(), true, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class); + validate(EugeneJavaTagValues.Store.generateNotEmptyCollections.getName(), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); + validate(EugeneJavaTagValues.Store.generatePropertyChangeSupport.getName(), true, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); + validate(EugeneJavaTagValues.Store.generateNotEmptyCollections.getName(), false, ObjectModelOperation.class, ObjectModelAttribute.class); + validate(EugeneJavaTagValues.Store.generatePropertyChangeSupport.getName(), false, ObjectModelOperation.class, ObjectModelAttribute.class); + + validate(EugeneJavaTagValues.Store.bean.getName(), false, ObjectModel.class, ObjectModelOperation.class); + validate(EugeneJavaTagValues.Store.java8.getName(), true, ObjectModel.class); validate(EugeneJavaTagValues.Store.java8.getName(), false, ObjectModelOperation.class, ObjectModelAttribute.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class); long l = System.nanoTime(); + + validate(EugeneJavaTagValues.Store.bean.getName() + l, false, ObjectModelPackage.class, ObjectModel.class, ObjectModelOperation.class); + validate(EugeneJavaTagValues.Store.generateNotEmptyCollections.getName() + l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); + validate(EugeneJavaTagValues.Store.generatePropertyChangeSupport.getName() + l, false, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); + validate(EugeneJavaTagValues.Store.java8.getName() + l, false, ObjectModel.class, ObjectModelOperation.class, ObjectModelAttribute.class); } diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java index 23bc216..2952b8f 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java @@ -35,8 +35,6 @@ import org.apache.maven.plugins.annotations.ResolutionScope; import org.nuiton.eugene.ModelReader; import org.nuiton.eugene.Template; import org.nuiton.eugene.models.Model; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; import org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider; import org.nuiton.eugene.models.object.ObjectModel; @@ -81,7 +79,7 @@ public class AvailableDataMojo extends AbstractMojo { * * @since 2.0.0 */ - @Parameter(property = "dataTypes", defaultValue = "") + @Parameter(property = "dataTypes") protected String dataTypes; /** @@ -104,14 +102,6 @@ public class AvailableDataMojo extends AbstractMojo { protected Map<String, ChainedFileWriter> writers; /** - * All available stereotype providers introspects via plexus. - * - * @since 2.9 - */ - @Component(role = StereotypeMetadatasProvider.class) - protected Map<String, StereotypeMetadatasProvider> stereotypeMetadatasProviders; - - /** * All available tag value providers introspects via plexus. * * @since 2.9 @@ -121,8 +111,6 @@ public class AvailableDataMojo extends AbstractMojo { protected TagValueMetadatasProvider currentTagValueMetadatasProvider; - protected StereotypeMetadatasProvider currentStereotypeMetadatasProvider; - @Override public void execute() throws MojoExecutionException, MojoFailureException { StringBuilder buffer = new StringBuilder(); @@ -181,10 +169,10 @@ public class AvailableDataMojo extends AbstractMojo { String format = "\nFound %s %ss in %s provider(s) : %s\n"; buffer.append(String.format(format, - nbData, - dataType, - tagValueMetadatasProviders.size(), - tagValueMetadatasProviders.keySet()) + nbData, + dataType, + tagValueMetadatasProviders.size(), + tagValueMetadatasProviders.keySet()) ); for (Map.Entry<String, TagValueMetadatasProvider> e : tagValueMetadatasProviders.entrySet()) { @@ -209,46 +197,6 @@ public class AvailableDataMojo extends AbstractMojo { data.toString(buffer, e2); } } - } else if (data == AvailableData.stereotype) { - - int nbData = 0; - for (StereotypeMetadatasProvider provider : stereotypeMetadatasProviders.values()) { - currentStereotypeMetadatasProvider = provider; - nbData += data.getData(this).size(); - } - currentStereotypeMetadatasProvider = null; - - String format = "\nFound %s %ss in %s provider(s) : %s\n"; - - buffer.append(String.format(format, - nbData, - dataType, - stereotypeMetadatasProviders.size(), - stereotypeMetadatasProviders.keySet()) - ); - - for (Map.Entry<String, StereotypeMetadatasProvider> e : stereotypeMetadatasProviders.entrySet()) { - String providerName = e.getKey(); - currentStereotypeMetadatasProvider = e.getValue(); - Map<String, ?> map = data.getData(this); - - int size = map.size(); - buffer.append("\nProvider [").append(providerName).append("] - "); - if (size == 0) { - buffer.append("No available ").append(dataType).append("."); - } else if (size == 1) { - buffer.append("Found one ").append(dataType).append(" : "); - } else { - buffer.append("Found "); - buffer.append(size); - buffer.append(" "); - buffer.append(dataType); - buffer.append("s : "); - } - for (Map.Entry<String, ?> e2 : map.entrySet()) { - data.toString(buffer, e2); - } - } } else { Map<String, ?> map = data.getData(this); @@ -351,45 +299,6 @@ public class AvailableDataMojo extends AbstractMojo { buffer.append("\' : "); buffer.append(t(((TagValueMetadata) value).getDescription())); } - }, - stereotype { - @Override - public Map<String, ?> getData(AvailableDataMojo mojo) { - Set<StereotypeMetadata> stereotypes = mojo.currentStereotypeMetadatasProvider.getStereotypes(); - return Maps.uniqueIndex(stereotypes, new Function<StereotypeMetadata, String>() { - @Override - public String apply(StereotypeMetadata input) { - return input.getName(); - } - }); - } - - @Override - String toString(Object data) { - StereotypeMetadata d = (StereotypeMetadata) data; - StringBuilder sb = new StringBuilder(); - Set<Class<?>> targets = d.getTargets(); - for (Class<?> aClass : targets) { - sb.append(", ").append(aClass.getSimpleName()); - } - String result = sb.toString(); - if (targets.size() > 0) { - result = result.substring(2); - } - return result; - } - - @Override - void toString(StringBuilder buffer, Map.Entry<String, ?> e) { - String name = e.getKey(); - Object value = e.getValue(); - buffer.append("\n ["); - buffer.append(name); - buffer.append("] targets : '"); - buffer.append(toString(value)); - buffer.append("\' : "); - buffer.append(t(((StereotypeMetadata) value).getDescription())); - } }; abstract Map<String, ?> getData(AvailableDataMojo mojo); diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/StereotypesReport.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/StereotypesReport.java deleted file mode 100644 index 34ed9cb..0000000 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/StereotypesReport.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.nuiton.eugene.plugin; - -/* - * #%L - * EUGene :: Maven plugin - * %% - * Copyright (C) 2006 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import org.apache.maven.plugins.annotations.Component; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.plugins.annotations.ResolutionScope; -import org.apache.maven.reporting.MavenReportException; -import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; -import org.nuiton.eugene.plugin.renderer.StereotypesReportRenderer; - -import java.util.Locale; -import java.util.Map; - -/** - * To report a {@link StereotypeMetadatasProvider}. - * - * Created on 5/31/14. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 2.10 - */ -@Mojo(name = "stereotypes-report", requiresReports = true, - requiresDependencyResolution = ResolutionScope.COMPILE) -public class StereotypesReport extends AbstractEugeneReport<StereotypeMetadatasProvider> { - - /** - * Name of the stereotypes provider. - * - * This is the role-hint given to the tag value provider to describe. - */ - @Parameter(property = "eugene.providerName", defaultValue = "${project.artifactId}", required = true) - protected String providerName; - - @Component(role = StereotypeMetadatasProvider.class) - protected Map<String, StereotypeMetadatasProvider> providers; - - @Override - protected StereotypeMetadatasProvider initData(Locale locale) throws MavenReportException { - - StereotypeMetadatasProvider provider = providers.get(providerName); - - if (provider == null) { - - String errorMessage = i18n.format(getOutputName(), locale, "stereotypeProvider.not.found", providerName); - throw new MavenReportException(errorMessage); - - } - - return provider; - - } - - @Override - protected StereotypesReportRenderer createRenderer(Locale locale, StereotypeMetadatasProvider data) { - - return new StereotypesReportRenderer( - getSink(), i18n, locale, getOutputName(), javaDocDestDir, jxrDestDir, data); - - } - - @Override - public String getOutputName() { - return "stereotypes-report"; - } - -} diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ClassBean.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ClassBean.java index 450797d..7fec0ea 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ClassBean.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ClassBean.java @@ -50,7 +50,9 @@ public class ClassBean extends ElementBean { for (AttributeBean attributeBean : attributes) { for (Map.Entry<String, String> entry : attributeBean.tagValues.entrySet()) { - attributesTagValues.put(attributeBean.name + "." + entry.getKey(), entry.getValue()); + if (!"true".equals(entry.getValue())) { + attributesTagValues.put(attributeBean.name + "." + entry.getKey(), entry.getValue()); + } } } return attributesTagValues; @@ -60,7 +62,7 @@ public class ClassBean extends ElementBean { Set<String> attributesStereotypes = new TreeSet<>(); for (AttributeBean attributeBean : attributes) { - for (String entry : attributeBean.stereotypes) { + for (String entry : attributeBean.getStereotypes()) { attributesStereotypes.add(attributeBean.name + "." + entry); } } diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ElementBean.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ElementBean.java index 8774075..7791ae2 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ElementBean.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ElementBean.java @@ -22,13 +22,10 @@ package org.nuiton.eugene.plugin.modelextension; * #L% */ -import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; -import org.nuiton.eugene.models.tagvalue.TagValueAble; - +import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; import java.util.TreeMap; -import java.util.TreeSet; /** * Created on 10/09/16. @@ -39,12 +36,10 @@ public class ElementBean implements Comparable<ElementBean> { protected final String name; protected final Map<String, String> tagValues; - protected final Set<String> stereotypes; public ElementBean(String name) { this.name = name; this.tagValues = new TreeMap<>(); - this.stereotypes = new TreeSet<>(); } public String getName() { @@ -56,7 +51,13 @@ public class ElementBean implements Comparable<ElementBean> { } public Set<String> getStereotypes() { - return stereotypes; + Set<String> result = new LinkedHashSet<>(); + for (Map.Entry<String, String> entry : tagValues.entrySet()) { + if ("true".equals(entry.getValue())) { + result.add(entry.getKey()); + } + } + return result; } @Override @@ -64,9 +65,4 @@ public class ElementBean implements Comparable<ElementBean> { return name.compareTo(o.name); } - public <T extends TagValueAble & WithStereotypes> void load(T tag) { - this.tagValues.putAll(tag.getTagValues()); - this.stereotypes.addAll(tag.getStereotypes()); - } - } diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ModelBeanBuilder.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ModelBeanBuilder.java index 3162419..fa9d5b6 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ModelBeanBuilder.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/modelextension/ModelBeanBuilder.java @@ -22,7 +22,7 @@ package org.nuiton.eugene.plugin.modelextension; * #L% */ -import org.nuiton.eugene.models.extension.stereotype.InvalidStereotypeSyntaxException; +import org.nuiton.eugene.models.extension.tagvalue.InvalidStereotypeSyntaxException; import org.nuiton.eugene.models.extension.tagvalue.InvalidTagValueSyntaxException; import org.nuiton.eugene.models.object.reader.extension.ModelExtensionFileParser; import org.nuiton.eugene.models.object.reader.extension.ModelExtensionFileParserCallback; @@ -106,7 +106,7 @@ public class ModelBeanBuilder implements ModelExtensionFileParserCallback { @Override public boolean onModelStereotypeFound(String stereotype) { - addStereotype(modelBean, stereotype); + addTagValue(modelBean, stereotype, "true"); modelStereotypeHits++; return true; } @@ -120,7 +120,7 @@ public class ModelBeanBuilder implements ModelExtensionFileParserCallback { @Override public boolean onPackageStereotypeFound(String packageName, String stereotype) { - addStereotype(modelBean.getOrCreatePackage(packageName), stereotype); + addTagValue(modelBean.getOrCreatePackage(packageName), stereotype, "true"); packageStereotypeHits++; return true; } @@ -134,7 +134,7 @@ public class ModelBeanBuilder implements ModelExtensionFileParserCallback { @Override public boolean onClassStereotypeFound(String className, String stereotype) { - addStereotype(modelBean.getOrCreateClass(className), stereotype); + addTagValue(modelBean.getOrCreateClass(className), stereotype, "true"); classStereotypeHits++; return true; } @@ -148,7 +148,7 @@ public class ModelBeanBuilder implements ModelExtensionFileParserCallback { @Override public boolean onAttributeStereotypeFound(String className, String attributeName, String stereotype) { - addStereotype(modelBean.getOrCreateClassAttribute(className, attributeName), stereotype); + addTagValue(modelBean.getOrCreateClassAttribute(className, attributeName), stereotype, "true"); classAttributeStereotypeHits++; return true; } @@ -164,7 +164,4 @@ public class ModelBeanBuilder implements ModelExtensionFileParserCallback { elementBean.getTagValues().put(tag, value); } - protected void addStereotype(ElementBean elementBean, String stereotype) { - elementBean.getStereotypes().add(stereotype); - } } diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/renderer/StereotypesReportRenderer.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/renderer/StereotypesReportRenderer.java deleted file mode 100644 index 1605b25..0000000 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/renderer/StereotypesReportRenderer.java +++ /dev/null @@ -1,177 +0,0 @@ -package org.nuiton.eugene.plugin.renderer; - -/* - * #%L - * EUGene :: Maven plugin - * %% - * Copyright (C) 2006 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import org.apache.commons.collections4.CollectionUtils; -import org.apache.maven.doxia.sink.Sink; -import org.codehaus.plexus.i18n.I18N; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; - -import java.util.Locale; -import java.util.Set; - -/** - * Created on 5/31/14. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 2.10 - */ -public class StereotypesReportRenderer extends AbstractEugeneReportRenderer<StereotypeMetadatasProvider, StereotypeMetadata> { - - public StereotypesReportRenderer(Sink sink, - I18N i18n, - Locale locale, - String bundleName, - String javaDocDestDir, - String jxrDestDir, - StereotypeMetadatasProvider data) { - super(sink, i18n, locale, bundleName, javaDocDestDir, jxrDestDir, data); - } - - @Override - protected Set<StereotypeMetadata> getDataDetails() { - return data.getStereotypes(); - } - - @Override - protected String getProviderDescription(StereotypeMetadatasProvider data) { - return data.getDescription(); - } - - @Override - protected void renderSummaryTable(StereotypeMetadatasProvider provider, Set<StereotypeMetadata> details) { - - sink.section2(); - - sink.sectionTitle2(); - sink.text(getText("report.provider.stereotype.name")); - sink.text(provider.getDescription()); - sink.sectionTitle2_(); - - if (CollectionUtils.isEmpty(details)) { - - sink.text(getText("report.noStereotype")); - - } else { - - sink.section3(); - - sink.sectionTitle3(); - sink.text(getText("report.summary.stereotype")); - sink.sectionTitle3_(); - - sink.lineBreak(); - - - sink.table(); - - sink.tableRow(); - sinkHeaderCellText(getText("report.stereotype.name")); - sinkHeaderCellText(getText("report.stereotype.description")); - sink.tableRow_(); - - for (StereotypeMetadata entry : details) { - - String stereotypeName = entry.getName(); - - sink.tableRow(); - sinkCellLink(stereotypeName, "./" + bundleName + ".html#detail_" + stereotypeName); - sinkCellText(entry.getDescription()); - sink.tableRow_(); - - } - - sink.table_(); - - sink.section3_(); - - } - - sink.section2_(); - - } - - @Override - protected void renderDetail(StereotypeMetadata detail) { - - sink.section2(); - sink.sectionTitle2(); - sink.anchor("detail_" + detail.getName()); - sink.text(getText("report.detail.stereotype.title") + " " + detail.getName()); - sink.anchor_(); - sink.sectionTitle2_(); - - sink.lineBreak(); - - sink.table(); - - sink.tableRow(); - sinkHeaderCellText(getText("report.detail.stereotype.name")); - sinkCellText(detail.getName()); - sink.tableRow_(); - - sink.tableRow(); - sinkHeaderCellText(getText("report.detail.stereotype.description")); - sinkCellText(detail.getDescription()); - sink.tableRow_(); - - sink.tableRow(); - sinkHeaderCellText(getText("report.detail.stereotype.target")); - sink.tableCell(); - - renderTargets(detail.getTargets()); - - sink.tableCell_(); - sink.tableRow_(); - - sink.table_(); - - sink.section3(); - sink.sectionTitle3(); - sink.text(getText("report.detail.stereotype.usage.title")); - sink.sectionTitle3_(); - - sink.text("//TODO Example of usage of this stereotype"); - - sink.section3_(); - - sink.section2_(); - - } - - @Override - protected String getEugeneDocLink() { - - String url; - - if (locale.getCountry().equals(Locale.FRENCH.getCountry())) { - url = "http://eugene.nuiton.org/v/latest/fr/eugene/stereotypes.html"; - } else { - url = "http://eugene.nuiton.org/v/latest/eugene/stereotypes.html"; - } - - return url; - - } -} diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java index 3eb3787..06e8fd8 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java @@ -24,7 +24,7 @@ package org.nuiton.eugene.plugin.writer; import org.nuiton.eugene.ModelReader; import org.nuiton.eugene.models.Model; -import org.nuiton.eugene.models.extension.stereotype.InvalidStereotypeSyntaxException; +import org.nuiton.eugene.models.extension.tagvalue.InvalidStereotypeSyntaxException; import org.nuiton.eugene.models.extension.tagvalue.InvalidTagValueSyntaxException; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.reader.extension.LoadModelExtension; diff --git a/eugene/src/main/java/org/nuiton/eugene/EugeneCoreStereotypes.java b/eugene/src/main/java/org/nuiton/eugene/EugeneCoreStereotypes.java deleted file mode 100644 index 92cb6ec..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/EugeneCoreStereotypes.java +++ /dev/null @@ -1,161 +0,0 @@ -package org.nuiton.eugene; - -/*- - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2016 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.StereotypeUtil; -import org.nuiton.eugene.models.extension.stereotype.provider.DefaultStereotypeMetadatasProvider; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelPackage; - -import java.util.Set; - -import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; - -/** - * Defines all stereotypes managed by Eugene. - * - * In another library using eugene, please extends this contract to put your - * own stereotypes, to get a unique place where to find stereotypes. - * - * Created on 24/09/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @plexus.component role="org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider" role-hint="eugene" - * @since 3.0 - */ -public class EugeneCoreStereotypes extends DefaultStereotypeMetadatasProvider { - - @Override - public String getDescription() { - return t("eugene.core.stereotypes"); - } - - public enum Store implements StereotypeMetadata { - /** - * Stereotype to mark an attribute with multiplicity as ordered. - * - * It means that order of insertion is maintained: in Java, it will lead - * to a collection typed with {@link java.util.List} or {@link java.util.LinkedHashSet} - * or {@link java.util.LinkedHashMap}. - * - * @since 2.8 - */ - ordered(n("eugene.core.stereotypes.ordered"), ObjectModelAttribute.class), - /** - * Stereotype to mark an attribute with multiplicity as unique. - * - * It means that uniqueness of elements is maintained in the collection: in Java, it - * will lead to a collection typed with {@link java.util.Set}. - */ - unique(n("eugene.core.stereotypes.unique"), ObjectModelAttribute.class), - /** - * Stereotype to skip generation for some templates. - */ - skip(n("eugene.core.stereotypes.skip"), ObjectModelClassifier.class, ObjectModelPackage.class); - - private final Set<Class<?>> targets; - private final String i18nDescriptionKey; - - Store(String i18nDescriptionKey, Class<?>... targets) { - this.targets = ImmutableSet.copyOf(targets); - this.i18nDescriptionKey = i18nDescriptionKey; - } - - @Override - public String getName() { - return name(); - } - - @Override - public Set<Class<?>> getTargets() { - return targets; - } - - @Override - public String getDescription() { - return t(i18nDescriptionKey); - } - - @Override - public boolean isDeprecated() { - return false; - } - - } - - public EugeneCoreStereotypes() { - super((StereotypeMetadata[]) Store.values()); - } - - /** - * Check if the given attribute has the {@link Store#ordered} stereotype. - * - * @param attribute attribute to test - * @return {@code true} if stereotype was found, {@code false otherwise} - * @see Store#ordered - * @since 2.9 - */ - public static boolean hasOrderedStereotype(ObjectModelAttribute attribute) { - return StereotypeUtil.findDirectStereotype(Store.ordered, attribute); - } - - /** - * Check if the given attribute has the {@link Store#unique} stereotype. - * - * @param attribute attribute to test - * @return {@code true} if stereotype was found, {@code false otherwise} - * @see Store#unique - * @since 2.9 - */ - public static boolean hasUniqueStereotype(ObjectModelAttribute attribute) { - return StereotypeUtil.findDirectStereotype(Store.unique, attribute); - } - - /** - * Check if the given classifier has the {@link Store#skip} stereotype. - * - * @param classifier classifier to test - * @param aPackage package to test - * @return {@code true} if stereotype was found, {@code false otherwise} - * @see Store#skip - * @since 2.9 - */ - public static boolean hasSkipStereotype(ObjectModelClassifier classifier, ObjectModelPackage aPackage) { - return StereotypeUtil.findDirectStereotype(Store.skip, classifier, aPackage); - } - - /** - * Check if the given package has the {@link Store#skip} stereotype. - * - * @param aPackage package to test - * @return {@code true} if stereotype was found, {@code false otherwise} - * @see Store#skip - */ - public static boolean hasSkipStereotype(ObjectModelPackage aPackage) { - return StereotypeUtil.findDirectStereotype(Store.skip, aPackage); - } -} diff --git a/eugene/src/main/java/org/nuiton/eugene/EugeneCoreTagValues.java b/eugene/src/main/java/org/nuiton/eugene/EugeneCoreTagValues.java index 8922adf..c146772 100644 --- a/eugene/src/main/java/org/nuiton/eugene/EugeneCoreTagValues.java +++ b/eugene/src/main/java/org/nuiton/eugene/EugeneCoreTagValues.java @@ -112,7 +112,30 @@ public class EugeneCoreTagValues extends DefaultTagValueMetadatasProvider { * * @since 3.0 */ - attributeGeneric(n("eugene.core.tagValues.attributeGeneric"), String.class, null, ObjectModelAttribute.class); + attributeGeneric(n("eugene.core.tagValues.attributeGeneric"), String.class, null, ObjectModelAttribute.class), + + /** + * Stereotype to mark an attribute with multiplicity as ordered. + * + * It means that order of insertion is maintained: in Java, it will lead + * to a collection typed with {@link java.util.List} or {@link java.util.LinkedHashSet} + * or {@link java.util.LinkedHashMap}. + * + * @since 2.8 + */ + ordered(n("eugene.core.stereotypes.ordered"), boolean.class, null,ObjectModelAttribute.class), + /** + * Stereotype to mark an attribute with multiplicity as unique. + * + * It means that uniqueness of elements is maintained in the collection: in Java, it + * will lead to a collection typed with {@link java.util.Set}. + */ + unique(n("eugene.core.stereotypes.unique"), boolean.class, null,ObjectModelAttribute.class), + /** + * Stereotype to skip generation for some templates. + */ + skip(n("eugene.core.stereotypes.skip"), boolean.class, null,ObjectModelClassifier.class, ObjectModelPackage.class); + private final Set<Class<?>> targets; private final Class<?> type; @@ -204,13 +227,13 @@ public class EugeneCoreTagValues extends DefaultTagValueMetadatasProvider { } /** - * Cherche et renvoie le prefixe i18n à utiliser sur cet element, sinon sur + * Cherche et renvoie le préfixe i18n à utiliser sur cet element, sinon sur * le model. * - * @param element l'élément à tester + * @param element element to seek * @param aPackage package to seek - * @param model le modele utilisé - * @return le prefix i18n ou <code>null</code> si non spécifié + * @param model model to seek + * @return le préfixe i18n ou <code>null</code> si non spécifié * @since 2.3 */ public String getI18nPrefixTagValue(ObjectModelElement element, ObjectModelPackage aPackage, ObjectModel model) { @@ -261,4 +284,52 @@ public class EugeneCoreTagValues extends DefaultTagValueMetadatasProvider { public String getAttributeGenericTagValue(ObjectModelAttribute attribute) { return TagValueUtil.findTagValue(Store.attributeGeneric, attribute); } + + /** + * Check if the given attribute has the {@link Store#ordered} boolean tag value. + * + * @param attribute attribute to test + * @return {@code true} if boolean tag value was found, {@code false otherwise} + * @see Store#ordered + * @since 2.9 + */ + public static boolean isOrdered(ObjectModelAttribute attribute) { + return TagValueUtil.findBooleanTagValue(Store.ordered, attribute); + } + + /** + * Check if the given attribute has the {@link Store#unique} boolean tag value. + * + * @param attribute attribute to test + * @return {@code true} if boolean tag value was found, {@code false otherwise} + * @see Store#unique + * @since 2.9 + */ + public static boolean isUnique(ObjectModelAttribute attribute) { + return TagValueUtil.findBooleanTagValue(Store.unique, attribute); + } + + /** + * Check if the given classifier has the {@link Store#skip} boolean tag value. + * + * @param classifier classifier to test + * @param aPackage package to test + * @return {@code true} if boolean tag value was found, {@code false otherwise} + * @see Store#skip + * @since 2.9 + */ + public static boolean isSkip(ObjectModelClassifier classifier, ObjectModelPackage aPackage) { + return TagValueUtil.findBooleanTagValue(Store.skip, classifier, aPackage); + } + + /** + * Check if the given package has the {@link Store#skip} boolean tag value. + * + * @param aPackage package to test + * @return {@code true} if boolean tag value was found, {@code false otherwise} + * @see Store#skip + */ + public static boolean isSkip(ObjectModelPackage aPackage) { + return TagValueUtil.findBooleanTagValue(Store.skip, aPackage); + } } diff --git a/eugene/src/main/java/org/nuiton/eugene/ModelReader.java b/eugene/src/main/java/org/nuiton/eugene/ModelReader.java index 8332479..c49f942 100644 --- a/eugene/src/main/java/org/nuiton/eugene/ModelReader.java +++ b/eugene/src/main/java/org/nuiton/eugene/ModelReader.java @@ -23,7 +23,6 @@ package org.nuiton.eugene; import org.nuiton.eugene.models.Model; -import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; import org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider; import java.io.File; @@ -61,14 +60,7 @@ public abstract class ModelReader<M extends Model> { * @since 2.9 */ protected TagValueMetadatasProvider tagValueMetadatasProvider; - - /** - * Provider of stereotypes. - * - * @since 2.9 - */ - protected StereotypeMetadatasProvider stereotypeMetadatasProvider; - + /** * Gets the type of model. * diff --git a/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java b/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java index 255371d..edc303b 100644 --- a/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java +++ b/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java @@ -22,7 +22,7 @@ package org.nuiton.eugene.java; import org.apache.commons.lang3.StringUtils; -import org.nuiton.eugene.EugeneCoreStereotypes; +import org.nuiton.eugene.EugeneCoreTagValues; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; @@ -351,13 +351,13 @@ public class JavaGeneratorUtil extends GeneratorUtil { } public static boolean isOrdered(ObjectModelAttribute attr) { - return attr.isOrdered() || EugeneCoreStereotypes.hasOrderedStereotype(attr); + return attr.isOrdered() || EugeneCoreTagValues.isOrdered(attr); } public static Class<?> getCollectionType(ObjectModelAttribute attr) { boolean ordered = isOrdered(attr); - boolean unique = EugeneCoreStereotypes.hasUniqueStereotype(attr); + boolean unique = EugeneCoreTagValues.isUnique(attr); // Change type for Multiple attribute Class<?> result; @@ -381,7 +381,7 @@ public class JavaGeneratorUtil extends GeneratorUtil { public static Class<?> getCollectionInstanceType(ObjectModelAttribute attr) { boolean ordered = isOrdered(attr); - boolean unique = EugeneCoreStereotypes.hasUniqueStereotype(attr); + boolean unique = EugeneCoreTagValues.isUnique(attr); // Change type for Multiple attribute Class<?> result; diff --git a/eugene/src/main/java/org/nuiton/eugene/models/Model.java b/eugene/src/main/java/org/nuiton/eugene/models/Model.java index 7e3fe2d..74180c7 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/Model.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/Model.java @@ -23,7 +23,6 @@ package org.nuiton.eugene.models; -import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; import org.nuiton.eugene.models.stereotype.StereotypeAble; import org.nuiton.eugene.models.tagvalue.TagValueAble; @@ -31,7 +30,7 @@ import org.nuiton.eugene.models.tagvalue.TagValueAble; /** * Model. */ -public interface Model extends TagValueAble, StereotypeAble, WithTagValues, WithStereotypes { +public interface Model extends TagValueAble, StereotypeAble, WithTagValues { /** * Plexus role name diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MismatchStereotypeTargetException.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MismatchStereotypeTargetException.java deleted file mode 100644 index 4323580..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MismatchStereotypeTargetException.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.nuiton.eugene.models.extension.stereotype; - -/* - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -/** - * Created on 4/27/14. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.0 - */ -public class MismatchStereotypeTargetException extends Exception { - - private static final long serialVersionUID = 1L; -} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeMetadata.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeMetadata.java deleted file mode 100644 index 42d81de..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeMetadata.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.nuiton.eugene.models.extension.stereotype; - -/*- - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2016 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import java.util.Set; - -/** - * To define a stereotype metadata. - * - * Created on 24/09/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public interface StereotypeMetadata { - - /** - * Get the stereotype name. - * - * @return the stereotype name - */ - String getName(); - - /** - * Define the types of object model api which can use this tag value. - * - * @return the set of target object model element which can accept the tag value. - */ - Set<Class<?>> getTargets(); - - /** - * Get the i18n documentation key. - * - * @return the i18n documentation key - */ - String getDescription(); - - /** - * @return {@code true} if this stereotype is deprecated - */ - boolean isDeprecated(); - -} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeNotFoundException.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeNotFoundException.java deleted file mode 100644 index d97384e..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeNotFoundException.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.nuiton.eugene.models.extension.stereotype; - -/* - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -/** - * Created on 4/27/14. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.0 - */ -public class StereotypeNotFoundException extends Exception { - - private static final long serialVersionUID = 1L; -} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeUtil.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeUtil.java deleted file mode 100644 index 2aac49f..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/StereotypeUtil.java +++ /dev/null @@ -1,153 +0,0 @@ -package org.nuiton.eugene.models.extension.stereotype; - -/*- - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2016 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.ImmutableSet; -import org.nuiton.eugene.models.object.ObjectModelElement; -import org.nuiton.eugene.models.object.ObjectModelPackage; - -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Created on 24/09/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.0 - */ -public class StereotypeUtil { - - protected static final Pattern PACKAGE_STEREOTYPE_PATTERN = Pattern - .compile("^package\\.((?:[_a-zA-Z0-9]+\\.)+)?(?:(stereotype)?)$"); - - protected static final Pattern STEREOTYPE_PATTERN = Pattern - .compile("^((?:[_a-zA-Z0-9]+\\.)+(?:_?[a-zA-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(stereotype)?)$"); - - - public static Matcher getMatcher(String key) throws InvalidStereotypeSyntaxException { - Matcher matcher = STEREOTYPE_PATTERN.matcher(key); - if (!matcher.find()) { - throw new InvalidStereotypeSyntaxException(); - } - return matcher; - } - - public static Matcher getPackageMatcher(String key) throws InvalidStereotypeSyntaxException { - Matcher matcher = PACKAGE_STEREOTYPE_PATTERN.matcher(key); - if (!matcher.find()) { - throw new InvalidStereotypeSyntaxException(); - } - return matcher; - } - - public static Set<String> getStereotypes(String value) { - String[] split = value.split("\\s*,\\s*"); - return ImmutableSet.<String>builder().add(split).build(); - } - - - - /** - * Seek for a stereotype amoung elements given using these rules: - * <ul> - * <li>Look into {@code elements} and return the first element with this stereotype found.</li> - * </ul> - * <strong>Note:</strong> Order of {@code elements} is important, better then to - * always starts from specialized to more general level (for example from attribute, - * to classifier or model). - * - * @param stereotypeName stereotype to find - * @param elements not null elements to test - * @return {@code true} if found stereotype, {@code false} otherwise - * @since 3.0 - */ - public static boolean findDirectStereotype(StereotypeMetadata stereotypeName, WithStereotypes... elements) { - boolean value = false; - for (WithStereotypes element : elements) { - if (element != null) { - if (element instanceof ObjectModelPackage) { - value = findDirectStereotype(stereotypeName, (ObjectModelPackage) element); - } else { - value = element.hasStereotype(stereotypeName.getName()); - } - if (value) { - break; - } - } - } - - return value; - - } - - /** - * Seek for a stereotype amoung elements given using these rules: - * <ul> - * <li>Look into {@code elements} and return the first element with this stereotype found.</li> - * <li>If not found, Look into {@code elements} declaringElement (for each - * element that is a {@link ObjectModelElement} and return the first not empty tag - * element with this stereotype found.</li> - * </ul> - * <strong>Note:</strong> Order of {@code elements} is important, better then to - * always starts from specialized to more general level (for example from attribute, - * to classifier or model). - * - * @param stereotypeName stereotype to find - * @param elements not null elements to test - * @return {@code true} if found stereotype, {@code false} otherwise - * @since 3.0 - */ - public static boolean findStereotype(StereotypeMetadata stereotypeName, WithStereotypes... elements) { - - boolean result = findDirectStereotype(stereotypeName, elements); - - if (result) { - return result; - } - - for (WithStereotypes element : elements) { - if (element instanceof ObjectModelElement) { - // try in declaring element - ObjectModelElement declaringElement = ((ObjectModelElement) element).getDeclaringElement(); - if (declaringElement != null) { - boolean value = findStereotype(stereotypeName, declaringElement); - if (value) { - return value; - } - } - } - } - return false; - - } - - protected static boolean findDirectStereotype(StereotypeMetadata stereotypeName, ObjectModelPackage element) { - boolean withStereotype = element.hasStereotype(stereotypeName.getName()); - if (!withStereotype && element.getParentPackage() != null) { - withStereotype = findDirectStereotype(stereotypeName, element.getParentPackage()); - } - return withStereotype; - } - -} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/WithStereotypes.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/WithStereotypes.java deleted file mode 100644 index 77b2f24..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/WithStereotypes.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.nuiton.eugene.models.extension.stereotype; - -/* - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import java.util.Set; - -/** - * Created on 4/26/14. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 2.9 - */ -public interface WithStereotypes { - - /** - * Returns the stereotypes names associated with this element. - * - * @return a Collection containing all stereotypes names associated with this element as String. - */ - Set<String> getStereotypes(); - - /** - * Returns whether this element has a stereotype corresponding to the given name, or not. - * - * @param stereotypeName stereotype name - * @return a boolean indicating whether this element has a stereotype corresponding to the given name, or not. - */ - boolean hasStereotype(String stereotypeName); - - /** - * Add a stereotype. - * - * @param stereotype stereotype to add - */ - void addStereotype(String stereotype); - - void removeStereotype(String stereotype); -} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/AggregateStereotypeMetadatasProvider.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/AggregateStereotypeMetadatasProvider.java deleted file mode 100644 index aba170a..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/AggregateStereotypeMetadatasProvider.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.nuiton.eugene.models.extension.stereotype.provider; - -/* - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2014 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableSet; -import org.nuiton.eugene.models.extension.stereotype.MismatchStereotypeTargetException; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.StereotypeNotFoundException; - -import java.util.Iterator; -import java.util.ServiceLoader; - -/** - * Created on 4/27/14. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 2.9 - */ -public class AggregateStereotypeMetadatasProvider implements StereotypeMetadatasProvider, Iterable<StereotypeMetadatasProvider> { - - protected final Iterable<StereotypeMetadatasProvider> providers; - - /** - * Obtain a new provider of stereotype definitions. - * - * @param loader the classloader to use (if none given will use the one of the current thread) - */ - public AggregateStereotypeMetadatasProvider(ClassLoader loader) { - if (loader == null) { - - // use the current thread loader - loader = Thread.currentThread().getContextClassLoader(); - } - this.providers = ServiceLoader.load(StereotypeMetadatasProvider.class, loader); - - } - - /** - * Obtain a new provider of stereotype definitions. - * - * @param providers the list of providers to use in the factory - */ - public AggregateStereotypeMetadatasProvider(Iterable<StereotypeMetadatasProvider> providers) { - this.providers = providers; - } - - @Override - public Iterator<StereotypeMetadatasProvider> iterator() { - return providers.iterator(); - } - - @Override - public String getDescription() { - return null; - } - - @Override - public ImmutableSet<StereotypeMetadata> getStereotypes() { - ImmutableSet.Builder<StereotypeMetadata> builder = ImmutableSet.builder(); - for (StereotypeMetadatasProvider tagValuesMetadatasProvider : providers) { - builder.addAll(tagValuesMetadatasProvider.getStereotypes()); - } - - return builder.build(); - } - - @Override - public void validate(String stereotypeName, Class<?> type) throws StereotypeNotFoundException, MismatchStereotypeTargetException { - for (StereotypeMetadatasProvider provider : providers) { - try { - provider.validate(stereotypeName, type); - return; - } catch (StereotypeNotFoundException e) { - // do nothing here - } - } - throw new StereotypeNotFoundException(); - - } - - @Override - public Optional<StereotypeMetadata> getStereotype(String stereotypeName) { - for (StereotypeMetadatasProvider provider : providers) { - Optional<StereotypeMetadata> result = provider.getStereotype(stereotypeName); - if (result.isPresent()) { - return result; - } - } - return Optional.absent(); - } - -} diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/DefaultStereotypeMetadatasProvider.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/DefaultStereotypeMetadatasProvider.java deleted file mode 100644 index 0c76110..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/DefaultStereotypeMetadatasProvider.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.nuiton.eugene.models.extension.stereotype.provider; - -/*- - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2016 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableSet; -import org.nuiton.eugene.models.extension.stereotype.MismatchStereotypeTargetException; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.StereotypeNotFoundException; - -import java.util.Set; - -/** - * Created on 24/09/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public abstract class DefaultStereotypeMetadatasProvider implements StereotypeMetadatasProvider { - - protected Set<StereotypeMetadata> stereotypes; - - protected DefaultStereotypeMetadatasProvider(StereotypeMetadata... stereotypes) { - this.stereotypes = ImmutableSet.copyOf(stereotypes); - } - - @Override - public Set<StereotypeMetadata> getStereotypes() { - return stereotypes; - } - - @Override - public void validate(String stereotypeName, Class<?> type) throws StereotypeNotFoundException, MismatchStereotypeTargetException { - Optional<StereotypeMetadata> def = getStereotype(stereotypeName); - - if (!def.isPresent()) { - throw new StereotypeNotFoundException(); - } - - boolean valid = false; - - for (Class<?> target : def.get().getTargets()) { - if (target.equals(type) || target.isAssignableFrom(type)) { - - // found one accepting target - valid = true; - break; - } - } - if (!valid) { - throw new MismatchStereotypeTargetException(); - } - } - - @Override - public Optional<StereotypeMetadata> getStereotype(String stereotypeName) { - for (StereotypeMetadata metadata : stereotypes) { - if (stereotypeName.equals(metadata.getName())) { - return Optional.of(metadata); - } - } - return Optional.absent(); - } - -} \ No newline at end of file diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/StereotypeMetadatasProvider.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/StereotypeMetadatasProvider.java deleted file mode 100644 index 4e58017..0000000 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/provider/StereotypeMetadatasProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.nuiton.eugene.models.extension.stereotype.provider; - -/*- - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2016 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import com.google.common.base.Optional; -import org.nuiton.eugene.models.extension.stereotype.MismatchStereotypeTargetException; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.StereotypeNotFoundException; - -import java.util.Set; - -/** - * Created on 24/09/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public interface StereotypeMetadatasProvider { - - String getDescription(); - - Set<StereotypeMetadata> getStereotypes(); - - void validate(String stereotypeName, Class<?> type) throws StereotypeNotFoundException, MismatchStereotypeTargetException; - - Optional<StereotypeMetadata> getStereotype(String stereotypeName); - -} \ No newline at end of file diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/InvalidStereotypeSyntaxException.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/InvalidStereotypeSyntaxException.java similarity index 94% rename from eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/InvalidStereotypeSyntaxException.java rename to eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/InvalidStereotypeSyntaxException.java index 7aa8ef8..c06757f 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/InvalidStereotypeSyntaxException.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/InvalidStereotypeSyntaxException.java @@ -1,4 +1,4 @@ -package org.nuiton.eugene.models.extension.stereotype; +package org.nuiton.eugene.models.extension.tagvalue; /* * #%L diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MissingStereoTypeException.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/MissingStereoTypeException.java similarity index 98% rename from eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MissingStereoTypeException.java rename to eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/MissingStereoTypeException.java index 2b28d75..5663c4b 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/stereotype/MissingStereoTypeException.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/MissingStereoTypeException.java @@ -1,4 +1,4 @@ -package org.nuiton.eugene.models.extension.stereotype; +package org.nuiton.eugene.models.extension.tagvalue; /* * #%L diff --git a/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/TagValueUtil.java b/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/TagValueUtil.java index 3a5f220..c27a0b6 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/TagValueUtil.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/extension/tagvalue/TagValueUtil.java @@ -22,10 +22,12 @@ package org.nuiton.eugene.models.extension.tagvalue; * #L% */ +import com.google.common.collect.ImmutableSet; import org.apache.commons.lang3.StringUtils; import org.nuiton.eugene.models.object.ObjectModelElement; import org.nuiton.eugene.models.object.ObjectModelPackage; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -65,6 +67,10 @@ public class TagValueUtil { */ protected static final Pattern PACKAGE_TAG_VALUE_PATTERN = Pattern.compile( "^package\\.((?:[_a-zA-Z0-9]+\\.)+)(?:(tagvalue|tagValue)?)\\.((?:[_a-zA-Z0-9]+)+(?:\\.?[_a-zA-Z0-9]+)*)$"); + protected static final Pattern PACKAGE_STEREOTYPE_PATTERN = Pattern + .compile("^package\\.((?:[_a-zA-Z0-9]+\\.)+)?(?:(stereotype)?)$"); + protected static final Pattern STEREOTYPE_PATTERN = Pattern + .compile("^((?:[_a-zA-Z0-9]+\\.)+(?:_?[a-zA-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(stereotype)?)$"); public static Matcher getModelMatcher(String key) throws InvalidTagValueSyntaxException { Matcher matcher = MODEL_TAG_VALUE_PATTERN.matcher(key); @@ -212,4 +218,25 @@ public class TagValueUtil { return value; } + + public static Matcher getStereotypeMatcher(String key) throws InvalidStereotypeSyntaxException { + Matcher matcher = STEREOTYPE_PATTERN.matcher(key); + if (!matcher.find()) { + throw new InvalidStereotypeSyntaxException(); + } + return matcher; + } + + public static Matcher getPackageStereotypeMatcher(String key) throws InvalidStereotypeSyntaxException { + Matcher matcher = PACKAGE_STEREOTYPE_PATTERN.matcher(key); + if (!matcher.find()) { + throw new InvalidStereotypeSyntaxException(); + } + return matcher; + } + + public static Set<String> getStereotypes(String value) { + String[] split = value.split("\\s*,\\s*"); + return ImmutableSet.<String>builder().add(split).build(); + } } diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java index 27e949f..56d900d 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java @@ -22,7 +22,6 @@ package org.nuiton.eugene.models.object; -import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; import org.nuiton.eugene.models.stereotype.StereotypeAble; import org.nuiton.eugene.models.tagvalue.TagValueAble; @@ -34,7 +33,7 @@ import java.util.List; * * @author Cédric Pineau - pineau@codelutin.com */ -public interface ObjectModelElement extends TagValueAble, StereotypeAble, WithTagValues, WithStereotypes { +public interface ObjectModelElement extends TagValueAble, StereotypeAble, WithTagValues { /** * Returns the name of this element. diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelPackage.java b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelPackage.java index c37505c..2a15149 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelPackage.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelPackage.java @@ -22,7 +22,6 @@ package org.nuiton.eugene.models.object; * #L% */ -import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; import org.nuiton.eugene.models.stereotype.StereotypeAble; import org.nuiton.eugene.models.tagvalue.TagValueAble; @@ -35,7 +34,7 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 2.12 */ -public interface ObjectModelPackage extends TagValueAble, StereotypeAble, WithTagValues, WithStereotypes { +public interface ObjectModelPackage extends TagValueAble, StereotypeAble, WithTagValues { /** * @return the name of this package. diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java index b7396a9..95ccb29 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java @@ -27,7 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.ModelHelper; import org.nuiton.eugene.ModelReader; -import org.nuiton.eugene.models.extension.stereotype.InvalidStereotypeSyntaxException; +import org.nuiton.eugene.models.extension.tagvalue.InvalidStereotypeSyntaxException; import org.nuiton.eugene.models.extension.tagvalue.InvalidTagValueSyntaxException; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelClass; diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/CompactModelExtensionFileParser.java b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/CompactModelExtensionFileParser.java index a4dc731..b3b8990 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/CompactModelExtensionFileParser.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/CompactModelExtensionFileParser.java @@ -24,8 +24,6 @@ package org.nuiton.eugene.models.object.reader.extension; import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import java.io.File; import java.io.IOException; @@ -40,9 +38,6 @@ import java.util.List; */ public class CompactModelExtensionFileParser implements ModelExtensionFileParser { - /** Logger. */ - private static final Log log = LogFactory.getLog(CompactModelExtensionFileParser.class); - public CompactModelExtensionFileParser(boolean strictLoading) { this.strictLoading = strictLoading; } @@ -114,7 +109,7 @@ public class CompactModelExtensionFileParser implements ModelExtensionFileParser case PACKAGE: { if (line.startsWith(" ")) { - Preconditions.checkState(name != null, "Pas de nom de paquetage déclaré"); + Preconditions.checkState(name != null, "No package name defined"); line = line.trim(); @@ -142,7 +137,7 @@ public class CompactModelExtensionFileParser implements ModelExtensionFileParser if (line.startsWith(" ")) { - Preconditions.checkState(name != null, "Pas de nom de classe déclaré"); + Preconditions.checkState(name != null, "No class name defined"); line = line.trim(); diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/FlatModelExtensionFileParser.java b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/FlatModelExtensionFileParser.java index 3c605de..176f18d 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/FlatModelExtensionFileParser.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/FlatModelExtensionFileParser.java @@ -25,8 +25,7 @@ package org.nuiton.eugene.models.object.reader.extension; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.extension.stereotype.InvalidStereotypeSyntaxException; -import org.nuiton.eugene.models.extension.stereotype.StereotypeUtil; +import org.nuiton.eugene.models.extension.tagvalue.InvalidStereotypeSyntaxException; import org.nuiton.eugene.models.extension.tagvalue.InvalidTagValueSyntaxException; import org.nuiton.eugene.models.extension.tagvalue.TagValueUtil; import org.nuiton.eugene.models.object.reader.InvalidModelPropertiesException; @@ -108,7 +107,7 @@ public class FlatModelExtensionFileParser implements ModelExtensionFileParser { // model stereotype if (stereoTypeKey) { - Set<String> stereotypes = StereotypeUtil.getStereotypes(value); + Set<String> stereotypes = TagValueUtil.getStereotypes(value); for (String stereotype : stereotypes) { safe &= callback.onModelStereotypeFound(stereotype); } @@ -138,12 +137,12 @@ public class FlatModelExtensionFileParser implements ModelExtensionFileParser { if (stereoTypeKey) { // package stereotype - Matcher matcher = StereotypeUtil.getPackageMatcher(key); + Matcher matcher = TagValueUtil.getPackageStereotypeMatcher(key); String fqn = matcher.group(1); fqn = StringUtil.substring(fqn, 0, -1); // remove ended . - Set<String> stereotypes = StereotypeUtil.getStereotypes(value); + Set<String> stereotypes = TagValueUtil.getStereotypes(value); for (String stereotype : stereotypes) { safe &= callback.onPackageStereotypeFound(fqn, stereotype); } @@ -176,7 +175,7 @@ public class FlatModelExtensionFileParser implements ModelExtensionFileParser { // stereotype property // check key is ok - Matcher matcher = StereotypeUtil.getMatcher(key); + Matcher matcher = TagValueUtil.getStereotypeMatcher(key); String fqn = matcher.group(1); fqn = StringUtil.substring(fqn, 0, -1); // remove ended . @@ -184,7 +183,7 @@ public class FlatModelExtensionFileParser implements ModelExtensionFileParser { String target = matcher.group(2); String targetName = matcher.group(3); - Set<String> stereotypes = StereotypeUtil.getStereotypes(value); + Set<String> stereotypes = TagValueUtil.getStereotypes(value); for (String stereotype : stereotypes) { if (CLASS.equals(target)) { diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/LoadModelExtension.java b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/LoadModelExtension.java index 43a6ca8..aa639a4 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/LoadModelExtension.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/LoadModelExtension.java @@ -25,12 +25,7 @@ package org.nuiton.eugene.models.object.reader.extension; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.EugeneCoreTagValues; -import org.nuiton.eugene.models.extension.stereotype.InvalidStereotypeSyntaxException; -import org.nuiton.eugene.models.extension.stereotype.MismatchStereotypeTargetException; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.StereotypeNotFoundException; -import org.nuiton.eugene.models.extension.stereotype.provider.AggregateStereotypeMetadatasProvider; -import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; +import org.nuiton.eugene.models.extension.tagvalue.InvalidStereotypeSyntaxException; import org.nuiton.eugene.models.extension.tagvalue.InvalidTagValueSyntaxException; import org.nuiton.eugene.models.extension.tagvalue.MismatchTagValueTargetException; import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; @@ -65,7 +60,6 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension protected final boolean strictLoading; protected final M model; protected final TagValueMetadatasProvider tagValueMetadatasProvider; - protected final StereotypeMetadatasProvider stereotypeMetadatasProvider; public static <M extends ObjectModel> void loadForFlatModel(boolean verbose, boolean strictLoading, M model, File modelExtension) throws IOException { FlatModelExtensionFileParser parser = new FlatModelExtensionFileParser(strictLoading); @@ -94,7 +88,6 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension this.strictLoading = strictLoading; this.model = model; this.tagValueMetadatasProvider = new AggregateTagValueMetadatasProvider(getClass().getClassLoader()); - this.stereotypeMetadatasProvider = new AggregateStereotypeMetadatasProvider(getClass().getClassLoader()); } public void load(File modelExtension) throws IOException, InvalidTagValueSyntaxException, InvalidStereotypeSyntaxException { @@ -166,9 +159,9 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension boolean safe = false; try { - stereotypeMetadatasProvider.validate(stereotype, ObjectModel.class); + tagValueMetadatasProvider.validate(stereotype, ObjectModel.class); safe = true; - } catch (StereotypeNotFoundException e) { + } catch (TagValueNotFoundException e) { String message = "Invalid model stereotype [" + stereotype + "] : the stereotype '" + stereotype + "' is unknown."; if (strictLoading) { @@ -176,7 +169,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension } else { log.warn(message); } - } catch (MismatchStereotypeTargetException e) { + } catch (MismatchTagValueTargetException e) { String message = "Invalid model stereotype [" + stereotype + "] : this stereotype '" + stereotype + "' can not be apply on model."; if (strictLoading) { log.error(message); @@ -188,7 +181,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension if (safe) { // test if stereotype is deprecated - StereotypeMetadata tagValueMetadata = stereotypeMetadatasProvider.getStereotype(stereotype).get(); + TagValueMetadata tagValueMetadata = tagValueMetadatasProvider.getTagValue(stereotype).get(); boolean deprecated = tagValueMetadata.isDeprecated(); if (deprecated) { log.warn("Deprecated model stereotype usage: " + stereotype); @@ -261,16 +254,16 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension boolean safe = false; try { - stereotypeMetadatasProvider.validate(stereotype, ObjectModelPackage.class); + tagValueMetadatasProvider.validate(stereotype, ObjectModelPackage.class); safe = true; - } catch (StereotypeNotFoundException e) { + } catch (TagValueNotFoundException e) { String message = "Invalid model stereotype on package [" + packageName + "]: the stereotype '" + stereotype + "' is unknown."; if (strictLoading) { log.error(message); } else { log.warn(message); } - } catch (MismatchStereotypeTargetException e) { + } catch (MismatchTagValueTargetException e) { String message = "Invalid model stereotype on package [" + packageName + "]: this stereotype '" + stereotype + "' can not be apply on package."; if (strictLoading) { log.error(message); @@ -282,7 +275,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension if (safe) { // test if tagValue is deprecated - StereotypeMetadata tagValueMetadata = stereotypeMetadatasProvider.getStereotype(stereotype).get(); + TagValueMetadata tagValueMetadata = tagValueMetadatasProvider.getTagValue(stereotype).get(); boolean deprecated = tagValueMetadata.isDeprecated(); if (deprecated) { log.warn("Deprecated stereotype usage on package [" + packageName + "]: " + stereotype); @@ -301,7 +294,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension return false; } - omc.addStereotype(stereotype); + omc.addTagValue(stereotype, "true"); if (verbose) { log.info("imported stereotype on package [" + packageName + "] → " + stereotype); @@ -375,9 +368,9 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension boolean safe = false; try { - stereotypeMetadatasProvider.validate(stereotype, ObjectModelClassifier.class); + tagValueMetadatasProvider.validate(stereotype, ObjectModelClassifier.class); safe = true; - } catch (StereotypeNotFoundException e) { + } catch (TagValueNotFoundException e) { String message = "Invalid model stereotype on class [" + className + "]: the stereotype '" + stereotype + "' is unknown."; if (strictLoading) { @@ -385,7 +378,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension } else { log.warn(message); } - } catch (MismatchStereotypeTargetException e) { + } catch (MismatchTagValueTargetException e) { String message = "Invalid model stereotype on class [" + className + "]: this stereotype '" + stereotype + "' can not be apply on class scope."; if (strictLoading) { log.error(message); @@ -397,7 +390,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension if (safe) { // test if stereotype is deprecated - StereotypeMetadata tagValueMetadata = stereotypeMetadatasProvider.getStereotype(stereotype).get(); + TagValueMetadata tagValueMetadata = tagValueMetadatasProvider.getTagValue(stereotype).get(); boolean deprecated = tagValueMetadata.isDeprecated(); if (deprecated) { if (log.isWarnEnabled()) { @@ -498,9 +491,9 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension boolean safe = false; try { - stereotypeMetadatasProvider.validate(stereotype, ObjectModelAttribute.class); + tagValueMetadatasProvider.validate(stereotype, ObjectModelAttribute.class); safe = true; - } catch (StereotypeNotFoundException e) { + } catch (TagValueNotFoundException e) { String message = "Invalid model stereotype on attribute [" + className + "#" + attributeName + "]: the stereotype '" + stereotype + "' is unknown."; if (strictLoading) { @@ -508,7 +501,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension } else { log.warn(message); } - } catch (MismatchStereotypeTargetException e) { + } catch (MismatchTagValueTargetException e) { String message = "Invalid model stereotype on attribute [" + className + "#" + attributeName + "]: this stereotype '" + stereotype + "' can not be apply on attribute scope."; if (strictLoading) { log.error(message); @@ -520,7 +513,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension if (safe) { // test if stereotype is deprecated - StereotypeMetadata tagValueMetadata = stereotypeMetadatasProvider.getStereotype(stereotype).get(); + TagValueMetadata tagValueMetadata = tagValueMetadatasProvider.getTagValue(stereotype).get(); boolean deprecated = tagValueMetadata.isDeprecated(); if (deprecated) { log.warn("Deprecated stereotype usage on attribute [" + className + "]: " + stereotype); @@ -587,8 +580,7 @@ public class LoadModelExtension<M extends ObjectModel> implements ModelExtension * @param name attribute name to find * @return the attribute found or null */ - protected ObjectModelAttribute getAttribute(ObjectModelClassifier clazz, - String name) { + protected ObjectModelAttribute getAttribute(ObjectModelClassifier clazz, String name) { ObjectModelAttribute result = clazz.getAttribute(name); // Ano #619 : FD-2010-05-17 : Specific case for Association class : diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/ModelExtensionFileParser.java b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/ModelExtensionFileParser.java index 8034d27..71e35c5 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/ModelExtensionFileParser.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/extension/ModelExtensionFileParser.java @@ -23,7 +23,7 @@ package org.nuiton.eugene.models.object.reader.extension; */ -import org.nuiton.eugene.models.extension.stereotype.InvalidStereotypeSyntaxException; +import org.nuiton.eugene.models.extension.tagvalue.InvalidStereotypeSyntaxException; import org.nuiton.eugene.models.extension.tagvalue.InvalidTagValueSyntaxException; import java.io.File; diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java index 417338b..2dc8fc0 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import org.apache.commons.lang3.StringUtils; -import org.nuiton.eugene.EugeneCoreStereotypes; +import org.nuiton.eugene.EugeneCoreTagValues; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; @@ -298,7 +298,7 @@ public class ObjectModelAttributeImpl extends ObjectModelParameterImpl @Override public ObjectModelImplRef addStereotype(ObjectModelImplRef stereotype) { String stereotypeName = stereotype.getName(); - if (EugeneCoreStereotypes.Store.ordered.getName().equals(stereotypeName)) { + if (EugeneCoreTagValues.Store.ordered.getName().equals(stereotypeName)) { setOrdered(true); } return super.addStereotype(stereotype); diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java index d35e606..33b9df1 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java @@ -34,6 +34,7 @@ import org.nuiton.eugene.models.object.ObjectModelModifier; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -57,8 +58,6 @@ public abstract class ObjectModelElementImpl implements ObjectModelElement { protected String documentation; - protected Set<String> stereotypes; - protected Map<String, String> tagValues; protected List<String> comments; @@ -67,7 +66,6 @@ public abstract class ObjectModelElementImpl implements ObjectModelElement { public ObjectModelElementImpl() { tagValues = new HashMap<>(); - stereotypes = new HashSet<>(); comments = new ArrayList<>(); modifiers = new HashSet<>(); } @@ -111,7 +109,7 @@ public abstract class ObjectModelElementImpl implements ObjectModelElement { if (stereotype == null) { return new ObjectModelImplRef(); } - stereotypes.add(stereotype.getName()); + addStereotype(stereotype.getName()); return stereotype; } @@ -197,22 +195,27 @@ public abstract class ObjectModelElementImpl implements ObjectModelElement { @Override public Set<String> getStereotypes() { - return stereotypes; + Set<String> result = new LinkedHashSet<>(); + for (Map.Entry<String, String> entry : tagValues.entrySet()) { + if ("true".equals(entry.getValue())) { + result.add(entry.getKey()); + } + } + return result; } @Override public boolean hasStereotype(String stereotypeName) { - return stereotypes.contains(stereotypeName); + return tagValues.containsKey(stereotypeName); } @Override public void addStereotype(String stereotype) { - stereotypes.add(stereotype); + tagValues.put(stereotype, "true"); } - @Override public void removeStereotype(String stereotype) { - stereotypes.remove(stereotype); + tagValues.remove(stereotype); } @Override diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java index 425cd6f..a55c312 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java @@ -37,7 +37,6 @@ import org.nuiton.eugene.models.object.ObjectModelPackage; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; @@ -79,8 +78,6 @@ public class ObjectModelImpl implements ObjectModel { protected Map<String, String> tagValues = new HashMap<>(); - protected Set<String> stereotypes = new HashSet<>(); - /** * Used to add others specific object to the model * The key defined must be unique to get the significative extension associated to @@ -140,7 +137,7 @@ public class ObjectModelImpl implements ObjectModel { if (!(initialElement instanceof ObjectModelClassImpl)) { throw new IllegalArgumentException( "\"" + clazz + "\" is incompatible with already " + - "defined element \"" + initialElement + "\""); + "defined element \"" + initialElement + "\""); } ObjectModelClassImpl initialClazz = (ObjectModelClassImpl) initialElement; @@ -171,8 +168,8 @@ public class ObjectModelImpl implements ObjectModel { if (!(initialElement instanceof ObjectModelAssociationClassImpl)) { throw new IllegalArgumentException( "\"" + clazz + "\" is incompatible with " + - "already defined element \"" + initialElement + - "\"" + "already defined element \"" + initialElement + + "\"" ); } ObjectModelAssociationClassImpl initialClazz = @@ -243,7 +240,7 @@ public class ObjectModelImpl implements ObjectModel { @Override public ObjectModelClassifier getClassifier(String qualifiedClassifierName) { return qualifiedClassifierName == null ? null - : classifiers.get(qualifiedClassifierName); + : classifiers.get(qualifiedClassifierName); } /** @@ -302,8 +299,8 @@ public class ObjectModelImpl implements ObjectModel { if (!(initialElement instanceof ObjectModelInterfaceImpl)) { throw new IllegalArgumentException( "\"" + interfacez + "\" is incompatible with " + - "already defined element \"" + initialElement + - "\""); + "already defined element \"" + initialElement + + "\""); } ObjectModelInterfaceImpl initialInterfacez = (ObjectModelInterfaceImpl) initialElement; @@ -330,7 +327,7 @@ public class ObjectModelImpl implements ObjectModel { if (result == null) { if (log.isDebugEnabled()) { log.debug("Interface " + qualifiedInterfaceName + - " not found in model"); + " not found in model"); } } return result; @@ -366,7 +363,7 @@ public class ObjectModelImpl implements ObjectModel { if (result == null) { if (log.isDebugEnabled()) { log.debug("Enumeration " + qualifiedEnumerationName + - " not found in model"); + " not found in model"); } } return result; @@ -384,38 +381,43 @@ public class ObjectModelImpl implements ObjectModel { @Override public Set<String> getStereotypes() { - return stereotypes; + Set<String> result = new LinkedHashSet<>(); + for (Map.Entry<String, String> entry : tagValues.entrySet()) { + if ("true".equals(entry.getValue())) { + result.add(entry.getKey()); + } + } + return result; } @Override public boolean hasStereotype(String stereotypeName) { - return stereotypes.contains(stereotypeName); + return tagValues.containsKey(stereotypeName); } @Override public void addStereotype(String stereotype) { - stereotypes.add(stereotype); + tagValues.put(stereotype, "true"); } - @Override public void removeStereotype(String stereotype) { - stereotypes.remove(stereotype); + tagValues.remove(stereotype); } public void removePackage(String packageName) { - for (ObjectModelClass objectModelClass : new LinkedHashSet<>(classes.values()) ) { - if (objectModelClass.getQualifiedName().startsWith(packageName+".")) { + for (ObjectModelClass objectModelClass : new LinkedHashSet<>(classes.values())) { + if (objectModelClass.getQualifiedName().startsWith(packageName + ".")) { classes.remove(objectModelClass.getQualifiedName()); } } - for (ObjectModelInterface objectModelInterface : new LinkedHashSet<>(interfaces.values()) ) { - if (objectModelInterface.getQualifiedName().startsWith(packageName+".")) { + for (ObjectModelInterface objectModelInterface : new LinkedHashSet<>(interfaces.values())) { + if (objectModelInterface.getQualifiedName().startsWith(packageName + ".")) { classes.remove(objectModelInterface.getQualifiedName()); } } - for (ObjectModelEnumeration objectModelEnumeration : new LinkedHashSet<>(enumerations.values()) ) { - if (objectModelEnumeration.getQualifiedName().startsWith(packageName+".")) { + for (ObjectModelEnumeration objectModelEnumeration : new LinkedHashSet<>(enumerations.values())) { + if (objectModelEnumeration.getQualifiedName().startsWith(packageName + ".")) { classes.remove(objectModelEnumeration.getQualifiedName()); } } @@ -426,7 +428,7 @@ public class ObjectModelImpl implements ObjectModel { public void removeClass(String className) { classes.remove(className); - + } public void removeInterface(String interfaceName) { @@ -436,7 +438,7 @@ public class ObjectModelImpl implements ObjectModel { public void removeEnumeration(String enumerationName) { enumerations.remove(enumerationName); } - + protected void mergePackages( ObjectModelPackageImpl initialPackage, ObjectModelPackageImpl additionalPackage) { @@ -556,7 +558,7 @@ public class ObjectModelImpl implements ObjectModel { for (it = additionalClazzifier.getStereotypes().iterator(); it.hasNext(); ) { String stereotype = (String) it.next(); if (!initialClazzifier.getStereotypes().contains(stereotype)) { - initialClazzifier.stereotypes.add(stereotype); + initialClazzifier.addStereotype(stereotype); } } @@ -669,7 +671,7 @@ public class ObjectModelImpl implements ObjectModel { if (StringUtils.isNotEmpty(oldValue) && !oldValue.equals(value)) { if (log.isWarnEnabled()) { log.warn("Replace tagValue '" + tagValue + "' (old:" + - oldValue + ", new: " + value + ")"); + oldValue + ", new: " + value + ")"); } } tagValues.put(tagValue, value); @@ -714,7 +716,7 @@ public class ObjectModelImpl implements ObjectModel { result = extensionClass.newInstance(); } catch (Exception eee) { // IllegalAccessException and InstantiationException throw new RuntimeException("Unable to create new extension '" + extensionClass.getName() + - "' for '" + reference + "'", eee); + "' for '" + reference + "'", eee); } extensions.put(reference, result); } else { diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelPackageImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelPackageImpl.java index 16dfe5f..556f553 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelPackageImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelPackageImpl.java @@ -110,7 +110,6 @@ public class ObjectModelPackageImpl implements ObjectModelPackage { stereotypes.add(stereotype); } - @Override public void removeStereotype(String stereotype) { stereotypes.remove(stereotype); } diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java index ddabd63..e8c3533 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java @@ -29,7 +29,7 @@ import org.nuiton.eugene.models.state.StateModelStateChart; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -62,8 +62,6 @@ public class StateModelImpl implements StateModel { */ protected Map<String, String> modelTagValues; - protected Set<String> stereotypes = new HashSet<>(); - /** * Used to add others specific object to the model * The key defined must be unique to get the significative extension associated to @@ -90,22 +88,27 @@ public class StateModelImpl implements StateModel { @Override public Set<String> getStereotypes() { - return stereotypes; + Set<String> result = new LinkedHashSet<>(); + for (Map.Entry<String, String> entry : modelTagValues.entrySet()) { + if ("true".equals(entry.getValue())) { + result.add(entry.getKey()); + } + } + return result; } @Override public boolean hasStereotype(String stereotypeName) { - return stereotypes.contains(stereotypeName); + return modelTagValues.containsKey(stereotypeName); } @Override public void addStereotype(String stereotype) { - stereotypes.add(stereotype); + modelTagValues.put(stereotype, "true"); } - @Override public void removeStereotype(String stereotype) { - stereotypes.remove(stereotype); + modelTagValues.remove(stereotype); } /** @@ -214,7 +217,7 @@ public class StateModelImpl implements StateModel { result = extensionClass.newInstance(); } catch (Exception eee) { // IllegalAccessException and InstantiationException throw new RuntimeException("Unable to create new extension '" + extensionClass.getName() + - "' for '" + reference + "'", eee); + "' for '" + reference + "'", eee); } extensions.put(reference, result); } else { diff --git a/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider b/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider deleted file mode 100644 index c5380f2..0000000 --- a/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider +++ /dev/null @@ -1 +0,0 @@ -org.nuiton.eugene.EugeneCoreStereotypes \ No newline at end of file diff --git a/eugene/src/test/java/org/nuiton/eugene/EugeneCoreStereotypesTest.java b/eugene/src/test/java/org/nuiton/eugene/EugeneCoreStereotypesTest.java deleted file mode 100644 index b084ef4..0000000 --- a/eugene/src/test/java/org/nuiton/eugene/EugeneCoreStereotypesTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.nuiton.eugene; - -/*- - * #%L - * EUGene :: EUGene - * %% - * Copyright (C) 2004 - 2016 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.nuiton.eugene.models.extension.stereotype.MismatchStereotypeTargetException; -import org.nuiton.eugene.models.extension.stereotype.StereotypeNotFoundException; -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; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelOperation; - -/** - * Created on 24/09/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class EugeneCoreStereotypesTest { - - protected EugeneCoreStereotypes provider; - - @Before - public void setUp() throws Exception { - provider = new EugeneCoreStereotypes(); - } - - @Test - public void validate() throws Exception { - - validate(EugeneCoreStereotypes.Store.ordered.name(), true, ObjectModelAttribute.class); - - validate(EugeneCoreStereotypes.Store.ordered.name(), false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class); - - long l = System.nanoTime(); - validate(EugeneCoreStereotypes.Store.ordered.name() + l, false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class); - - } - - protected void validate(String name, boolean expected, Class<?>... types) { - for (Class<?> type : types) { - try { - provider.validate(name, type); - Assert.assertTrue(expected); - } catch (StereotypeNotFoundException | MismatchStereotypeTargetException e) { - Assert.assertFalse(expected); - } - } - } -} diff --git a/eugene/src/test/java/org/nuiton/eugene/EugeneCoreTagValuesTest.java b/eugene/src/test/java/org/nuiton/eugene/EugeneCoreTagValuesTest.java index 57c8160..b8d3e5d 100644 --- a/eugene/src/test/java/org/nuiton/eugene/EugeneCoreTagValuesTest.java +++ b/eugene/src/test/java/org/nuiton/eugene/EugeneCoreTagValuesTest.java @@ -32,6 +32,7 @@ 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; +import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelPackage; import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; @@ -62,10 +63,16 @@ public class EugeneCoreTagValuesTest { validate(EugeneCoreTagValues.Store.i18n.getName(), false, ObjectModelOperation.class, ObjectModelAttribute.class); validate(EugeneCoreTagValues.Store.version.getName(), false, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelOperation.class, ObjectModelAttribute.class); + validate(EugeneCoreTagValues.Store.ordered.name(), true, ObjectModelAttribute.class); + validate(EugeneCoreTagValues.Store.ordered.name(), false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class); + long l = System.nanoTime(); validate(EugeneCoreTagValues.Store.constantPrefix.getName() + l, false, ObjectModelOperation.class, ObjectModelPackage.class, ObjectModelAttribute.class); validate(EugeneCoreTagValues.Store.i18n.getName() + l, false, ObjectModelOperation.class, ObjectModelPackage.class, ObjectModelAttribute.class); validate(EugeneCoreTagValues.Store.version.getName() + l, false, ObjectModelClassifier.class, ObjectModelPackage.class, ObjectModelOperation.class, ObjectModelAttribute.class); + + validate(EugeneCoreTagValues.Store.ordered.name() + l, false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class); + } @Test -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm