Eugene-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
April 2014
- 7 participants
- 35 discussions
r1347 - trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue
by tchemit@users.nuiton.org 27 Apr '14
by tchemit@users.nuiton.org 27 Apr '14
27 Apr '14
Author: tchemit
Date: 2014-04-27 15:34:28 +0200 (Sun, 27 Apr 2014)
New Revision: 1347
Url: http://forge.nuiton.org/projects/eugene/repository/revisions/1347
Log:
refs #3175: Improve Stereotype and TagValue API
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValues.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValues.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValues.java 2014-04-27 12:17:19 UTC (rev 1346)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValues.java 2014-04-27 13:34:28 UTC (rev 1347)
@@ -34,11 +34,34 @@
public class TagValues {
/**
+ * Seek for a Boolean tag value.
+ * <p/>
+ * Will first the tag value using the method {@link #findTagValue(String, TagValueAble...)}.
+ * <p/>
+ * If not found, return {@code null}, otherwise return boolean value (case is ignored).
+ * <p/>
+ * <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 tagName tag name to find
+ * @param elements not null elements to test
+ * @return found boolean tag value or {@code null} if tag value not found.
+ * @since 2.9
+ */
+ public static Boolean findNullableBooleanTagValue(String tagName, TagValueAble... elements) {
+
+ String value = findTagValue(tagName, elements);
+ return value == null ? null : "true".equalsIgnoreCase(value);
+
+ }
+
+ /**
* Seek for a boolean tag value.
* <p/>
* Will first the tag value using the method {@link #findTagValue(String, TagValueAble...)}.
* <p/>
- * If found, return {@code true}, if the value is not null and is {@code "true"} String value.
+ * If found, return {@code true}, if the value is not null and is {@code "true"} String value (case is ignored).
* <p/>
* <strong>Note:</strong> Order of {@code elements} is important, better then to
* always starts from specialized to more general level (for example from attribute,
@@ -47,13 +70,13 @@
* @param tagName tag name to find
* @param elements not null elements to test
* @return found boolean tag value or {@code false} if tag value is not found, nor having
- * exactly {@code "true"} value.
+ * {@code "true"} value (case is ignored).
* @since 2.9
*/
public static boolean findBooleanTagValue(String tagName, TagValueAble... elements) {
String value = findTagValue(tagName, elements);
- return value != null && "true".equals(value);
+ return value != null && "true".equalsIgnoreCase(value);
}
@@ -98,7 +121,7 @@
}
}
return null;
-
+
}
public static String findNotEmptyTagValue(String tagName, TagValueAble element) {
1
0
Author: tchemit
Date: 2014-04-27 14:17:19 +0200 (Sun, 27 Apr 2014)
New Revision: 1346
Url: http://forge.nuiton.org/projects/eugene/repository/revisions/1346
Log:
refs #3175: Improve Stereotype and TagValue API
Added:
trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider
trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider
trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java
trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/AggregateStereotypeDefinitionProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MismatchStereotypeTargetException.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MyStereotypeDefinitionProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeAble.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinition.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProviders.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeNotFoundException.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/package-info.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/AggregateTagValueDefinitionProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/MismatchTagValueTargetException.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueAble.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinition.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProviders.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueNotFoundException.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValues.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/EqualsTagValueNameMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/StartsWithTagNameMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/TagValueDefinitionMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/package-info.java
trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider
trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneStereotypesTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneTagValuesTest.java
Removed:
trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider
trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/
trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
Modified:
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/AbstractJavaBeanTransformer.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaEnumerationTransformer.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesGeneratorUtil.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/package-info.java
trunk/eugene-maven-plugin/pom.xml
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java
trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst
trunk/src/site/rst/06-fonctionnalites-avancees.rst
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -1,18 +1,40 @@
package org.nuiton.eugene;
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
+/*
+ * #%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%
+ */
+
/**
* The Eugene provider of tag values and stereotypes.
*
* @author tchemit <chemit(a)codelutin.com>
- * @plexus.component role="org.nuiton.eugene.metas.ModelPropertiesProvider" role-hint="eugene"
* @since 2.3
+ * @deprecated since 2.9, use now {@link EugeneStereoTypes} and {@link EugeneTagValues}.
*/
-public class EugeneModelPropertiesProvider extends ModelPropertiesProvider {
+@Deprecated
+public class EugeneModelPropertiesProvider extends ModelPropertiesUtil.ModelPropertiesProvider {
@Override
- public void initStores() throws IllegalAccessException {
+ public void init() throws IllegalAccessException {
scanStereotypeClass(EugeneStereoTypes.class);
scanTagValueClass(EugeneTagValues.class);
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -24,10 +24,10 @@
*/
package org.nuiton.eugene;
-import org.nuiton.eugene.java.JavaGeneratorUtil;
-import org.nuiton.eugene.metas.StereotypeDefinition;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinition;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider;
/**
* Defines all stereotypes managed by Eugene.
@@ -36,20 +36,21 @@
* own stereotypes, to get a unique place where to find stereotypes.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.3
+ * @plexus.component role="org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider" role-hint="eugene"
+ * @since 2.9
*/
-public interface EugeneStereoTypes {
+public class EugeneStereoTypes extends StereotypeDefinitionProvider {
/**
* Stéréotype pour les attributs à indexer en base.
*
- * @see GeneratorUtil#hasIndexedStereotype(ObjectModelAttribute)
+ * @see #hasIndexedStereotype(ObjectModelAttribute)
* @deprecated since 2.8, use {@link #STEREOTYPE_ORDERED} instead, will be removed in version 3.0
*/
@StereotypeDefinition(target = ObjectModelAttribute.class,
documentation = "To specify that a attribute is indexed")
@Deprecated
- String STEREOTYPE_INDEXED = "indexed";
+ public static final String STEREOTYPE_INDEXED = "indexed";
/**
* Stereotype to mark an attribute with multiplicity as ordered.
@@ -58,12 +59,12 @@
* to a collection typed with {@link java.util.List} or {@link java.util.LinkedHashSet}
* or {@link java.util.LinkedHashMap}.
*
- * @see GeneratorUtil#hasOrderedStereotype(ObjectModelAttribute)
+ * @see #hasOrderedStereotype(ObjectModelAttribute)
* @since 2.8
*/
@StereotypeDefinition(target = ObjectModelAttribute.class,
documentation = "To specify that a attribute is ordered")
- String STEREOTYPE_ORDERED = "ordered";
+ public static final String STEREOTYPE_ORDERED = "ordered";
/**
* Stereotype to mark an attribute with multiplicity as unique.
@@ -71,19 +72,70 @@
* 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}.
*
- * @see JavaGeneratorUtil#hasUniqueStereotype(ObjectModelAttribute)
+ * @see #hasUniqueStereotype(ObjectModelAttribute)
*/
@StereotypeDefinition(target = ObjectModelAttribute.class,
documentation = "To specify that an attribute is unique")
- String STEREOTYPE_UNIQUE = "unique";
+ public static final String STEREOTYPE_UNIQUE = "unique";
/**
* Stereotype to skip generation for some transformer.
*
- * @see JavaGeneratorUtil#hasSkipStereotype(ObjectModelClassifier)
+ * @see #hasSkipStereotype(ObjectModelClassifier)
*/
@StereotypeDefinition(target = ObjectModelClassifier.class,
documentation = "To specify that a classifier should not been generated.")
- String STEREOTYPE_SKIP = "skip";
+ public static final String STEREOTYPE_SKIP = "skip";
+ /**
+ * Check if the given attribute has the {@link #STEREOTYPE_INDEXED} stereotype.
+ *
+ * @param attribute attribute to test
+ * @return {@code true} if stereotype was found, {@code false otherwise}
+ * @see #STEREOTYPE_INDEXED
+ * @see #hasIndexedStereotype(ObjectModelAttribute)
+ * @since 2.3
+ * @deprecated {@link #STEREOTYPE_INDEXED} is deprecated
+ */
+ @Deprecated
+ public static boolean hasIndexedStereotype(ObjectModelAttribute attribute) {
+ return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED);
+ }
+
+ /**
+ * Check if the given attribute has the {@link #STEREOTYPE_ORDERED} stereotype.
+ *
+ * @param attribute attribute to test
+ * @return {@code true} if stereotype was found, {@code false otherwise}
+ * @see #STEREOTYPE_ORDERED
+ * @since 2.9
+ */
+ public static boolean hasOrderedStereotype(ObjectModelAttribute attribute) {
+ return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_ORDERED);
+ }
+
+ /**
+ * Check if the given attribute has the {@link #STEREOTYPE_UNIQUE} stereotype.
+ *
+ * @param attribute attribute to test
+ * @return {@code true} if stereotype was found, {@code false otherwise}
+ * @see #STEREOTYPE_UNIQUE
+ * @since 2.9
+ */
+ public static boolean hasUniqueStereotype(ObjectModelAttribute attribute) {
+ return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_UNIQUE);
+ }
+
+ /**
+ * Check if the given classifier has the {@link #STEREOTYPE_SKIP} stereotype.
+ *
+ * @param classifier classifier to test
+ * @return {@code true} if stereotype was found, {@code false otherwise}
+ * @see #STEREOTYPE_SKIP
+ * @since 2.9
+ */
+ public static boolean hasSkipStereotype(ObjectModelClassifier classifier) {
+ return classifier.hasStereotype(EugeneStereoTypes.STEREOTYPE_SKIP);
+ }
+
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -24,11 +24,12 @@
*/
package org.nuiton.eugene;
-import org.nuiton.eugene.java.JavaGeneratorUtil;
-import org.nuiton.eugene.metas.TagValueDefinition;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelElement;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinition;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider;
+import org.nuiton.eugene.models.tagvalue.TagValues;
/**
* Defines all tag values managed by Eugene.
@@ -37,9 +38,10 @@
* own tag values, to get a unique place where to find tag values.
*
* @author tchemit <chemit(a)codelutin.com>
+ * @plexus.component role="org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider" role-hint="eugene"
* @since 2.3
*/
-public interface EugeneTagValues {
+public class EugeneTagValues extends TagValueDefinitionProvider {
/**
* Tag value to add the version of the model from outside (says in the
@@ -53,7 +55,7 @@
*/
@TagValueDefinition(target = {ObjectModel.class},
documentation = "To set the version of the model.")
- String TAG_VERSION = "version";
+ public static final String TAG_VERSION = "version";
/**
* Tag value to add on constants enumeration (or other incoming dev)
@@ -61,13 +63,13 @@
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see GeneratorUtil#getDocumentationTagValue(ObjectModel)
- * @see GeneratorUtil#getDocumentationTagValue(ObjectModelElement)
+ * @see #getDocumentationTagValue(ObjectModel)
+ * @see #getDocumentationTagValue(ObjectModelElement)
* @since 2.5
*/
@TagValueDefinition(target = {ObjectModel.class, ObjectModelElement.class},
documentation = "Sets the documentation of a model or any of his elements")
- String TAG_DOCUMENTATION = "documentation";
+ public static final String TAG_DOCUMENTATION = "documentation";
/**
* Tag value to add on constants enumeration (or other incoming dev)
@@ -75,35 +77,109 @@
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaGeneratorUtil#getConstantPrefixTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getConstantPrefixTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.3
*/
@TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class},
defaultValue = "PROPERTY_",
documentation = "Sets the prefix of any constant to be generated for the given class")
- String TAG_CONSTANT_PREFIX = "constantPrefix";
+ public static final String TAG_CONSTANT_PREFIX = "constantPrefix";
/**
* Tag value to specify the i18n prefix to use whene generating i18n keys.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaGeneratorUtil#getI18nPrefixTagValue(ObjectModelElement, ObjectModel)
+ * @see #getI18nPrefixTagValue(ObjectModelElement, ObjectModel)
* @since 2.3
*/
@TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "Sets the i18n prefix to use on I18n keys generated")
- String TAG_I18N_PREFIX = "i18n";
+ public static final String TAG_I18N_PREFIX = "i18n";
/**
* Tag value to specify to not generate only the {@code isXXX} methods for
* a boolean property.
*
- * @see JavaGeneratorUtil#isDoNotGenerateBooleanGetMethods(ObjectModel, ObjectModelClassifier)
+ * @see #isDoNotGenerateBooleanGetMethods(ObjectModelClassifier, ObjectModel)
* @since 2.4.1
*/
@TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class},
defaultValue = "true",
documentation = "To specify to NOT generate getXXX methods for boolean properties")
- String TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS = "doNotGenerateBooleanGetMethods";
+ public static final String TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS = "doNotGenerateBooleanGetMethods";
+
+
+ /**
+ * Obtain the value of the {@link #TAG_DOCUMENTATION} tag value on the given model.
+ *
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_DOCUMENTATION
+ * @since 2.3
+ */
+ public static String getDocumentationTagValue(ObjectModel model) {
+ String value = TagValues.findTagValue(EugeneTagValues.TAG_DOCUMENTATION, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_DOCUMENTATION} tag value on the given element.
+ *
+ * @param element element to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_DOCUMENTATION
+ * @since 2.3
+ */
+ public static String getDocumentationTagValue(ObjectModelElement element) {
+ String value = TagValues.findTagValue(EugeneTagValues.TAG_DOCUMENTATION, element);
+ return value;
+ }
+
+ /**
+ * Cherche et renvoie le prefixe i18n à utiliser sur cet element, sinon sur
+ * le model.
+ *
+ * @param element l'élément à tester
+ * @param model le modele utilisé
+ * @return le prefix i18n ou <code>null</code> si non spécifié
+ * @since 2.3
+ */
+ public static String getI18nPrefixTagValue(ObjectModelElement element,
+ ObjectModel model) {
+ return TagValues.findTagValue(EugeneTagValues.TAG_I18N_PREFIX, element, model);
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS}
+ * tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS
+ * @since 2.4.1
+ */
+ public static boolean isDoNotGenerateBooleanGetMethods(ObjectModelClassifier classifier, ObjectModel model) {
+ boolean value = TagValues.findBooleanTagValue(EugeneTagValues.TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_CONSTANT_PREFIX} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_CONSTANT_PREFIX
+ * @since 2.3
+ */
+ public static String getConstantPrefixTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, classifier, model);
+ return value;
+ }
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -8,15 +8,15 @@
* Copyright (C) 2004 - 2010 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
+ * 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>.
@@ -27,8 +27,6 @@
package org.nuiton.eugene;
import org.apache.commons.lang3.StringUtils;
-import org.nuiton.eugene.metas.TagValueAble;
-import org.nuiton.eugene.metas.TagValues;
import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -38,6 +36,8 @@
import org.nuiton.eugene.models.object.ObjectModelOperation;
import org.nuiton.eugene.models.object.ObjectModelParameter;
import org.nuiton.eugene.models.object.SerialVersionUIDBuilder;
+import org.nuiton.eugene.models.tagvalue.TagValueAble;
+import org.nuiton.eugene.models.tagvalue.TagValues;
import org.nuiton.util.StringUtil;
import java.io.File;
@@ -80,8 +80,8 @@
/**
* @param qualifiedName the fully qualified name to test
* @return class name fr given fully qualified name (return given name if it is not fully qualified)
- * eg : org.nuiton.eugene.models.ObjectClass -> ObjectClass
- * eg : ObjectClass-> ObjectClass
+ * eg : org.nuiton.eugene.models.ObjectClass -> ObjectClass
+ * eg : ObjectClass-> ObjectClass
*/
public static String getClassNameFromQualifiedName(String qualifiedName) {
String className = qualifiedName;
@@ -262,7 +262,7 @@
/**
* @param attribute the attribute to test
* @return vrai si la cardinalite de l'attribut est superieur a 1, c-a-d
- * si MaxMultiplicity == -1 ou > 1
+ * si MaxMultiplicity == -1 ou > 1
*/
public static boolean isNMultiplicity(ObjectModelAttribute attribute) {
return isNMultiplicity(attribute.getMaxMultiplicity());
@@ -313,7 +313,7 @@
String type = attribute.getType();
return "boolean".equals(type);
}
-
+
public static String getParsingExpression(String type,
String attributeStringName) {
if ("byte".equals(type)) {
@@ -405,7 +405,7 @@
*
* @param operation to treate
* @return the string corresponding to the list of operation parameter
- * names separated by a ', '.
+ * names separated by a ', '.
*/
public static String getOperationParametersListName(
ObjectModelOperation operation) {
@@ -628,7 +628,7 @@
// no generics definition, no treatment to do
return str;
}
- result = result.substring(0,result.indexOf('<'));
+ result = result.substring(0, result.indexOf('<'));
return result;
}
@@ -763,7 +763,7 @@
*/
@Deprecated
public static boolean hasIndexedStereotype(ObjectModelAttribute attribute) {
- return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED);
+ return EugeneStereoTypes.hasIndexedStereotype(attribute);
}
/**
@@ -774,9 +774,11 @@
* @return {@code true} if stereotype was found, {@code false otherwise}
* @see EugeneStereoTypes#STEREOTYPE_ORDERED
* @since 2.3
+ * @deprecated since 2.9, use now {@link EugeneStereoTypes#hasOrderedStereotype(ObjectModelAttribute)}
*/
+ @Deprecated
public static boolean hasOrderedStereotype(ObjectModelAttribute attribute) {
- return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_ORDERED);
+ return EugeneStereoTypes.hasOrderedStereotype(attribute);
}
/**
@@ -787,9 +789,11 @@
* @return {@code true} if stereotype was found, {@code false otherwise}
* @see EugeneStereoTypes#STEREOTYPE_UNIQUE
* @since 2.8
+ * @deprecated since 2.9, use now {@link EugeneStereoTypes#hasUniqueStereotype(ObjectModelAttribute)} (ObjectModelAttribute)}
*/
+ @Deprecated
public static boolean hasUniqueStereotype(ObjectModelAttribute attribute) {
- return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_UNIQUE);
+ return EugeneStereoTypes.hasUniqueStereotype(attribute);
}
/**
@@ -800,10 +804,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see EugeneTagValues#TAG_DOCUMENTATION
* @since 2.3
+ * @deprecated since 2.9, use now {@link EugeneTagValues#getDocumentationTagValue(ObjectModel)}
*/
+ @Deprecated
public static String getDocumentationTagValue(ObjectModel model) {
// String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, null, model);
- String value = TagValues.findTagValue(EugeneTagValues.TAG_DOCUMENTATION, model);
+ String value = EugeneTagValues.getDocumentationTagValue(model);
return value;
}
@@ -815,10 +821,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see EugeneTagValues#TAG_DOCUMENTATION
* @since 2.3
+ * @deprecated since 2.9, use now {@link EugeneTagValues#getDocumentationTagValue(ObjectModelElement)}
*/
+ @Deprecated
public static String getDocumentationTagValue(ObjectModelElement element) {
// String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, element, null);
- String value = TagValues.findTagValue(EugeneTagValues.TAG_DOCUMENTATION, element);
+ String value = EugeneTagValues.getDocumentationTagValue(element);
return value;
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -26,6 +26,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProviders;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProviders;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -45,7 +47,7 @@
*
* @author tchemit <chemit(a)codelutin.com>
* @since 2.3
- * @deprecated since 2.9, will be removed in version 3.0, use now classes inside {@link org.nuiton.eugene.metas} package.
+ * @deprecated since 2.9, will be removed in version 3.0, use now {@link StereotypeDefinitionProviders} and {@link TagValueDefinitionProviders}.
*/
@Deprecated
public class ModelPropertiesUtil {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -27,8 +27,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider;
import java.io.File;
import java.io.IOException;
@@ -70,9 +71,23 @@
*
* @since 2.3
*/
- protected ModelPropertiesProvider modelPropertiesProvider;
+ private ModelPropertiesUtil.ModelPropertiesProvider modelPropertiesProvider;
/**
+ * Provider of tag values.
+ *
+ * @since 2.9
+ */
+ protected TagValueDefinitionProvider tagValueDefinitionProvider;
+
+ /**
+ * Provider of stereotypes.
+ *
+ * @since 2.9
+ */
+ protected StereotypeDefinitionProvider stereotypeDefinitionProvider;
+
+ /**
* Gets the type of model.
*
* @return the type of model.
@@ -136,8 +151,10 @@
/**
* @return the provider of controled tagvalues and stereotypes.
* @since 2.3
+ * @deprecated since 2.9, no more used.
*/
- public ModelPropertiesProvider getModelPropertiesProvider() {
+ @Deprecated
+ public ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
return modelPropertiesProvider;
}
@@ -146,8 +163,39 @@
*
* @param modelPropertiesProvider the provider to use
* @since 2.3
+ * @deprecated since 2.9, no more used
*/
- public void setModelPropertiesProvider(ModelPropertiesProvider modelPropertiesProvider) {
+ @Deprecated
+ public void setModelPropertiesProvider(ModelPropertiesUtil.ModelPropertiesProvider modelPropertiesProvider) {
this.modelPropertiesProvider = modelPropertiesProvider;
}
+
+
+ public TagValueDefinitionProvider getTagValueDefinitionProvider() {
+ return tagValueDefinitionProvider;
+ }
+
+ /**
+ * Sets the provider of available tag values.
+ *
+ * @param tagValueDefinitionProvider the provider to use
+ * @since 2.9
+ */
+ public void setTagValueDefinitionProvider(TagValueDefinitionProvider tagValueDefinitionProvider) {
+ this.tagValueDefinitionProvider = tagValueDefinitionProvider;
+ }
+
+ public StereotypeDefinitionProvider getStereotypeDefinitionProvider() {
+ return stereotypeDefinitionProvider;
+ }
+
+ /**
+ * Sets the provider of available stereotypes.
+ *
+ * @param stereotypeDefinitionProvider the provider to use
+ * @since 2.9
+ */
+ public void setStereotypeDefinitionProvider(StereotypeDefinitionProvider stereotypeDefinitionProvider) {
+ this.stereotypeDefinitionProvider = stereotypeDefinitionProvider;
+ }
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -28,7 +28,6 @@
import org.nuiton.eugene.EugeneStereoTypes;
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.GeneratorUtil;
-import org.nuiton.eugene.metas.TagValues;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
@@ -137,9 +136,11 @@
* @return {@code true} if stereotype was found, {@code false otherwise}
* @see EugeneStereoTypes#STEREOTYPE_SKIP
* @since 2.5
+ * @deprecated since 2.9, use now {@link EugeneStereoTypes#hasSkipStereotype(ObjectModelClassifier)}
*/
+ @Deprecated
public static boolean hasSkipStereotype(ObjectModelClassifier classifier) {
- return classifier.hasStereotype(EugeneStereoTypes.STEREOTYPE_SKIP);
+ return EugeneStereoTypes.hasSkipStereotype(classifier);
}
/**
@@ -150,11 +151,13 @@
* @param model le modele utilisé
* @return le prefix i18n ou <code>null</code> si non spécifié
* @since 2.3
+ * @deprecated since 2.9, use now {@link EugeneTagValues#getI18nPrefixTagValue(ObjectModelElement, ObjectModel)}
*/
+ @Deprecated
public static String getI18nPrefixTagValue(ObjectModelElement element,
ObjectModel model) {
// return findTagValue(EugeneTagValues.TAG_I18N_PREFIX, element, model);
- return TagValues.findTagValue(EugeneTagValues.TAG_I18N_PREFIX, element, model);
+ return EugeneTagValues.getI18nPrefixTagValue(element, model);
}
/**
@@ -168,12 +171,14 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see EugeneTagValues#TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS
* @since 2.4.1
+ * @deprecated since 2.9, use now {@link EugeneTagValues#isDoNotGenerateBooleanGetMethods(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static boolean isDoNotGenerateBooleanGetMethods(ObjectModel model,
ObjectModelClassifier classifier) {
// String value = findTagValue(EugeneTagValues.TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS, classifier, model);
// return value!=null && "true".equals(value);
- boolean value = TagValues.findBooleanTagValue(EugeneTagValues.TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS, classifier, model);
+ boolean value = EugeneTagValues.isDoNotGenerateBooleanGetMethods(classifier, model);
return value;
}
@@ -188,11 +193,13 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see EugeneTagValues#TAG_CONSTANT_PREFIX
* @since 2.3
+ * @deprecated since 2.9, use now {@link EugeneTagValues#getConstantPrefixTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getConstantPrefixTagValue(ObjectModel model,
ObjectModelClassifier classifier) {
// String value = findTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, classifier, model);
- String value = TagValues.findTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, classifier, model);
+ String value = EugeneTagValues.getConstantPrefixTagValue(classifier, model);
return value;
}
@@ -425,13 +432,13 @@
}
public static boolean isOrdered(ObjectModelAttribute attr) {
- return attr.isOrdered() || hasOrderedStereotype(attr) || hasIndexedStereotype(attr);
+ return attr.isOrdered() || EugeneStereoTypes.hasOrderedStereotype(attr) || EugeneStereoTypes.hasIndexedStereotype(attr);
}
public static Class<?> getCollectionType(ObjectModelAttribute attr) {
boolean ordered = isOrdered(attr);
- boolean unique = hasUniqueStereotype(attr);
+ boolean unique = EugeneStereoTypes.hasUniqueStereotype(attr);
// Change type for Multiple attribute
Class<?> result;
@@ -455,7 +462,7 @@
public static Class<?> getCollectionInstanceType(ObjectModelAttribute attr) {
boolean ordered = isOrdered(attr);
- boolean unique = hasUniqueStereotype(attr);
+ boolean unique = EugeneStereoTypes.hasUniqueStereotype(attr);
// Change type for Multiple attribute
Class<?> result;
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -225,10 +225,7 @@
String defaultPrefix) {
// look if there is a constant_prefix tag value
- String prefix = JavaGeneratorUtil.getConstantPrefixTagValue(
- getModel(),
- input
- );
+ String prefix = EugeneTagValues.getConstantPrefixTagValue(input, getModel());
if (StringUtils.isEmpty(prefix)) {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -26,7 +26,7 @@
package org.nuiton.eugene.models;
-import org.nuiton.eugene.metas.TagValueAble;
+import org.nuiton.eugene.models.tagvalue.TagValueAble;
/**
* Model.
@@ -63,31 +63,4 @@
*/
String getModelType();
-// /**
-// * Returns the tagValues associated with this element.
-// * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-)
-// *
-// * @return a Map containing all tagValues associated with this element
-// */
-// Map<String, String> getTagValues();
-//
-// /**
-// * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
-// *
-// * @param tagValue tag value key
-// * @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
-// */
-// String getTagValue(String tagValue);
-//
-// /**
-// * Adds the given {@code value} associated to the {@code tagValue}.
-// *
-// * Note: If a previous tag value was definied, then it will be replaced.
-// *
-// * @param tagValue the name of the tag value
-// * @param value the value to associate
-// * @since 2.1.2
-// */
-// void addTagValue(String tagValue, String value);
-
} //Model
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -25,8 +25,8 @@
package org.nuiton.eugene.models.object;
-import org.nuiton.eugene.metas.StereotypeAble;
-import org.nuiton.eugene.metas.TagValueAble;
+import org.nuiton.eugene.models.stereotype.StereotypeAble;
+import org.nuiton.eugene.models.tagvalue.TagValueAble;
import java.util.List;
@@ -83,45 +83,6 @@
*/
String getSourceDocumentation();
-// /**
-// * Returns the stereotypes names associated with this element.
-// *
-// * @return a Collection containing all stereotypes names associated with this element as String.
-// */
-// Collection<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);
-
-// /**
-// * Returns the tagValues associated with this element.
-// * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-)
-// *
-// * @return a Map containing all tagValues associated with this element
-// */
-// Map<String, String> getTagValues();
-//
-// /**
-// * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
-// *
-// * @param tagValue tag value name
-// * @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
-// */
-// String getTagValue(String tagValue);
-//
-// /**
-// * Returns whether this element has a tagValue corresponding to the given name, or not.
-// *
-// * @param tagValue tag value name
-// * @return a boolean indicating whether this element has a tagValue corresponding to the given name, or not.
-// */
-// boolean hasTagValue(String tagValue);
-
/**
* Return if this element has static declaration, only valid when
* getDeclaringElement is classifier. Not possible for the moment
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -31,10 +31,8 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.ModelHelper;
+import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
-import org.nuiton.eugene.metas.MismatchTagValueTargetException;
-import org.nuiton.eugene.metas.ModelPropertiesProviders;
-import org.nuiton.eugene.metas.TagValueNotFoundException;
import org.nuiton.eugene.models.object.reader.XmlObjectModelReader;
import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet;
import org.nuiton.eugene.models.object.xml.ObjectModelAssociationClassImpl;
@@ -42,6 +40,12 @@
import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelImplRef;
+import org.nuiton.eugene.models.stereotype.MismatchStereotypeTargetException;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProviders;
+import org.nuiton.eugene.models.stereotype.StereotypeNotFoundException;
+import org.nuiton.eugene.models.tagvalue.MismatchTagValueTargetException;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProviders;
+import org.nuiton.eugene.models.tagvalue.TagValueNotFoundException;
import org.nuiton.util.FileUtil;
import org.nuiton.util.RecursiveProperties;
import org.nuiton.util.StringUtil;
@@ -137,12 +141,24 @@
" for files " + Arrays.toString(files));
}
- if (modelPropertiesProvider == null) {
- if (log.isWarnEnabled()) {
- log.warn("No properties provider filled, will instanciate a new default one");
+ if (tagValueDefinitionProvider == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("No tag value provider filled, will instanciate a new default one");
}
- setModelPropertiesProvider(ModelPropertiesProviders.newStore(getClass().getClassLoader(), false));
+ setTagValueDefinitionProvider(TagValueDefinitionProviders.newProvider(getClass().getClassLoader(), false));
}
+ if (stereotypeDefinitionProvider == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("No stereotype provider filled, will instanciate a new default one");
+ }
+ setStereotypeDefinitionProvider(StereotypeDefinitionProviders.newProvider(getClass().getClassLoader(), false));
+ }
+// if (modelPropertiesProvider == null) {
+// if (log.isWarnEnabled()) {
+// log.warn("No properties provider filled, will instanciate a new default one");
+// }
+// setModelPropertiesProvider(ModelPropertiesUtil.newStore(getClass().getClassLoader(), false));
+// }
ObjectModel model = new ObjectModelImpl();
@@ -153,7 +169,7 @@
for (File file : files) {
try {
digester.push(model);
- model = (ObjectModel) digester.parse(file);
+ model = digester.parse(file);
} catch (SAXException e) {
throw new IOException("Unable to parse ObjectModel input file : " + file, e);
// if (log.isWarnEnabled()) {
@@ -308,7 +324,7 @@
boolean safe = false;
try {
- modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
+ tagValueDefinitionProvider.validate(tag, ObjectModel.class);
safe = true;
} catch (TagValueNotFoundException e) {
if (log.isWarnEnabled()) {
@@ -361,24 +377,18 @@
// target real type
Class<?> targetType = getTargetType(target);
- boolean safe = modelPropertiesProvider.containsStereotype(value);
+ boolean safe = false;
- if (!safe) {
-
- // stereotype unknown
+ try {
+ stereotypeDefinitionProvider.validate(value, targetType);
+ safe = true;
+ } catch (StereotypeNotFoundException e) {
if (log.isWarnEnabled()) {
- log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' is unknown.");
+ log.warn("Invalid model stereotype [" + key + "] : the stereotype '" + value + "' is unknown.");
}
- } else {
-
- safe = modelPropertiesProvider.acceptStereotype(value, targetType);
-
- if (!safe) {
-
- // the stereotype can not be apply of the given target
- if (log.isWarnEnabled()) {
- log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' can not be apply on " + target + ".");
- }
+ } catch (MismatchStereotypeTargetException e) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid model stereotype [" + key + "] : this stereotype '" + value + "' can not be apply on '" + targetType + "'.");
}
}
@@ -468,7 +478,7 @@
boolean safe = false;
try {
- modelPropertiesProvider.acceptTagValue(tag, targetType);
+ tagValueDefinitionProvider.validate(tag, targetType);
safe = true;
} catch (TagValueNotFoundException e) {
if (log.isWarnEnabled()) {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -30,9 +30,6 @@
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.ModelHelper;
import org.nuiton.eugene.ModelReader;
-import org.nuiton.eugene.metas.MismatchTagValueTargetException;
-import org.nuiton.eugene.metas.ModelPropertiesProviders;
-import org.nuiton.eugene.metas.TagValueNotFoundException;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAssociationClass;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -45,6 +42,12 @@
import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelImplRef;
+import org.nuiton.eugene.models.stereotype.MismatchStereotypeTargetException;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProviders;
+import org.nuiton.eugene.models.stereotype.StereotypeNotFoundException;
+import org.nuiton.eugene.models.tagvalue.MismatchTagValueTargetException;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProviders;
+import org.nuiton.eugene.models.tagvalue.TagValueNotFoundException;
import org.nuiton.util.FileUtil;
import org.nuiton.util.RecursiveProperties;
import org.nuiton.util.StringUtil;
@@ -123,12 +126,25 @@
" for file " + Arrays.toString(files));
}
- if (modelPropertiesProvider == null) {
+ if (tagValueDefinitionProvider == null) {
if (log.isDebugEnabled()) {
- log.debug("No properties provider filled, will instanciate a new default one");
+ log.debug("No tag value provider filled, will instanciate a new default one");
}
- setModelPropertiesProvider(ModelPropertiesProviders.newStore(getClass().getClassLoader(), false));
+ setTagValueDefinitionProvider(TagValueDefinitionProviders.newProvider(getClass().getClassLoader(), false));
}
+ if (stereotypeDefinitionProvider == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("No stereotype provider filled, will instanciate a new default one");
+ }
+ setStereotypeDefinitionProvider(StereotypeDefinitionProviders.newProvider(getClass().getClassLoader(), false));
+ }
+
+// if (modelPropertiesProvider == null) {
+// if (log.isDebugEnabled()) {
+// log.debug("No properties provider filled, will instanciate a new default one");
+// }
+// setModelPropertiesProvider(ModelPropertiesUtil.newStore(getClass().getClassLoader(), false));
+// }
}
@Override
@@ -292,7 +308,7 @@
boolean safe = false;
try {
- modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
+ tagValueDefinitionProvider.validate(tag, ObjectModel.class);
safe = true;
} catch (TagValueNotFoundException e) {
if (log.isWarnEnabled()) {
@@ -313,7 +329,7 @@
if (safe) {
// test if tagValue is deprecated
- boolean deprecated = modelPropertiesProvider.isDeprecatedTagValue(tag);
+ boolean deprecated = tagValueDefinitionProvider.isDeprecated(tag);
if (deprecated) {
if (log.isWarnEnabled()) {
log.warn("Deprecated tagValue usage [" + key + "] : " + value);
@@ -356,24 +372,18 @@
// target real type
Class<?> targetType = getTargetType(target);
- boolean safe = modelPropertiesProvider.containsStereotype(value);
+ boolean safe = false;
- if (!safe) {
-
- // stereotype unknown
+ try {
+ stereotypeDefinitionProvider.validate(value, targetType);
+ safe = true;
+ } catch (StereotypeNotFoundException e) {
if (log.isWarnEnabled()) {
- log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' is unknown.");
+ log.warn("Invalid model stereotype [" + key + "] : the stereotype '" + value + "' is unknown.");
}
- } else {
-
- safe = modelPropertiesProvider.acceptStereotype(value, targetType);
-
- if (!safe) {
-
- // the stereotype can not be apply of the given target
- if (log.isWarnEnabled()) {
- log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' can not be apply on " + target + ".");
- }
+ } catch (MismatchStereotypeTargetException e) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid model stereotype [" + key + "] : this stereotype '" + value + "' can not be apply on '" + targetType + "'.");
}
}
@@ -386,7 +396,7 @@
if (safe) {
// test if tagValue is deprecated
- boolean deprecated = modelPropertiesProvider.isDeprecatedStereotype(value);
+ boolean deprecated = stereotypeDefinitionProvider.isDeprecated(value);
if (deprecated) {
if (log.isWarnEnabled()) {
log.warn("Deprecated stereotype usage [" + key + "] : " + value);
@@ -473,7 +483,7 @@
boolean safe = false;
try {
- modelPropertiesProvider.acceptTagValue(tag, targetType);
+ tagValueDefinitionProvider.validate(tag, targetType);
safe = true;
} catch (TagValueNotFoundException e) {
if (log.isWarnEnabled()) {
@@ -494,7 +504,7 @@
if (safe) {
// test if tagValue is deprecated
- boolean deprecated = modelPropertiesProvider.isDeprecatedTagValue(tag);
+ boolean deprecated = tagValueDefinitionProvider.isDeprecated(tag);
if (deprecated) {
if (log.isWarnEnabled()) {
log.warn("Deprecated tagValue usage [" + key + "] : " + value);
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -29,7 +29,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.EugeneTagValues;
import org.nuiton.eugene.models.object.ObjectModelElement;
import org.nuiton.eugene.models.object.ObjectModelJavaModifier;
import org.nuiton.eugene.models.object.ObjectModelModifier;
@@ -186,7 +186,7 @@
public String getDocumentation() {
// if (documentation == null && hasTagValue("documentation")) {
if (documentation == null) {
- String doc = GeneratorUtil.getDocumentationTagValue(this);
+ String doc = EugeneTagValues.getDocumentationTagValue(this);
if (StringUtils.isNotEmpty(doc)) {
documentation = doc;
}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/AggregateStereotypeDefinitionProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/AggregateStereotypeDefinitionProvider.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/AggregateStereotypeDefinitionProvider.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,71 @@
+package org.nuiton.eugene.models.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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ServiceLoader;
+
+/**
+ * Created on 4/27/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class AggregateStereotypeDefinitionProvider extends StereotypeDefinitionProvider {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(AggregateStereotypeDefinitionProvider.class);
+
+ protected ClassLoader loader;
+
+ private Iterable<StereotypeDefinitionProvider> stereotypeDefinitionFactories;
+
+ public AggregateStereotypeDefinitionProvider(ClassLoader loader) {
+ this.loader = loader;
+ }
+
+ public AggregateStereotypeDefinitionProvider(Iterable<StereotypeDefinitionProvider> stereotypeDefinitionFactories) {
+ this.stereotypeDefinitionFactories = stereotypeDefinitionFactories;
+ }
+
+ @Override
+ public void initDefinition() {
+
+ if (stereotypeDefinitionFactories == null) {
+
+ stereotypeDefinitionFactories = ServiceLoader.load(StereotypeDefinitionProvider.class, loader);
+ }
+
+ for (StereotypeDefinitionProvider tagValueDefinitionFactory : stereotypeDefinitionFactories) {
+ if (isVerbose()) {
+ log.info("Will init tag value definition factory " + tagValueDefinitionFactory);
+ }
+ tagValueDefinitionFactory.setVerbose(isVerbose());
+ tagValueDefinitionFactory.init();
+ addAllDefinition(tagValueDefinitionFactory);
+ addAllDeprecated(tagValueDefinitionFactory);
+ }
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/AggregateStereotypeDefinitionProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MismatchStereotypeTargetException.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MismatchStereotypeTargetException.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MismatchStereotypeTargetException.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,33 @@
+package org.nuiton.eugene.models.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(a)codelutin.com>
+ * @since 2.9
+ */
+public class MismatchStereotypeTargetException extends Exception {
+ private static final long serialVersionUID = 1L;
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MismatchStereotypeTargetException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MyStereotypeDefinitionProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MyStereotypeDefinitionProvider.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MyStereotypeDefinitionProvider.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,16 @@
+package org.nuiton.eugene.models.stereotype;
+
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+
+/**
+ * Created on 4/27/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since XXX
+ */
+public class MyStereotypeDefinitionProvider extends StereotypeDefinitionProvider {
+
+ @StereotypeDefinition(target = ObjectModelAttribute.class,
+ documentation = "doc of your stereotype")
+ public static final String MY_STEREOTYPE = "mystereotype";
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/MyStereotypeDefinitionProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeAble.java (from rev 1344, trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeAble.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeAble.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,49 @@
+package org.nuiton.eugene.models.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.Collection;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public interface StereotypeAble {
+
+ /**
+ * Returns the stereotypes names associated with this element.
+ *
+ * @return a Collection containing all stereotypes names associated with this element as String.
+ */
+ Collection<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);
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinition.java (from rev 1342, trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeDefinition.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinition.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinition.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,66 @@
+package org.nuiton.eugene.models.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 org.nuiton.eugene.EugeneTagValues;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * To define a stereotype.
+ * <p/>
+ * Place this annotation on the constant defining your stereotype.
+ * <p/>
+ * <br/>
+ * Example for stereotype named mystereotype which can be only put on a attribute :
+ * <pre>
+ * String STEREOTYPE_MYSTEREOTYPE = "mystereotype";
+ * \@StereotypeDefinition(target = ObjectModelAttribute.class)
+ * </pre
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @see EugeneTagValues
+ * @since 2.3
+ */
+(a)Target(ElementType.FIELD)
+(a)Retention(RetentionPolicy.RUNTIME)
+public @interface StereotypeDefinition {
+
+ /**
+ * Define the types of object model api which can use this tag value.
+ *
+ * @return the array of target object model element which can accept the tag value.
+ */
+ Class<?>[] target();
+
+ /**
+ * Obtain the english documentation of the stereotype.
+ *
+ * @return the documentation of the stereotype.
+ * @since 2.3.1
+ */
+ String documentation();
+}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProvider.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProvider.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,177 @@
+package org.nuiton.eugene.models.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 com.google.common.collect.ImmutableMap;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.EugeneStereoTypes;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * To describe stereotype definitions you can use on your model. Using a such class permits to validate
+ * the stereotypes before generation.
+ * <p/>
+ * Created on 4/27/14.
+ * <h3>Howto</h3>
+ * Overrides this class adding constants with {@link StereotypeDefinition} annotations:
+ * <pre>
+ * package org.nuiton.mymodel;
+ *
+ * public class MyStereotypeDefinitionProvider extends StereotypeDefinitionProvider {
+ *
+ * \@StereotypeDefinition(target = ObjectModelAttribute.class,
+ * documentation = "doc of your stereotype")
+ * public static final String MY_STEREOTYPE = "mystereotype";
+ * }
+ * </pre>
+ * Register you provider via the {@link ServiceLoader} mecanism, create the file in your class-path
+ * {@code META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider}, and
+ * add a line
+ * <pre>org.nuiton.mymodel.MyStereotypeDefinitionProvider</pre>
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @see EugeneStereoTypes
+ * @since 2.9
+ */
+public class StereotypeDefinitionProvider {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(StereotypeDefinitionProvider.class);
+
+ protected Map<String, StereotypeDefinition> definition;
+
+ protected Set<String> deprecated;
+
+ protected boolean verbose;
+
+ protected StereotypeDefinitionProvider() {
+ definition = new TreeMap<String, StereotypeDefinition>();
+ deprecated = new HashSet<String>();
+ }
+
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ public void init() {
+ initDefinition();
+ }
+
+ public void validate(String stereotypeName, Class<?> type) throws StereotypeNotFoundException, MismatchStereotypeTargetException {
+
+ StereotypeDefinition def = getDefinition(stereotypeName);
+
+ if (def == null) {
+ throw new StereotypeNotFoundException();
+ }
+
+ boolean valid = false;
+
+ for (Class<?> target : def.target()) {
+ if (target.equals(type) || target.isAssignableFrom(type)) {
+
+ // found one accepting target
+ valid = true;
+ break;
+ }
+ }
+ if (!valid) {
+ throw new MismatchStereotypeTargetException();
+ }
+ }
+
+ public boolean isDeprecated(String stereotypeName) {
+ boolean result = deprecated.contains(stereotypeName);
+ return result;
+ }
+
+ public Map<String, StereotypeDefinition> getDefinition() {
+ return ImmutableMap.<String, StereotypeDefinition>builder().putAll(definition).build();
+ }
+
+ protected void initDefinition() {
+ try {
+ scanClass(getClass());
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Could not init stereotype provider", e);
+ }
+ }
+
+ protected StereotypeDefinition getDefinition(String stereotypeName) {
+ StereotypeDefinition result = definition.get(stereotypeName);
+ return result;
+ }
+
+ protected void scanClass(Class<?> holder) throws IllegalAccessException {
+ if (isVerbose()) {
+ log.info("Will scan " + holder.getName() + " to search some stereotype definitions...");
+ }
+ Field[] fields = holder.getDeclaredFields();
+ for (Field field : fields) {
+
+ StereotypeDefinition stereotypeDefinition =
+ field.getAnnotation(StereotypeDefinition.class);
+
+ if (stereotypeDefinition != null) {
+ String fieldName = field.getName();
+ String stereotypeName = (String) field.get(null);
+ if (isVerbose()) {
+ log.info("Detected stereotype definition [" + fieldName + ":" + stereotypeName + "] : " + Arrays.toString(stereotypeDefinition.target()));
+ }
+ addDefinition(stereotypeName, stereotypeDefinition);
+ if (field.isAnnotationPresent(Deprecated.class)) {
+ addDeprecated(stereotypeName);
+ }
+ }
+ }
+ }
+
+ protected void addDefinition(String name, StereotypeDefinition def) {
+ definition.put(name, def);
+ }
+
+ protected void addAllDefinition(StereotypeDefinitionProvider tagValueDefinitionFactory) {
+ definition.putAll(tagValueDefinitionFactory.definition);
+ }
+
+ protected void addDeprecated(String name) {
+ deprecated.add(name);
+ }
+
+ protected void addAllDeprecated(StereotypeDefinitionProvider tagValueDefinitionFactory) {
+ deprecated.addAll(tagValueDefinitionFactory.deprecated);
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProviders.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProviders.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProviders.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,82 @@
+package org.nuiton.eugene.models.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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Created on 4/27/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class StereotypeDefinitionProviders {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(StereotypeDefinitionProviders.class);
+
+ /**
+ * Obtain a new provider of stereotype definitions.
+ *
+ * @param loader the classloader to use (if none given will use the one of the current thread)
+ * @param verbose verbose flag
+ * @return the aggregate provider of stereotype definitions detected in the class-path
+ */
+ public static StereotypeDefinitionProvider newProvider(ClassLoader loader, boolean verbose) {
+
+ if (loader == null) {
+
+ // use the current thread loader
+ loader = Thread.currentThread().getContextClassLoader();
+ }
+
+ StereotypeDefinitionProvider store = new AggregateStereotypeDefinitionProvider(loader);
+ store.setVerbose(verbose || log.isDebugEnabled());
+ try {
+ store.init();
+ } catch (Exception e) {
+ throw new RuntimeException("Could not init stereotype definition provider", e);
+ }
+ return store;
+ }
+
+ /**
+ * Obtain a new provider of stereotype definitions.
+ *
+ * @param providers the list of providers to use in the factory
+ * @param verbose verbose flag
+ * @return the aggregate provider of stereotype definitions detected in the class-path
+ */
+ public static StereotypeDefinitionProvider newProvider(Iterable<StereotypeDefinitionProvider> providers, boolean verbose) {
+
+ StereotypeDefinitionProvider store = new AggregateStereotypeDefinitionProvider(providers);
+ store.setVerbose(verbose || log.isDebugEnabled());
+ try {
+ store.init();
+ } catch (Exception e) {
+ throw new RuntimeException("Could not init stereotype definition provider", e);
+ }
+ return store;
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProviders.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeNotFoundException.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeNotFoundException.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeNotFoundException.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,33 @@
+package org.nuiton.eugene.models.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(a)codelutin.com>
+ * @since 2.9
+ */
+public class StereotypeNotFoundException extends Exception {
+ private static final long serialVersionUID = 1L;
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/StereotypeNotFoundException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/package-info.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/package-info.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/package-info.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,34 @@
+/*
+ * #%L
+ * EUGene :: EUGene
+ * *
+ * $Id$
+ * $HeadURL: https://nuiton.org/svn/eugene/trunk/eugene/src/main/java/org/nuiton/eugene/… $
+ * %%
+ * Copyright (C) 2004 - 2010 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%
+ */
+
+/**
+ * This package contains stereotype API.
+ *
+ * <strong>Note:</strong> Replace the deprecated class {@link org.nuiton.eugene.ModelPropertiesUtil}.
+ *
+ * @since 2.9
+ */
+package org.nuiton.eugene.models.stereotype;
+
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/stereotype/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/AggregateTagValueDefinitionProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/AggregateTagValueDefinitionProvider.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/AggregateTagValueDefinitionProvider.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,71 @@
+package org.nuiton.eugene.models.tagvalue;
+
+/*
+ * #%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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ServiceLoader;
+
+/**
+ * Created on 4/27/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class AggregateTagValueDefinitionProvider extends TagValueDefinitionProvider {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(AggregateTagValueDefinitionProvider.class);
+
+ protected ClassLoader loader;
+
+ private Iterable<TagValueDefinitionProvider> tagValueDefinitionFactories;
+
+ public AggregateTagValueDefinitionProvider(ClassLoader loader) {
+ this.loader = loader;
+ }
+
+ public AggregateTagValueDefinitionProvider(Iterable<TagValueDefinitionProvider> tagValueDefinitionFactories) {
+ this.tagValueDefinitionFactories = tagValueDefinitionFactories;
+ }
+
+ @Override
+ public void initDefinition() {
+
+ if (tagValueDefinitionFactories == null) {
+
+ tagValueDefinitionFactories = ServiceLoader.load(TagValueDefinitionProvider.class, loader);
+ }
+
+ for (TagValueDefinitionProvider tagValueDefinitionProvider : tagValueDefinitionFactories) {
+ if (isVerbose()) {
+ log.info("Will init tag value definition factory " + tagValueDefinitionProvider);
+ }
+ tagValueDefinitionProvider.setVerbose(isVerbose());
+ tagValueDefinitionProvider.init();
+ addAllDefinition(tagValueDefinitionProvider);
+ addAllDeprecated(tagValueDefinitionProvider);
+ }
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/AggregateTagValueDefinitionProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/MismatchTagValueTargetException.java (from rev 1345, trunk/eugene/src/main/java/org/nuiton/eugene/metas/MismatchTagValueTargetException.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/MismatchTagValueTargetException.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/MismatchTagValueTargetException.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,33 @@
+package org.nuiton.eugene.models.tagvalue;
+
+/*
+ * #%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/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class MismatchTagValueTargetException extends Exception {
+ private static final long serialVersionUID = 1L;
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueAble.java (from rev 1342, trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueAble.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueAble.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueAble.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,69 @@
+package org.nuiton.eugene.models.tagvalue;
+
+/*
+ * #%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.Map;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public interface TagValueAble {
+
+ /**
+ * Returns the tagValues associated with this element.
+ * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-)
+ *
+ * @return a Map containing all tagValues associated with this element
+ */
+ Map<String, String> getTagValues();
+
+ /**
+ * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
+ *
+ * @param tagValue tag value key
+ * @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
+ */
+ String getTagValue(String tagValue);
+
+ /**
+ * Adds the given {@code value} associated to the {@code tagValue}.
+ * <p/>
+ * Note: If a previous tag value was definied, then it will be replaced.
+ *
+ * @param tagValue the name of the tag value
+ * @param value the value to associate
+ * @since 2.1.2
+ */
+ void addTagValue(String tagValue, String value);
+
+ /**
+ * Returns whether this element has a tagValue corresponding to the given name, or not.
+ *
+ * @param tagValue tag value name
+ * @return a boolean indicating whether this element has a tagValue corresponding to the given name, or not.
+ */
+ boolean hasTagValue(String tagValue);
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinition.java (from rev 1345, trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinition.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinition.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,78 @@
+package org.nuiton.eugene.models.tagvalue;
+
+/*
+ * #%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 org.nuiton.eugene.models.tagvalue.matcher.EqualsTagValueNameMatcher;
+import org.nuiton.eugene.models.tagvalue.matcher.TagValueDefinitionMatcher;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * To define a tag value.
+ * <p/>
+ * Place this annotation on the constant defining your tag-value.
+ * <p/>
+ * Example for tag value named mytagvalut which can be only put on a attribute :
+ * <pre>
+ * String TAG_VALUE_MYTAGVALUE = "mytagvalue";
+ * \@TagValueDefinition(target = ObjectModelAttribute.class)
+ * </pre
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @see org.nuiton.eugene.EugeneTagValues
+ * @since 2.3
+ */
+(a)Target(ElementType.FIELD)
+(a)Retention(RetentionPolicy.RUNTIME)
+public @interface TagValueDefinition {
+
+ /**
+ * Define the types of object model api which can use this tag value.
+ *
+ * @return the array of target object model element which can accept the tag value.
+ */
+ Class<?>[] target();
+
+ /**
+ * Obtain the english documentation of the tag value.
+ *
+ * @return the documentation of the tag value.
+ * @since 2.3.1
+ */
+ String documentation();
+
+ /**
+ * @return the matcher used to find out back a tagValue definition from his name.
+ * @since 2.9
+ */
+ Class<? extends TagValueDefinitionMatcher> matcherClass() default EqualsTagValueNameMatcher.class;
+
+ /**
+ * @return the default value to use, if not setted then do NOT use the default value.
+ * @since 2.9
+ */
+ String defaultValue() default "";
+}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProvider.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProvider.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,227 @@
+package org.nuiton.eugene.models.tagvalue;
+
+/*
+ * #%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.collect.ImmutableMap;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.EugeneTagValues;
+import org.nuiton.eugene.models.tagvalue.matcher.EqualsTagValueNameMatcher;
+import org.nuiton.eugene.models.tagvalue.matcher.StartsWithTagNameMatcher;
+import org.nuiton.eugene.models.tagvalue.matcher.TagValueDefinitionMatcher;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * To describe tag value definitions you can use on your model. Using a such class permits to validate
+ * the tag values before generation.
+ * <p/>
+ * Created on 4/27/14.
+ * <h3>Howto</h3>
+ * Overrides this class adding constants with {@link TagValueDefinition} annotations:
+ * <pre>
+ * package org.nuiton.mymodel;
+ *
+ * public class MyTagValueDefinitionProvider extends TagValueDefinitionProvider {
+ *
+ * \@TagvalueDefinition(target = ObjectModelAttribute.class,
+ * documentation = "doc of your tagValue")
+ * public static final String MY_TAG_VALUE = "mytagvalue";
+ * }
+ * </pre>
+ * Register you provider via the {@link ServiceLoader} mecanism, create the file in your class-path
+ * {@code META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider}, and
+ * add a line
+ * <pre>org.nuiton.mymodel.MyTagValueDefinitionProvider</pre>
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @see EugeneTagValues
+ * @since 2.9
+ */
+public class TagValueDefinitionProvider {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(TagValueDefinitionProvider.class);
+
+ protected Map<String, TagValueDefinition> definition;
+
+ protected Set<String> deprecated;
+
+ protected Set<TagValueDefinitionMatcher> matcher;
+
+ protected boolean verbose;
+
+ public TagValueDefinitionProvider() {
+ definition = new HashMap<String, TagValueDefinition>();
+ deprecated = new HashSet<String>();
+ matcher = new HashSet<TagValueDefinitionMatcher>();
+ }
+
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ public void init() {
+ initDefinition();
+ initMatcher();
+ }
+
+ public boolean isDeprecated(String tagValueName) {
+ boolean result = this.deprecated.contains(tagValueName);
+ return result;
+ }
+
+ public void validate(String tagValueName, Class<?> type) throws TagValueNotFoundException, MismatchTagValueTargetException {
+
+ TagValueDefinition def = getDefinition(tagValueName);
+
+ if (def == null) {
+ throw new TagValueNotFoundException();
+ }
+
+ boolean valid = false;
+
+ for (Class<?> target : def.target()) {
+ if (target.equals(type) || target.isAssignableFrom(type)) {
+
+ // found one accepting target
+ valid = true;
+ break;
+ }
+ }
+
+ if (!valid) {
+ throw new MismatchTagValueTargetException();
+ }
+ }
+
+ public String getDefaultValue(String tagValueName) {
+ TagValueDefinition tagValueDefinition = getDefinition(tagValueName);
+ String defaultValue = null;
+ if (tagValueDefinition != null) {
+ defaultValue = tagValueDefinition.defaultValue();
+ }
+ return defaultValue;
+ }
+
+ public Map<String, TagValueDefinition> getDefinition() {
+ return ImmutableMap.<String, TagValueDefinition>builder().putAll(definition).build();
+ }
+
+ protected void initDefinition() {
+ try {
+ scanClass(getClass());
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Could not init definition provider", e);
+ }
+ }
+
+ protected TagValueDefinition getDefinition(String tagValueName) {
+ TagValueDefinition def = null;
+
+ for (TagValueDefinitionMatcher tagValueDefinitionMatcher : matcher) {
+ def = tagValueDefinitionMatcher.match(tagValueName);
+ if (def != null) {
+ break;
+ }
+ }
+ return def;
+ }
+
+ protected void addDefinition(String name, TagValueDefinition def) {
+ definition.put(name, def);
+ }
+
+ protected void addAllDefinition(TagValueDefinitionProvider provider) {
+ definition.putAll(provider.definition);
+ }
+
+ protected void addDeprecated(String name) {
+ deprecated.add(name);
+ }
+
+ protected void addAllDeprecated(TagValueDefinitionProvider provider) {
+ deprecated.addAll(provider.deprecated);
+ }
+
+ protected void addMatcher(TagValueDefinitionMatcher matcher) {
+ this.matcher.add(matcher);
+ }
+
+ protected void scanClass(Class<?> holder) throws IllegalAccessException {
+ if (isVerbose()) {
+ log.info("Will scan " + holder.getName() + " to search some tag value definitions...");
+ }
+ Field[] fields = holder.getDeclaredFields();
+ for (Field field : fields) {
+
+ TagValueDefinition tagValueDefinition =
+ field.getAnnotation(TagValueDefinition.class);
+ if (tagValueDefinition != null) {
+ String fieldName = field.getName();
+ String tagValueName = (String) field.get(null);
+ if (isVerbose()) {
+ log.info("Detected tag value definition [" + fieldName + ":" + tagValueName + "] : " + Arrays.toString(tagValueDefinition.target()));
+ }
+ addDefinition(tagValueName, tagValueDefinition);
+ if (field.isAnnotationPresent(Deprecated.class)) {
+ addDeprecated(tagValueName);
+ }
+ }
+ }
+ }
+
+ protected void initMatcher() {
+
+ {
+ Map<String, TagValueDefinition> tagValueDefinitionForMatcher = getDefinitionForMatcher(EqualsTagValueNameMatcher.class);
+ addMatcher(new EqualsTagValueNameMatcher(tagValueDefinitionForMatcher));
+ }
+
+ {
+ Map<String, TagValueDefinition> tagValueDefinitionForMatcher = getDefinitionForMatcher(StartsWithTagNameMatcher.class);
+ addMatcher(new StartsWithTagNameMatcher(tagValueDefinitionForMatcher));
+ }
+ }
+
+ protected <M extends TagValueDefinitionMatcher> Map<String, TagValueDefinition> getDefinitionForMatcher(Class<M> matcherType) {
+ Map<String, TagValueDefinition> result = new TreeMap<String, TagValueDefinition>();
+ for (Map.Entry<String, TagValueDefinition> entry : definition.entrySet()) {
+ if (matcherType.equals(entry.getValue().matcherClass())) {
+ result.put(entry.getKey(), entry.getValue());
+ }
+ }
+ return result;
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProviders.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProviders.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProviders.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,82 @@
+package org.nuiton.eugene.models.tagvalue;
+
+/*
+ * #%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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Created on 4/27/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class TagValueDefinitionProviders {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(TagValueDefinitionProviders.class);
+
+ /**
+ * Obtain a new provider of tag value definitions.
+ *
+ * @param loader the classloader to use (if none given will use the one of the current thread)
+ * @param verbose verbose flag
+ * @return the aggregate provider of tag value definitions detected in the class-path
+ */
+ public static TagValueDefinitionProvider newProvider(ClassLoader loader, boolean verbose) {
+
+ if (loader == null) {
+
+ // use the current thread loader
+ loader = Thread.currentThread().getContextClassLoader();
+ }
+
+ TagValueDefinitionProvider store = new AggregateTagValueDefinitionProvider(loader);
+ store.setVerbose(verbose || log.isDebugEnabled());
+ try {
+ store.init();
+ } catch (Exception e) {
+ throw new RuntimeException("Could not init tag value definition provider", e);
+ }
+ return store;
+ }
+
+ /**
+ * Obtain a new provider of tag value definitions.
+ *
+ * @param providers the list of providers to use in the factory
+ * @param verbose verbose flag
+ * @return the aggregate provider of tag value definitions detected in the class-path
+ */
+ public static TagValueDefinitionProvider newProvider(Iterable<TagValueDefinitionProvider> providers, boolean verbose) {
+
+ TagValueDefinitionProvider store = new AggregateTagValueDefinitionProvider(providers);
+ store.setVerbose(verbose || log.isDebugEnabled());
+ try {
+ store.init();
+ } catch (Exception e) {
+ throw new RuntimeException("Could not init tag value definition provider", e);
+ }
+ return store;
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProviders.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueNotFoundException.java (from rev 1344, trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueNotFoundException.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueNotFoundException.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValueNotFoundException.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,33 @@
+package org.nuiton.eugene.models.tagvalue;
+
+/*
+ * #%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/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class TagValueNotFoundException extends Exception {
+ private static final long serialVersionUID = 1L;
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValues.java (from rev 1342, trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValues.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValues.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/TagValues.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,113 @@
+package org.nuiton.eugene.models.tagvalue;
+
+/*
+ * #%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 org.apache.commons.lang3.StringUtils;
+import org.nuiton.eugene.models.object.ObjectModelElement;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class TagValues {
+
+ /**
+ * Seek for a boolean tag value.
+ * <p/>
+ * Will first the tag value using the method {@link #findTagValue(String, TagValueAble...)}.
+ * <p/>
+ * If found, return {@code true}, if the value is not null and is {@code "true"} String value.
+ * <p/>
+ * <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 tagName tag name to find
+ * @param elements not null elements to test
+ * @return found boolean tag value or {@code false} if tag value is not found, nor having
+ * exactly {@code "true"} value.
+ * @since 2.9
+ */
+ public static boolean findBooleanTagValue(String tagName, TagValueAble... elements) {
+
+ String value = findTagValue(tagName, elements);
+ return value != null && "true".equals(value);
+
+ }
+
+ /**
+ * Seek for a tag value amoung elements given using these rules:
+ * <ul>
+ * <li>Look into {@code elements} and return the first not empty tag value 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
+ * value found.</li>
+ * <li>If not found return {@code null}</li>
+ * </ul>
+ * <p/>
+ * <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 tagName tag name to find
+ * @param elements not null elements to test
+ * @return found tag value or {@code null} if not found
+ * @since 2.9
+ */
+ public static String findTagValue(String tagName, TagValueAble... elements) {
+
+ for (TagValueAble element : elements) {
+ String value = findNotEmptyTagValue(tagName, element);
+ if (value != null) {
+ return value;
+ }
+ }
+
+ for (TagValueAble element : elements) {
+ if (element instanceof ObjectModelElement) {
+ // try in declaring element
+ ObjectModelElement declaringElement = ((ObjectModelElement) element).getDeclaringElement();
+ if (declaringElement != null) {
+ String value = findNotEmptyTagValue(tagName, declaringElement);
+ if (value != null) {
+ return value;
+ }
+ }
+ }
+ }
+ return null;
+
+ }
+
+ public static String findNotEmptyTagValue(String tagName, TagValueAble element) {
+ String value = element.getTagValue(tagName);
+ if (StringUtils.isEmpty(value)) {
+ value = null;
+ }
+ return value;
+
+ }
+
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/EqualsTagValueNameMatcher.java (from rev 1345, trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/EqualsTagValueNameMatcher.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/EqualsTagValueNameMatcher.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,45 @@
+package org.nuiton.eugene.models.tagvalue.matcher;
+
+/*
+ * #%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 org.nuiton.eugene.models.tagvalue.TagValueDefinition;
+
+import java.util.Map;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class EqualsTagValueNameMatcher extends TagValueDefinitionMatcher {
+
+ public EqualsTagValueNameMatcher(Map<String, TagValueDefinition> tagValueDefinitionMap) {
+ super(tagValueDefinitionMap);
+ }
+
+ @Override
+ protected boolean accept(String tagValueName, Map.Entry<String, TagValueDefinition> entry) {
+ return entry.getKey().equals(tagValueName);
+ }
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/StartsWithTagNameMatcher.java (from rev 1345, trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/StartsWithTagNameMatcher.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/StartsWithTagNameMatcher.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,46 @@
+package org.nuiton.eugene.models.tagvalue.matcher;
+
+/*
+ * #%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 org.nuiton.eugene.models.tagvalue.TagValueDefinition;
+
+import java.util.Map;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class StartsWithTagNameMatcher extends TagValueDefinitionMatcher {
+
+ public StartsWithTagNameMatcher(Map<String, TagValueDefinition> tagValueDefinitionMap) {
+ super(tagValueDefinitionMap);
+ }
+
+ @Override
+ protected boolean accept(String tagValueName, Map.Entry<String, TagValueDefinition> entry) {
+ return tagValueName.startsWith(entry.getKey());
+ }
+
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/TagValueDefinitionMatcher.java (from rev 1345, trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/TagValueDefinitionMatcher.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/matcher/TagValueDefinitionMatcher.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,60 @@
+package org.nuiton.eugene.models.tagvalue.matcher;
+
+/*
+ * #%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.collect.ImmutableMap;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinition;
+
+import java.util.Map;
+
+/**
+ * To match a Tag value name.
+ * <p/>
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public abstract class TagValueDefinitionMatcher {
+
+ protected Map<String, TagValueDefinition> tagValueDefinitionMap;
+
+ public TagValueDefinitionMatcher(Map<String, TagValueDefinition> tagValueDefinitionMap) {
+ this.tagValueDefinitionMap = ImmutableMap.<String, TagValueDefinition>builder().putAll(tagValueDefinitionMap).build();
+ }
+
+ public TagValueDefinition match(String tagValueName) {
+ TagValueDefinition tagValueDefinition = null;
+ for (Map.Entry<String, TagValueDefinition> entry : tagValueDefinitionMap.entrySet()) {
+ if (accept(tagValueName, entry)) {
+ // found tag value definition
+ tagValueDefinition = entry.getValue();
+ break;
+ }
+ }
+ return tagValueDefinition;
+ }
+
+ protected abstract boolean accept(String tagValueName, Map.Entry<String, TagValueDefinition> entry);
+
+}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/package-info.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/package-info.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/package-info.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,34 @@
+/*
+ * #%L
+ * EUGene :: EUGene
+ * *
+ * $Id$
+ * $HeadURL: https://nuiton.org/svn/eugene/trunk/eugene/src/main/java/org/nuiton/eugene/… $
+ * %%
+ * Copyright (C) 2004 - 2010 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%
+ */
+
+/**
+ * This package contains tag value API.
+ *
+ * <strong>Note:</strong> Replace the deprecated class {@link org.nuiton.eugene.ModelPropertiesUtil}.
+ *
+ * @since 2.9
+ */
+package org.nuiton.eugene.models.tagvalue;
+
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/models/tagvalue/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider
===================================================================
--- trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider 2014-04-27 12:17:19 UTC (rev 1346)
@@ -1 +0,0 @@
-org.nuiton.eugene.EugeneModelPropertiesProvider
\ No newline at end of file
Added: trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider
===================================================================
--- trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider (rev 0)
+++ trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1 @@
+org.nuiton.eugene.EugeneStereoTypes
\ No newline at end of file
Added: trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider
===================================================================
--- trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider (rev 0)
+++ trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1 @@
+org.nuiton.eugene.EugeneTagValues
\ No newline at end of file
Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -1,168 +0,0 @@
-/*
- * #%L
- * EUGene :: EUGene
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2004 - 2010 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%
- */
-package org.nuiton.eugene;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.nuiton.eugene.metas.MismatchTagValueTargetException;
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
-import org.nuiton.eugene.metas.TagValueNotFoundException;
-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;
-
-/**
- * To test {@link EugeneModelPropertiesProvider}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.3
- */
-public class EugeneModelPropertiesProviderTest {
-
- protected ModelPropertiesProvider provider;
-
- @Before
- public void setUp() throws Exception {
- provider = new EugeneModelPropertiesProvider();
- provider.init();
- }
-
- @Test
- public void getTagValueTarget() throws Exception {
- getTagValueTarget(EugeneTagValues.TAG_CONSTANT_PREFIX, ObjectModel.class, ObjectModelClassifier.class);
- getTagValueTarget(EugeneTagValues.TAG_I18N_PREFIX, ObjectModel.class, ObjectModelClassifier.class);
- getTagValueTarget(EugeneTagValues.TAG_VERSION, ObjectModel.class);
- }
-
- @Test
- public void containsTagValue() throws Exception {
- containsTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, true);
- containsTagValue(EugeneTagValues.TAG_I18N_PREFIX, true);
- containsTagValue(EugeneTagValues.TAG_VERSION, true);
-
- long l = System.nanoTime();
- containsTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX + l, false);
- containsTagValue(EugeneTagValues.TAG_I18N_PREFIX + l, false);
- containsTagValue(EugeneTagValues.TAG_VERSION + l, false);
- }
-
- @Test
- public void acceptTagValue() throws Exception {
- acceptTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
- acceptTagValue(EugeneTagValues.TAG_I18N_PREFIX, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
- acceptTagValue(EugeneTagValues.TAG_VERSION, true, ObjectModel.class);
-
- acceptTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, false, ObjectModelOperation.class, ObjectModelAttribute.class);
- acceptTagValue(EugeneTagValues.TAG_I18N_PREFIX, false, ObjectModelOperation.class, ObjectModelAttribute.class);
- acceptTagValue(EugeneTagValues.TAG_VERSION, false, ObjectModelClassifier.class, ObjectModelOperation.class, ObjectModelAttribute.class);
-
- long l = System.nanoTime();
- acceptTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
- acceptTagValue(EugeneTagValues.TAG_I18N_PREFIX + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
- acceptTagValue(EugeneTagValues.TAG_VERSION + l, false, ObjectModelClassifier.class, ObjectModelOperation.class, ObjectModelAttribute.class);
- }
-
- @Test
- public void getStereotypeTarget() throws Exception {
-
- getStereotypeTarget(EugeneStereoTypes.STEREOTYPE_INDEXED, ObjectModelAttribute.class);
- }
-
- @Test
- public void containsStereotype() throws Exception {
- containsStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED, true);
-
- long l = System.nanoTime();
- containsStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED + l, false);
- }
-
- @Test
- public void acceptStereotype() throws Exception {
-
- acceptStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED, true, ObjectModelAttribute.class);
-
- acceptStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED, false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class);
-
- long l = System.nanoTime();
- acceptStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED + l, false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class);
-
- }
-
- protected void getTagValueTarget(String name, Class<?>... expected) {
- Class<?>[] classes = provider.getTagValueTarget(name);
- Assert.assertNotNull("Could not find target for " + name, classes);
- Assert.assertEquals("Should have " + expected.length + " targets for " + name + " but had " + classes.length, classes.length, expected.length);
- Assert.assertArrayEquals(expected, classes);
- }
-
- protected void containsTagValue(String name, boolean expected) {
- try {
- provider.acceptTagValue(name, Object.class);
- Assert.assertTrue(expected);
- } catch (TagValueNotFoundException e) {
- Assert.assertFalse(expected);
- } catch (MismatchTagValueTargetException e) {
- // dont care
- }
-
- }
-
- protected void acceptTagValue(String name, boolean expected, Class<?>... types) {
- for (Class<?> type : types) {
- try {
- provider.acceptTagValue(name, type);
- Assert.assertTrue(expected);
- } catch (TagValueNotFoundException e) {
- Assert.assertFalse(expected);
- } catch (MismatchTagValueTargetException e) {
- Assert.assertFalse(expected);
- }
- }
- }
-
- protected void getStereotypeTarget(String name, Class<?>... expected) {
- Class<?>[] classes = provider.getStereotypeTarget(name);
- Assert.assertNotNull("Could not find target for " + name, classes);
- Assert.assertEquals("Should have " + expected.length + " targets for " + name + " but had " + classes.length, classes.length, expected.length);
- Assert.assertArrayEquals(expected, classes);
- }
-
- protected void containsStereotype(String name, boolean expected) {
- boolean classes = provider.containsStereotype(name);
- Assert.assertEquals(expected, classes);
- }
-
- protected void acceptStereotype(String name, boolean expected, Class<?>... types) {
- for (Class<?> type : types) {
- boolean actual = provider.acceptStereotype(name, type);
- Assert.assertEquals(expected, actual);
- }
- }
-}
Added: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneStereotypesTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneStereotypesTest.java (rev 0)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneStereotypesTest.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,73 @@
+package org.nuiton.eugene;
+
+/*
+ * #%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 org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelEnumeration;
+import org.nuiton.eugene.models.object.ObjectModelInterface;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.stereotype.MismatchStereotypeTargetException;
+import org.nuiton.eugene.models.stereotype.StereotypeNotFoundException;
+
+public class EugeneStereotypesTest {
+
+ protected EugeneStereoTypes provider;
+
+ @Before
+ public void setUp() throws Exception {
+ provider = new EugeneStereoTypes();
+ provider.init();
+ }
+
+ @Test
+ public void validate() throws Exception {
+
+ validate(EugeneStereoTypes.STEREOTYPE_INDEXED, true, ObjectModelAttribute.class);
+
+ validate(EugeneStereoTypes.STEREOTYPE_INDEXED, false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class);
+
+ long l = System.nanoTime();
+ validate(EugeneStereoTypes.STEREOTYPE_INDEXED + 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 e) {
+ Assert.assertFalse(expected);
+ } catch (MismatchStereotypeTargetException e) {
+ Assert.assertFalse(expected);
+ }
+ }
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneStereotypesTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneTagValuesTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneTagValuesTest.java (rev 0)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneTagValuesTest.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,76 @@
+package org.nuiton.eugene;
+
+/*
+ * #%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 org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelEnumeration;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.tagvalue.MismatchTagValueTargetException;
+import org.nuiton.eugene.models.tagvalue.TagValueNotFoundException;
+
+public class EugeneTagValuesTest {
+
+ protected EugeneTagValues provider;
+
+ @Before
+ public void setUp() throws Exception {
+ provider = new EugeneTagValues();
+ provider.init();
+ }
+
+ @Test
+ public void validate() throws Exception {
+ validate(EugeneTagValues.TAG_CONSTANT_PREFIX, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
+ validate(EugeneTagValues.TAG_I18N_PREFIX, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
+ validate(EugeneTagValues.TAG_VERSION, true, ObjectModel.class);
+
+ validate(EugeneTagValues.TAG_CONSTANT_PREFIX, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ validate(EugeneTagValues.TAG_I18N_PREFIX, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ validate(EugeneTagValues.TAG_VERSION, false, ObjectModelClassifier.class, ObjectModelOperation.class, ObjectModelAttribute.class);
+
+ long l = System.nanoTime();
+ validate(EugeneTagValues.TAG_CONSTANT_PREFIX + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ validate(EugeneTagValues.TAG_I18N_PREFIX + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ validate(EugeneTagValues.TAG_VERSION + l, false, ObjectModelClassifier.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 (TagValueNotFoundException e) {
+ Assert.assertFalse(expected);
+ } catch (MismatchTagValueTargetException e) {
+ Assert.assertFalse(expected);
+ }
+ }
+ }
+}
\ No newline at end of file
Property changes on: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneTagValuesTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -28,7 +28,7 @@
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
-import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.TestHelper;
import org.nuiton.eugene.models.object.reader.XmlObjectModelReader;
import org.nuiton.util.FileUtil;
@@ -98,7 +98,7 @@
File result = new File(destinationDirectory, outModel);
Transformer transformer = factory.newTransformer(new StreamSource(xsl
- .openStream()));
+ .openStream()));
String basePath = xmiFile.getParent();
transformer.setURIResolver(new ResourceResolver(basePath));
@@ -142,7 +142,7 @@
*/
protected ObjectModel xmiToObjectModel(String modelName) throws URISyntaxException, IOException, TransformerException {
File xmiFile = new File(Resource.getURL("xmi/2.1/" + modelName + ".uml")
- .toURI());
+ .toURI());
File objectModelFile = transformXMI(xmiFile, modelName + ".objectmodel");
@@ -555,7 +555,7 @@
assertNotNull(model);
assertEquals("XMITest21", model.getName());
- assertEquals("model doc!", GeneratorUtil.getDocumentationTagValue(model));
+ assertEquals("model doc!", EugeneTagValues.getDocumentationTagValue(model));
// ClassC
ObjectModelClass clazzC = model.getClass("org.nuiton.eugene.test21.ClassC");
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/AbstractJavaBeanTransformer.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/AbstractJavaBeanTransformer.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/AbstractJavaBeanTransformer.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -29,6 +29,7 @@
/*{generator option: writeString = +}*/
import org.apache.commons.lang3.StringUtils;
+import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
@@ -690,7 +691,7 @@
protected void generateI18nBlockAndConstants(ObjectModelClass input,
ObjectModelClassifier output) {
- String i18nPrefix = JavaGeneratorUtil.getI18nPrefixTagValue(input, model);
+ String i18nPrefix = EugeneTagValues.getI18nPrefixTagValue(input, model);
if (!StringUtils.isEmpty(i18nPrefix)) {
generateI18nBlock(input, output, i18nPrefix);
}
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -25,9 +25,9 @@
package org.nuiton.eugene.java;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelJavaModifier;
@@ -48,7 +48,7 @@
* Since version 2.2.1, it is possible to
* <ul>
* <li>generate a simple POJO (says with no PCS support) by using the tag value {@link JavaTemplatesTagValues#TAG_NO_PCS}.</li>
- * <li>generate i18n keys using the tag value {@link JavaTemplatesTagValues#TAG_I18N_PREFIX}.</li>
+ * <li>generate i18n keys using the tag value {@link EugeneTagValues#TAG_I18N_PREFIX}.</li>
* </ul>
*
* @author tchemit <chemit(a)codelutin.com>
@@ -62,7 +62,7 @@
@Override
public void transformFromClass(ObjectModelClass input) {
- if (!JavaTemplatesGeneratorUtil.hasBeanStereotype(input)) {
+ if (!JavaTemplatesStereoTypes.hasBeanStereotype(input)) {
// not a bean
return;
@@ -145,7 +145,7 @@
Collection<ObjectModelClass> superclasses = input.getSuperclasses();
if (CollectionUtils.isNotEmpty(superclasses)) {
for (ObjectModelClass superclass : superclasses) {
- if (JavaTemplatesGeneratorUtil.hasBeanStereotype(superclass)) {
+ if (JavaTemplatesStereoTypes.hasBeanStereotype(superclass)) {
superClassIsBean = true;
break;
}
@@ -158,8 +158,8 @@
// try to find a super class by tag-value
superClass =
- JavaTemplatesGeneratorUtil.getBeanSuperClassTagValue(
- model, input);
+ JavaTemplatesTagValues.getBeanSuperClassTagValue(
+ input, model);
if (superClass != null) {
// will act as if super class is a bean
@@ -189,10 +189,10 @@
generateI18nBlockAndConstants(input, output);
- boolean usePCS = !JavaTemplatesGeneratorUtil.isNoPCS(model, input);
+ boolean usePCS = !JavaTemplatesTagValues.isNoPCS(input, model);
boolean generateBooleanGetMethods = !
- JavaTemplatesGeneratorUtil.isDoNotGenerateBooleanGetMethods(model, input);
+ EugeneTagValues.isDoNotGenerateBooleanGetMethods(input, model);
// boolean generateBooleanGetMethods =
// StringUtils.isEmpty(noGenerateBooleanGetMethods) ||
// !"true".equals(noGenerateBooleanGetMethods.trim());
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaEnumerationTransformer.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaEnumerationTransformer.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaEnumerationTransformer.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -30,6 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.EugeneStereoTypes;
import org.nuiton.eugene.models.object.ObjectModelEnumeration;
import java.util.Collection;
@@ -72,7 +73,7 @@
}
protected boolean canGenerate(ObjectModelEnumeration input) {
- boolean b = !JavaTemplatesGeneratorUtil.hasSkipStereotype(input);
+ boolean b = !EugeneStereoTypes.hasSkipStereotype(input);
if (b) {
// check if not found in class-path
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesGeneratorUtil.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesGeneratorUtil.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesGeneratorUtil.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -24,8 +24,6 @@
* #L%
*/
-import org.apache.commons.lang3.StringUtils;
-import org.nuiton.eugene.metas.TagValues;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
@@ -44,9 +42,11 @@
* @param classifier classifier to test
* @return {@code true} if stereotype was found, {@code false otherwise}
* @see JavaTemplatesStereoTypes#STEREOTYPE_BEAN
+ * @deprecated since 2.9, use now {@link JavaTemplatesStereoTypes#hasBeanStereotype(ObjectModelClassifier)}
*/
+ @Deprecated
public static boolean hasBeanStereotype(ObjectModelClassifier classifier) {
- return classifier.hasStereotype(JavaTemplatesStereoTypes.STEREOTYPE_BEAN);
+ return JavaTemplatesStereoTypes.hasBeanStereotype(classifier);
}
/**
@@ -60,11 +60,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_NO_PCS
* @since 2.3
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#isNoPCS(ObjectModelClassifier, ObjectModel)}
*/
public static boolean isNoPCS(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_NO_PCS, classifier, model);
// return value != null && "true".equals(value);
- boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_NO_PCS, classifier, model);
+ boolean value = JavaTemplatesTagValues.isNoPCS(classifier, model);
return value;
}
@@ -79,10 +80,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_BEAN_SUPER_CLASS
* @since 2.3
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getBeanSuperClassTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getBeanSuperClassTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, classifier, model);
+ String value = JavaTemplatesTagValues.getBeanSuperClassTagValue(classifier, model);
return value;
}
@@ -97,10 +100,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_SUPER_CLASS
* @since 2.6.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanSuperClassTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanSuperClassTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_SUPER_CLASS, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_SUPER_CLASS, classifier, model);
+ String value = JavaTemplatesTagValues.getSimpleBeanSuperClassTagValue(classifier, model);
return value;
}
@@ -115,12 +120,14 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_GENERATE_INTERFACE
* @since 2.3
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#isSimpleBeanGenerateInterface(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static boolean isSimpleBeanGenerateInterface(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_INTERFACE, classifier, model);
// return value != null && "true".equals(value);
- boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_INTERFACE, classifier, model);
- return value ;
+ boolean value = JavaTemplatesTagValues.isSimpleBeanGenerateInterface(classifier, model);
+ return value;
}
/**
@@ -131,11 +138,13 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_GENERATE_FACTORY
* @since 2.7.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#isSimpleBeanGenerateFactory(ObjectModel)}
*/
+ @Deprecated
public static boolean isSimpleBeanGenerateFactory(ObjectModel model) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_FACTORY, null, model);
// return value != null && "true".equals(value);
- boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_FACTORY, model);
+ boolean value = JavaTemplatesTagValues.isSimpleBeanGenerateFactory(model);
return value;
}
@@ -150,10 +159,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS
* @since 2.6.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanInterfaceSuperClassTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanInterfaceSuperClassTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS, classifier, model);
+ String value = JavaTemplatesTagValues.getSimpleBeanInterfaceSuperClassTagValue(classifier, model);
return value;
}
@@ -168,10 +179,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX
* @since 2.6.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanClassNamePrefixTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanClassNamePrefixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX, classifier, model);
+ String value = JavaTemplatesTagValues.getSimpleBeanClassNamePrefixTagValue(classifier, model);
return value;
}
@@ -186,10 +199,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX
* @since 2.6.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanClassNameSuffixTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanClassNameSuffixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX, classifier, model);
+ String value = JavaTemplatesTagValues.getSimpleBeanClassNameSuffixTagValue(classifier, model);
return value;
}
@@ -204,10 +219,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX
* @since 2.6.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanInterfaceNamePrefixTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanInterfaceNamePrefixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX, classifier, model);
+ String value = JavaTemplatesTagValues.getSimpleBeanInterfaceNamePrefixTagValue(classifier, model);
return value;
}
@@ -222,10 +239,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX
* @since 2.6.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanInterfaceNameSuffixTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanInterfaceNameSuffixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX, classifier, model);
+ String value = JavaTemplatesTagValues.getSimpleBeanInterfaceNameSuffixTagValue(classifier, model);
return value;
}
@@ -240,11 +259,13 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_GENERATE_DEFAULTS
* @since 2.7.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#isSimpleBeanGenerateDefaults(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static boolean isSimpleBeanGenerateDefaults(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_DEFAULTS, classifier, model);
// return value != null && "true".equals(value);
- boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_DEFAULTS, classifier, model);
+ boolean value = JavaTemplatesTagValues.isSimpleBeanGenerateDefaults(classifier, model);
return value;
}
@@ -259,10 +280,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS
* @since 2.7.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanDefaultsSuperClassTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanDefaultsSuperClassTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS, classifier, model);
+ String value = JavaTemplatesTagValues.getSimpleBeanDefaultsSuperClassTagValue(classifier, model);
return value;
}
@@ -277,10 +300,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX
* @since 2.7.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanDefaultsClassNamePrefixTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanDefaultsClassNamePrefixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX, classifier, model);
+ String value = JavaTemplatesTagValues.getSimpleBeanDefaultsClassNamePrefixTagValue(classifier, model);
return value;
}
@@ -297,13 +322,12 @@
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see JavaTemplatesTagValues#TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX
* @since 2.6.2
+ * @deprecated since 2.9, use now {@link JavaTemplatesTagValues#getSimpleBeanDefaultsClassNameSuffixTagValue(ObjectModelClassifier, ObjectModel)}
*/
+ @Deprecated
public static String getSimpleBeanDefaultsClassNameSuffixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX, classifier, model);
- String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX, classifier, model);
- if (StringUtils.isBlank(value)) {
- value = "s";
- }
+ String value = JavaTemplatesTagValues.getSimpleBeanDefaultsClassNameSuffixTagValue(classifier, model);
return value;
}
}
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -24,7 +24,7 @@
* #L%
*/
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
+import org.nuiton.eugene.ModelPropertiesUtil;
/**
* The Java templates provider of tag values and stereotypes.
@@ -32,11 +32,13 @@
* @author tchemit <chemit(a)codelutin.com>
* @plexus.component role="org.nuiton.eugene.metas.ModelPropertiesProvider" role-hint="java"
* @since 2.5.6
+ * @deprecated since 2.9, no more used (will be removed in version 3.0). Use now {@link JavaTemplatesStereoTypes} and {@link JavaTemplatesTagValues}.
*/
-public class JavaTemplatesModelPropertiesProvider extends ModelPropertiesProvider {
+@Deprecated
+public class JavaTemplatesModelPropertiesProvider extends ModelPropertiesUtil.ModelPropertiesProvider {
@Override
- public void initStores() throws IllegalAccessException {
+ public void init() throws IllegalAccessException {
scanStereotypeClass(JavaTemplatesStereoTypes.class);
scanTagValueClass(JavaTemplatesTagValues.class);
}
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -24,26 +24,39 @@
* #L%
*/
-import org.nuiton.eugene.EugeneStereoTypes;
-import org.nuiton.eugene.metas.StereotypeDefinition;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinition;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider;
/**
* Defines all stereotypes managed by Java templates.
*
* @author tchemit <chemit(a)codelutin.com>
+ * @plexus.component role="org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider" role-hint="javaTemplates"
* @since 2.5.6
*/
-public interface JavaTemplatesStereoTypes extends EugeneStereoTypes {
+public class JavaTemplatesStereoTypes extends StereotypeDefinitionProvider {
/**
* Stereotype for JavaBean objects to place on a classifier.
*
- * @see JavaTemplatesGeneratorUtil#hasBeanStereotype(ObjectModelClassifier)
+ * @see #hasBeanStereotype(ObjectModelClassifier)
* @since 2.5.6
*/
@StereotypeDefinition(
target = ObjectModelClassifier.class,
documentation = "To specify that a class is a JavaBean")
- String STEREOTYPE_BEAN = "bean";
+ public static final String STEREOTYPE_BEAN = "bean";
+
+ /**
+ * Check if the given classifier has the {@link #STEREOTYPE_BEAN} stereotype.
+ *
+ * @param classifier classifier to test
+ * @return {@code true} if stereotype was found, {@code false otherwise}
+ * @see #STEREOTYPE_BEAN
+ */
+ public static boolean hasBeanStereotype(ObjectModelClassifier classifier) {
+ return classifier.hasStereotype(JavaTemplatesStereoTypes.STEREOTYPE_BEAN);
+ }
+
}
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -24,25 +24,28 @@
* #L%
*/
-import org.nuiton.eugene.EugeneTagValues;
-import org.nuiton.eugene.metas.TagValueDefinition;
+import org.apache.commons.lang3.StringUtils;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinition;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider;
+import org.nuiton.eugene.models.tagvalue.TagValues;
/**
* Defines all tag values managed by Java templates.
*
* @author tchemit <chemit(a)codelutin.com>
+ * @plexus.component role="org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider" role-hint="javaTemplates"
* @since 2.5.6
*/
-public interface JavaTemplatesTagValues extends EugeneTagValues {
+public class JavaTemplatesTagValues extends TagValueDefinitionProvider {
/**
* Tag value to set if do not want any pcs (says PropertyChangeSupport in a generated bean).
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#isNoPCS(ObjectModel, ObjectModelClassifier)
+ * @see #isNoPCS(ObjectModelClassifier, ObjectModel)
* @since 2.5.6
*/
@TagValueDefinition(
@@ -50,7 +53,7 @@
defaultValue = "true",
documentation = "To specify to not generate any propertyChange " +
"code for a class or any class of a model")
- String TAG_NO_PCS = "noPCS";
+ public static final String TAG_NO_PCS = "noPCS";
/**
* Tag value to use a super class for generated bean.
@@ -106,7 +109,7 @@
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getBeanSuperClassTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getBeanSuperClassTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.5.6
*/
@TagValueDefinition(
@@ -114,7 +117,7 @@
documentation = "To specify a super-class to used on generated bean " +
"for a class or any class of a model.\n" +
"(only effective with bean generator)")
- String TAG_BEAN_SUPER_CLASS = "beanSuperClass";
+ public static final String TAG_BEAN_SUPER_CLASS = "beanSuperClass";
/**
* Tag value to use a super class for generated bean.
@@ -170,7 +173,7 @@
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanSuperClassTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanSuperClassTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.5.6
*/
@TagValueDefinition(
@@ -178,14 +181,14 @@
documentation = "To specify a super-class to used on generated simple bean " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_SUPER_CLASS = "simpleBeanSuperClass";
+ public static final String TAG_SIMPLE_BEAN_SUPER_CLASS = "simpleBeanSuperClass";
/**
* To add a prefix on the name of each generated bean class.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanClassNamePrefixTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanClassNamePrefixTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.6.2
*/
@TagValueDefinition(
@@ -193,14 +196,14 @@
documentation = "To add a prefix on class name of generated bean " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX = "simpleBeanClassNamePrefix";
+ public static final String TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX = "simpleBeanClassNamePrefix";
/**
* To add a prefix on the name of each generated bean class.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanClassNameSuffixTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanClassNameSuffixTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.6.2
*/
@TagValueDefinition(
@@ -208,14 +211,14 @@
documentation = "To add a suffix on class name of generated bean " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX = "simpleBeanClassNameSuffix";
+ public static final String TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX = "simpleBeanClassNameSuffix";
/**
* To generate an interface of each simple bean.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#isSimpleBeanGenerateInterface(ObjectModel, ObjectModelClassifier)
+ * @see #isSimpleBeanGenerateInterface(ObjectModelClassifier, ObjectModel)
* @since 2.6.2
*/
@TagValueDefinition(
@@ -223,14 +226,14 @@
documentation = "To generate an interface for each bean " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_GENERATE_INTERFACE = "simpleBeanGenerateInterface";
+ public static final String TAG_SIMPLE_BEAN_GENERATE_INTERFACE = "simpleBeanGenerateInterface";
/**
* Tag value to use a super interface for generated interfaces on simple bean.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanInterfaceSuperClassTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanInterfaceSuperClassTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.6.2
*/
@TagValueDefinition(
@@ -238,14 +241,14 @@
documentation = "To specify a super-class to used on generated interfaces " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS = "simpleBeanInterfaceSuperClass";
+ public static final String TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS = "simpleBeanInterfaceSuperClass";
/**
* To add a prefix on the name of each generated interface of a simple bean.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanInterfaceNamePrefixTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanInterfaceNamePrefixTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.6.2
*/
@TagValueDefinition(
@@ -253,14 +256,14 @@
documentation = "To add a prefix on interface name of generated bean " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX = "simpleBeanInterfaceNamePrefix";
+ public static final String TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX = "simpleBeanInterfaceNamePrefix";
/**
* To add a prefix on the name of each generated interface of a simple bean.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanInterfaceNameSuffixTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanInterfaceNameSuffixTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.6.2
*/
@TagValueDefinition(
@@ -268,35 +271,35 @@
documentation = "To add a suffix on interface name of generated bean " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX = "simpleBeanInterfaceNameSuffix";
+ public static final String TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX = "simpleBeanInterfaceNameSuffix";
/**
* To generate a factory of generated simple beans.
* <p/>
* You must use it on the complete model.
*
- * @see JavaTemplatesGeneratorUtil#isSimpleBeanGenerateFactory(ObjectModel)
+ * @see #isSimpleBeanGenerateFactory(ObjectModel)
* @since 2.6.2
*/
@TagValueDefinition(
target = {ObjectModel.class},
documentation = "To generate a factory of simple bean.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_GENERATE_FACTORY = "simpleBeanGenerateFactory";
+ public static final String TAG_SIMPLE_BEAN_GENERATE_FACTORY = "simpleBeanGenerateFactory";
/**
* To generate a factory of generated simple beans.
* <p/>
* You must use it on the complete model.
*
- * @see JavaTemplatesGeneratorUtil#isSimpleBeanGenerateDefaults(ObjectModel, ObjectModelClassifier)
+ * @see #isSimpleBeanGenerateDefaults(ObjectModelClassifier, ObjectModel)
* @since 2.7.2
*/
@TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To generate defaults class with simple operations on the type.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_GENERATE_DEFAULTS = "simpleBeanGenerateDefaults";
+ public static final String TAG_SIMPLE_BEAN_GENERATE_DEFAULTS = "simpleBeanGenerateDefaults";
/**
* Tag value to use a super super-class for generated defaults class of a
@@ -304,7 +307,7 @@
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanDefaultsSuperClassTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanDefaultsSuperClassTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.7.2
*/
@TagValueDefinition(
@@ -312,14 +315,14 @@
documentation = "To specify a super-class to used on generated defaults classes" +
"for a bean or any bean of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS = "simpleBeanDefaultsSuperClass";
+ public static final String TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS = "simpleBeanDefaultsSuperClass";
/**
* To add a prefix on the name of each generated bean class.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanDefaultsClassNamePrefixTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanDefaultsClassNamePrefixTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.7.2
*/
@TagValueDefinition(
@@ -327,14 +330,14 @@
documentation = "To add a prefix on class name of generated defaults bean " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX = "simpleBeanDefaultsClassNamePrefix";
+ public static final String TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX = "simpleBeanDefaultsClassNamePrefix";
/**
* To add a suffix on the name of each generated bean class.
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
- * @see JavaTemplatesGeneratorUtil#getSimpleBeanDefaultsClassNameSuffixTagValue(ObjectModel, ObjectModelClassifier)
+ * @see #getSimpleBeanDefaultsClassNameSuffixTagValue(ObjectModelClassifier, ObjectModel)
* @since 2.6.2
*/
@TagValueDefinition(
@@ -342,7 +345,232 @@
documentation = "To add a suffix on class name of generated defaults bean " +
"for a class or any class of a model.\n" +
"(only effective with simple bean generator)")
- String TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX = "simpleBeanDefaultsClassNameSuffix";
+ public static final String TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX = "simpleBeanDefaultsClassNameSuffix";
+ /**
+ * Obtain the value of the {@link #TAG_NO_PCS} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_NO_PCS
+ * @since 2.3
+ */
+ public static boolean isNoPCS(ObjectModelClassifier classifier, ObjectModel model) {
+ boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_NO_PCS, classifier, model);
+ return value;
+ }
+ /**
+ * Obtain the value of the {@link #TAG_BEAN_SUPER_CLASS} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_BEAN_SUPER_CLASS
+ * @since 2.3
+ */
+ public static String getBeanSuperClassTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_SUPER_CLASS} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_SUPER_CLASS
+ * @since 2.6.2
+ */
+ public static String getSimpleBeanSuperClassTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_SUPER_CLASS, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_GENERATE_INTERFACE} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_GENERATE_INTERFACE
+ * @since 2.3
+ */
+ public static boolean isSimpleBeanGenerateInterface(ObjectModelClassifier classifier, ObjectModel model) {
+ boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_INTERFACE, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_GENERATE_FACTORY} tag value on the given model or classifier.
+ *
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_GENERATE_FACTORY
+ * @since 2.7.2
+ */
+ public static boolean isSimpleBeanGenerateFactory(ObjectModel model) {
+ boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_FACTORY, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS
+ * @since 2.6.2
+ */
+ public static String getSimpleBeanInterfaceSuperClassTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX
+ * @since 2.6.2
+ */
+ public static String getSimpleBeanClassNamePrefixTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX
+ * @since 2.6.2
+ */
+ public static String getSimpleBeanClassNameSuffixTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX
+ * @since 2.6.2
+ */
+ public static String getSimpleBeanInterfaceNamePrefixTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX
+ * @since 2.6.2
+ */
+ public static String getSimpleBeanInterfaceNameSuffixTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_GENERATE_DEFAULTS} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_GENERATE_DEFAULTS
+ * @since 2.7.2
+ */
+ public static boolean isSimpleBeanGenerateDefaults(ObjectModelClassifier classifier, ObjectModel model) {
+ boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_DEFAULTS, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS
+ * @since 2.7.2
+ */
+ public static String getSimpleBeanDefaultsSuperClassTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX
+ * @since 2.7.2
+ */
+ public static String getSimpleBeanDefaultsClassNamePrefixTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX, classifier, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link #TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX} tag value on the given model or classifier.
+ * <p/>
+ * It will first look on the model, and then in the given classifier.
+ * <p/>
+ * <strong>If not filled, then use default {@code s} value.</strong>
+ *
+ * @param classifier classifier to seek
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see #TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX
+ * @since 2.6.2
+ */
+ public static String getSimpleBeanDefaultsClassNameSuffixTagValue(ObjectModelClassifier classifier, ObjectModel model) {
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX, classifier, model);
+ if (StringUtils.isBlank(value)) {
+ value = "s";
+ }
+ return value;
+ }
+
}
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -31,6 +31,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.GeneratorException;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -77,7 +78,7 @@
@Override
public void transformFromClass(ObjectModelClass input) {
- if (!JavaTemplatesGeneratorUtil.hasBeanStereotype(input)) {
+ if (!JavaTemplatesStereoTypes.hasBeanStereotype(input)) {
// not a bean
return;
@@ -131,7 +132,7 @@
protected boolean canGenerateFactory(ObjectModel model, String className) {
boolean generateFactory =
- JavaTemplatesGeneratorUtil.isSimpleBeanGenerateFactory(model);
+ JavaTemplatesTagValues.isSimpleBeanGenerateFactory(model);
String defaultPackage = getDefaultPackageName();
@@ -146,7 +147,7 @@
String className) {
boolean generateInterface =
- JavaTemplatesGeneratorUtil.isSimpleBeanGenerateInterface(model, input);
+ JavaTemplatesTagValues.isSimpleBeanGenerateInterface(input, model);
// boolean generateInterface = generateTagValue != null &&
// Boolean.valueOf(generateTagValue);
@@ -194,8 +195,8 @@
boolean withInput = input != null;
boolean canGenerate =
- JavaTemplatesGeneratorUtil.isSimpleBeanGenerateDefaults(
- model, input);
+ JavaTemplatesTagValues.isSimpleBeanGenerateDefaults(
+ input, model);
if (canGenerate) {
@@ -205,7 +206,7 @@
// class is a bean
canGenerate = !input.isAbstract() &&
- JavaTemplatesGeneratorUtil.hasBeanStereotype(input);
+ JavaTemplatesStereoTypes.hasBeanStereotype(input);
}
}
@@ -232,7 +233,7 @@
for (ObjectModelClass aClass : model.getClasses()) {
if (!aClass.isAbstract() &&
- JavaTemplatesGeneratorUtil.hasBeanStereotype(aClass)) {
+ JavaTemplatesStereoTypes.hasBeanStereotype(aClass)) {
String packageName = aClass.getPackageName();
String typeName = getBeanInterfaceName(aClass);
String typeBeanName = getBeanClassName(aClass);
@@ -286,7 +287,7 @@
Collection<ObjectModelClass> superclasses = input.getSuperclasses();
if (CollectionUtils.isNotEmpty(superclasses)) {
for (ObjectModelClass superclass : superclasses) {
- if (JavaTemplatesGeneratorUtil.hasBeanStereotype(superclass)) {
+ if (JavaTemplatesStereoTypes.hasBeanStereotype(superclass)) {
superClassIsBean = true;
superClass = superclass.getPackageName() + "." +
getBeanInterfaceName(superclass);
@@ -300,8 +301,8 @@
// try to find a super class by tag-value
superClass =
- JavaTemplatesGeneratorUtil.getSimpleBeanInterfaceSuperClassTagValue(
- model, input);
+ JavaTemplatesTagValues.getSimpleBeanInterfaceSuperClassTagValue(
+ input, model);
}
boolean serializableFound = addInterfaces(input, output, superClass);
@@ -332,7 +333,7 @@
Collection<ObjectModelClass> superclasses = input.getSuperclasses();
if (CollectionUtils.isNotEmpty(superclasses)) {
for (ObjectModelClass superclass : superclasses) {
- if (JavaTemplatesGeneratorUtil.hasBeanStereotype(superclass)) {
+ if (JavaTemplatesStereoTypes.hasBeanStereotype(superclass)) {
superClassIsBean = true;
superClass = getBeanClassName(superclass);
break;
@@ -346,8 +347,8 @@
// try to find a super class by tag-value
superClass =
- JavaTemplatesGeneratorUtil.getSimpleBeanSuperClassTagValue(
- model, input);
+ JavaTemplatesTagValues.getSimpleBeanSuperClassTagValue(
+ input, model);
if (superClass != null) {
// will act as if super class is a bean
@@ -389,13 +390,12 @@
// Get available properties
List<ObjectModelAttribute> properties = getProperties(input);
- boolean usePCS = !JavaTemplatesGeneratorUtil.isNoPCS(model, input);
+ boolean usePCS = !JavaTemplatesTagValues.isNoPCS(input, model);
// boolean usePCS = StringUtils.isEmpty(noPCSTagValue) ||
// !"true".equals(noPCSTagValue.trim());
boolean generateBooleanGetMethods =
- !JavaGeneratorUtil.isDoNotGenerateBooleanGetMethods(model,
- input);
+ !EugeneTagValues.isDoNotGenerateBooleanGetMethods(input, model);
// boolean generateBooleanGetMethods =
// StringUtils.isEmpty(noGenerateBooleanGetMethods) ||
// !"true".equals(noGenerateBooleanGetMethods.trim());
@@ -448,8 +448,8 @@
// try to find a super class by tag-value
String superClassName =
- JavaTemplatesGeneratorUtil.getSimpleBeanDefaultsSuperClassTagValue(
- model, aClass);
+ JavaTemplatesTagValues.getSimpleBeanDefaultsSuperClassTagValue(
+ aClass, model);
ObjectModelClass output = createAbstractClass(abstractoutclassName, packageName);
if (StringUtils.isNotBlank(superClassName)) {
@@ -539,8 +539,8 @@
}
protected String getBeanInterfaceName(ObjectModelClass input) {
- String interfaceNamePrefix = JavaTemplatesGeneratorUtil.getSimpleBeanInterfaceNamePrefixTagValue(model, input);
- String interfaceNameSuffix = JavaTemplatesGeneratorUtil.getSimpleBeanInterfaceNameSuffixTagValue(model, input);
+ String interfaceNamePrefix = JavaTemplatesTagValues.getSimpleBeanInterfaceNamePrefixTagValue(input, model);
+ String interfaceNameSuffix = JavaTemplatesTagValues.getSimpleBeanInterfaceNameSuffixTagValue(input, model);
return generateName(
interfaceNamePrefix,
@@ -550,8 +550,8 @@
}
protected String getBeanClassName(ObjectModelClass input) {
- String classNamePrefix = JavaTemplatesGeneratorUtil.getSimpleBeanClassNamePrefixTagValue(model, input);
- String classNameSuffix = JavaTemplatesGeneratorUtil.getSimpleBeanClassNameSuffixTagValue(model, input);
+ String classNamePrefix = JavaTemplatesTagValues.getSimpleBeanClassNamePrefixTagValue(input, model);
+ String classNameSuffix = JavaTemplatesTagValues.getSimpleBeanClassNameSuffixTagValue(input, model);
return generateName(
classNamePrefix,
@@ -561,8 +561,8 @@
}
protected String getBeanDefaultsClassName(ObjectModelClass input) {
- String classNamePrefix = JavaTemplatesGeneratorUtil.getSimpleBeanDefaultsClassNamePrefixTagValue(model, input);
- String classNameSuffix = JavaTemplatesGeneratorUtil.getSimpleBeanDefaultsClassNameSuffixTagValue(model, input);
+ String classNamePrefix = JavaTemplatesTagValues.getSimpleBeanDefaultsClassNamePrefixTagValue(input, model);
+ String classNameSuffix = JavaTemplatesTagValues.getSimpleBeanDefaultsClassNameSuffixTagValue(input, model);
return generateName(
classNamePrefix,
input.getName(),
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/package-info.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/package-info.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/package-info.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -1,10 +1,10 @@
/**
* Eugene java package : Java generators.
* <pre>
- * - Generator : {@link JavaBeanTransformer } to generate a bean (with abstract and impl class).
- * - Generator : {@link JavaEnumerationTransformer } to generate a enumeration.
- * - Generator : {@link JavaInterfaceTransformer } to generate a interface.
- * - Generator : {@link SimpleJavaBeanTransformer} to generate a bean (one class and interface if required).
+ * - Generator : {@link org.nuiton.eugene.java.JavaBeanTransformer } to generate a bean (with abstract and impl class).
+ * - Generator : {@link org.nuiton.eugene.java.JavaEnumerationTransformer } to generate a enumeration.
+ * - Generator : {@link org.nuiton.eugene.java.JavaInterfaceTransformer } to generate a interface.
+ * - Generator : {@link org.nuiton.eugene.java.SimpleJavaBeanTransformer} to generate a bean (one class and interface if required).
* </pre>
*/
package org.nuiton.eugene.java;
Deleted: trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider
===================================================================
--- trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider 2014-04-27 12:17:19 UTC (rev 1346)
@@ -1 +0,0 @@
-org.nuiton.eugene.java.JavaTemplatesModelPropertiesProvider
\ No newline at end of file
Added: trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider
===================================================================
--- trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider (rev 0)
+++ trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1 @@
+org.nuiton.eugene.java.JavaTemplatesStereoTypes
\ No newline at end of file
Added: trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider
===================================================================
--- trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider (rev 0)
+++ trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1 @@
+org.nuiton.eugene.java.JavaTemplatesTagValues
\ No newline at end of file
Deleted: trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -1,160 +0,0 @@
-package org.nuiton.eugene.java;
-
-/*
- * #%L
- * EUGene :: Java templates
- * $Id$
- * $HeadURL$
- * %%
- * 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 org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.nuiton.eugene.metas.MismatchTagValueTargetException;
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
-import org.nuiton.eugene.metas.TagValueNotFoundException;
-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;
-
-/**
- * To test stereotypes and tag values of this module.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.5.6
- */
-public class JavaTemplatesModelPropertiesProviderTest {
-
- protected ModelPropertiesProvider provider;
-
- @Before
- public void setUp() throws Exception {
- provider = new JavaTemplatesModelPropertiesProvider();
- provider.init();
- }
-
- @Test
- public void getTagValueTarget() throws Exception {
- getTagValueTarget(JavaTemplatesTagValues.TAG_NO_PCS, ObjectModel.class, ObjectModelClassifier.class);
- }
-
- @Test
- public void containsTagValue() throws Exception {
- containsTagValue(JavaTemplatesTagValues.TAG_NO_PCS, true);
- containsTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, true);
-
- long l = System.nanoTime();
- containsTagValue(JavaTemplatesTagValues.TAG_NO_PCS + l, false);
- containsTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS + l, false);
- }
-
- @Test
- public void acceptTagValue() throws Exception {
- acceptTagValue(JavaTemplatesTagValues.TAG_NO_PCS, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
- acceptTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
-
- acceptTagValue(JavaTemplatesTagValues.TAG_NO_PCS, false, ObjectModelOperation.class, ObjectModelAttribute.class);
- acceptTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, false, ObjectModelOperation.class, ObjectModelAttribute.class);
-
- long l = System.nanoTime();
- acceptTagValue(JavaTemplatesTagValues.TAG_NO_PCS + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
- acceptTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
- }
-
- @Test
- public void getStereotypeTarget() throws Exception {
-
- getStereotypeTarget(JavaTemplatesStereoTypes.STEREOTYPE_BEAN, ObjectModelClassifier.class);
- }
-
- @Test
- public void containsStereotype() throws Exception {
- containsStereotype(JavaTemplatesStereoTypes.STEREOTYPE_BEAN, true);
-
- long l = System.nanoTime();
- containsStereotype(JavaTemplatesStereoTypes.STEREOTYPE_BEAN + l, false);
- }
-
- @Test
- public void acceptStereotype() throws Exception {
-
- acceptStereotype(JavaTemplatesStereoTypes.STEREOTYPE_BEAN, true, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class);
-
- acceptStereotype(JavaTemplatesStereoTypes.STEREOTYPE_BEAN, false, ObjectModel.class, ObjectModelOperation.class);
-
- long l = System.nanoTime();
- acceptStereotype(JavaTemplatesStereoTypes.STEREOTYPE_BEAN + l, false, ObjectModel.class, ObjectModelOperation.class);
-
- }
-
- protected void getTagValueTarget(String name, Class<?>... expected) {
- Class<?>[] classes = provider.getTagValueTarget(name);
- Assert.assertNotNull("Could not find target for " + name, classes);
- Assert.assertEquals("Should have " + expected.length + " targets for " + name + " but had " + classes.length, classes.length, expected.length);
- Assert.assertArrayEquals(expected, classes);
- }
-
- protected void containsTagValue(String name, boolean expected) {
- try {
- provider.acceptTagValue(name, Object.class);
- Assert.assertTrue(expected);
- } catch (TagValueNotFoundException e) {
- Assert.assertFalse(expected);
- } catch (MismatchTagValueTargetException e) {
- // don't care here
- }
- }
-
- protected void acceptTagValue(String name, boolean expected, Class<?>... types) {
- for (Class<?> type : types) {
- try {
- provider.acceptTagValue(name, type);
- Assert.assertTrue(expected);
- } catch (TagValueNotFoundException e) {
- Assert.assertFalse(expected);
- } catch (MismatchTagValueTargetException e) {
- Assert.assertFalse(expected);
- }
- }
- }
-
- protected void getStereotypeTarget(String name, Class<?>... expected) {
- Class<?>[] classes = provider.getStereotypeTarget(name);
- Assert.assertNotNull("Could not find target for " + name, classes);
- Assert.assertEquals("Should have " + expected.length + " targets for " + name + " but had " + classes.length, classes.length, expected.length);
- Assert.assertArrayEquals(expected, classes);
- }
-
- protected void containsStereotype(String name, boolean expected) {
- boolean classes = provider.containsStereotype(name);
- Assert.assertEquals(expected, classes);
- }
-
- protected void acceptStereotype(String name, boolean expected, Class<?>... types) {
- for (Class<?> type : types) {
- boolean actual = provider.acceptStereotype(name, type);
- Assert.assertEquals(expected, actual);
- }
- }
-}
Added: trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java
===================================================================
--- trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java (rev 0)
+++ trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,73 @@
+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.object.ObjectModel;
+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.stereotype.MismatchStereotypeTargetException;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider;
+import org.nuiton.eugene.models.stereotype.StereotypeNotFoundException;
+
+public class JavaTemplatesStereoTypesTest {
+
+ protected StereotypeDefinitionProvider provider;
+
+ @Before
+ public void setUp() throws Exception {
+ provider = new JavaTemplatesStereoTypes();
+ provider.init();
+ }
+
+ @Test
+ public void validate() throws Exception {
+
+ validate(JavaTemplatesStereoTypes.STEREOTYPE_BEAN, true, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class);
+
+ validate(JavaTemplatesStereoTypes.STEREOTYPE_BEAN, false, ObjectModel.class, ObjectModelOperation.class);
+
+ long l = System.nanoTime();
+ validate(JavaTemplatesStereoTypes.STEREOTYPE_BEAN + l, false, ObjectModel.class, ObjectModelOperation.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);
+ }
+ }
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesStereoTypesTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java
===================================================================
--- trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java (rev 0)
+++ trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -0,0 +1,75 @@
+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.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.ObjectModelOperation;
+import org.nuiton.eugene.models.tagvalue.MismatchTagValueTargetException;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider;
+import org.nuiton.eugene.models.tagvalue.TagValueNotFoundException;
+
+public class JavaTemplatesTagValuesTest {
+
+ protected TagValueDefinitionProvider provider;
+
+ @Before
+ public void setUp() throws Exception {
+ provider = new JavaTemplatesTagValues();
+ provider.init();
+ }
+
+ @Test
+ public void validate() throws Exception {
+ validate(JavaTemplatesTagValues.TAG_NO_PCS, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
+ validate(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
+
+ validate(JavaTemplatesTagValues.TAG_NO_PCS, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ validate(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+
+ long l = System.nanoTime();
+ validate(JavaTemplatesTagValues.TAG_NO_PCS + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ validate(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS + l, false, 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 (TagValueNotFoundException e) {
+ Assert.assertFalse(expected);
+ } catch (MismatchTagValueTargetException e) {
+ Assert.assertFalse(expected);
+ }
+ }
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesTagValuesTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/eugene-maven-plugin/pom.xml
===================================================================
--- trunk/eugene-maven-plugin/pom.xml 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-maven-plugin/pom.xml 2014-04-27 12:17:19 UTC (rev 1346)
@@ -210,7 +210,7 @@
<id>run-its</id>
<activation>
<property>
- <name>skipIts</name>
+ <name>maven.test.skip</name>
<value>!true</value>
</property>
</activation>
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -35,12 +35,14 @@
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.Template;
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
-import org.nuiton.eugene.metas.ModelPropertiesProviders;
-import org.nuiton.eugene.metas.StereotypeDefinition;
-import org.nuiton.eugene.metas.TagValueDefinition;
import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinition;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProviders;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinition;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProviders;
import org.nuiton.eugene.writer.ChainedFileWriter;
import java.util.Arrays;
@@ -106,17 +108,29 @@
protected Map<String, ChainedFileWriter> writers;
/**
- * All available model properties providers introspects via plexus.
+ * All available stereotype providers introspects via plexus.
*
- * @since 2.3.1
+ * @since 2.9
*/
- @Component(role = ModelPropertiesProvider.class)
- protected Map<String, ModelPropertiesProvider> modelPropertiesProviders;
+ @Component(role = StereotypeDefinitionProvider.class)
+ protected Map<String, StereotypeDefinitionProvider> stereotypeDefinitionProviders;
- protected Map<String, ModelPropertiesProvider> loadedProviders;
+ /**
+ * All available tag value providers introspects via plexus.
+ *
+ * @since 2.9
+ */
+ @Component(role = TagValueDefinitionProvider.class)
+ protected Map<String, TagValueDefinitionProvider> tagValueDefinitionProviders;
- protected ModelPropertiesProvider currentPropertiesProvider;
+ protected Map<String, TagValueDefinitionProvider> loadedTagValueDefinitionProviders;
+ protected Map<String, StereotypeDefinitionProvider> loadedStereotypeDefinitionProviders;
+
+ protected TagValueDefinitionProvider currentTagValueDefinitionProvider;
+
+ protected StereotypeDefinitionProvider currentStereotypeDefinitionProvider;
+
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
StringBuilder buffer = new StringBuilder();
@@ -152,19 +166,31 @@
}
}
- if (safeDataTypes.contains(AvailableData.stereotype) ||
- safeDataTypes.contains(AvailableData.tagvalue)) {
+ if (safeDataTypes.contains(AvailableData.stereotype)) {
- loadedProviders = new LinkedHashMap<String, ModelPropertiesProvider>();
+ loadedStereotypeDefinitionProviders = new LinkedHashMap<String, StereotypeDefinitionProvider>();
// init stores
- for (Map.Entry<String, ModelPropertiesProvider> e : modelPropertiesProviders.entrySet()) {
- ModelPropertiesProvider provider = ModelPropertiesProviders.newStore(
+ for (Map.Entry<String, StereotypeDefinitionProvider> e : stereotypeDefinitionProviders.entrySet()) {
+ StereotypeDefinitionProvider provider = StereotypeDefinitionProviders.newProvider(
Arrays.asList(e.getValue()),
false
);
- loadedProviders.put(e.getKey(), provider);
+ loadedStereotypeDefinitionProviders.put(e.getKey(), provider);
}
}
+
+ if (safeDataTypes.contains(AvailableData.tagvalue)) {
+
+ loadedTagValueDefinitionProviders = new LinkedHashMap<String, TagValueDefinitionProvider>();
+ // init stores
+ for (Map.Entry<String, TagValueDefinitionProvider> e : tagValueDefinitionProviders.entrySet()) {
+ TagValueDefinitionProvider provider = TagValueDefinitionProviders.newProvider(
+ Arrays.asList(e.getValue()),
+ false
+ );
+ loadedTagValueDefinitionProviders.put(e.getKey(), provider);
+ }
+ }
for (AvailableData data : safeDataTypes) {
buffer.append("\n");
appendData(data, buffer);
@@ -178,28 +204,28 @@
String dataType = data.name();
- if (data == AvailableData.tagvalue || data == AvailableData.stereotype) {
+ if (data == AvailableData.tagvalue) {
int nbData = 0;
- for (ModelPropertiesProvider provider : loadedProviders.values()) {
- currentPropertiesProvider = provider;
+ for (TagValueDefinitionProvider provider : loadedTagValueDefinitionProviders.values()) {
+ currentTagValueDefinitionProvider = provider;
nbData += data.getData(this).size();
}
- currentPropertiesProvider = null;
+ currentTagValueDefinitionProvider = null;
String format = "\nFound %s %ss in %s provider(s) : %s\n";
buffer.append(String.format(format,
nbData,
dataType,
- loadedProviders.size(),
- loadedProviders.keySet())
+ loadedTagValueDefinitionProviders.size(),
+ loadedTagValueDefinitionProviders.keySet())
);
- for (Map.Entry<String, ModelPropertiesProvider> e : loadedProviders.entrySet()) {
+ for (Map.Entry<String, TagValueDefinitionProvider> e : loadedTagValueDefinitionProviders.entrySet()) {
String providerName = e.getKey();
- ModelPropertiesProvider provider = e.getValue();
- currentPropertiesProvider = provider;
+ TagValueDefinitionProvider provider = e.getValue();
+ currentTagValueDefinitionProvider = provider;
Map<String, ?> map = data.getData(this);
int size = map.size();
@@ -219,6 +245,47 @@
data.toString(buffer, e2);
}
}
+ } else if (data == AvailableData.stereotype) {
+
+ int nbData = 0;
+ for (StereotypeDefinitionProvider provider : loadedStereotypeDefinitionProviders.values()) {
+ currentStereotypeDefinitionProvider = provider;
+ nbData += data.getData(this).size();
+ }
+ currentStereotypeDefinitionProvider = null;
+
+ String format = "\nFound %s %ss in %s provider(s) : %s\n";
+
+ buffer.append(String.format(format,
+ nbData,
+ dataType,
+ loadedStereotypeDefinitionProviders.size(),
+ loadedStereotypeDefinitionProviders.keySet())
+ );
+
+ for (Map.Entry<String, StereotypeDefinitionProvider> e : loadedStereotypeDefinitionProviders.entrySet()) {
+ String providerName = e.getKey();
+ StereotypeDefinitionProvider provider = e.getValue();
+ currentStereotypeDefinitionProvider = provider;
+ 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);
@@ -287,7 +354,7 @@
tagvalue {
@Override
public Map<String, ?> getData(AvailableDataMojo mojo) {
- return mojo.getCurrentPropertiesProvider().getTagValueStore();
+ return mojo.getCurrentTagValueDefinitionProvider().getDefinition();
}
@Override
@@ -320,7 +387,7 @@
stereotype {
@Override
public Map<String, ?> getData(AvailableDataMojo mojo) {
- return mojo.getCurrentPropertiesProvider().getStereotypeStore();
+ return mojo.getCurrentStereotypeDefinitionProvider().getDefinition();
}
@Override
@@ -368,31 +435,45 @@
}
}
- protected ModelPropertiesProvider getCurrentPropertiesProvider() {
- return currentPropertiesProvider;
+ public TagValueDefinitionProvider getCurrentTagValueDefinitionProvider() {
+ return currentTagValueDefinitionProvider;
}
- protected ModelPropertiesProvider getModelPropertiesProvider() {
+ public StereotypeDefinitionProvider getCurrentStereotypeDefinitionProvider() {
+ return currentStereotypeDefinitionProvider;
+ }
- ModelPropertiesProvider provider;
+ protected TagValueDefinitionProvider getTagValueDefinitionProvider() throws MojoExecutionException {
- if (modelPropertiesProviders == null ||
- modelPropertiesProviders.isEmpty()) {
+ TagValueDefinitionProvider provider;
+ if (tagValueDefinitionProviders == null || tagValueDefinitionProviders.isEmpty()) {
+
// could not find any model properties via plexus
// try to obtain them by ServiceLoader
- provider = ModelPropertiesProviders.newStore(
- getClass().getClassLoader(),
- false
- );
+ provider = TagValueDefinitionProviders.newProvider(getClass().getClassLoader(), false);
} else {
- provider = ModelPropertiesProviders.newStore(
- modelPropertiesProviders.values(),
- false
- );
+ provider = TagValueDefinitionProviders.newProvider(tagValueDefinitionProviders.values(), false);
}
return provider;
}
+
+ protected StereotypeDefinitionProvider getStereotypeDefinitionProvider() throws MojoExecutionException {
+
+ StereotypeDefinitionProvider provider;
+
+ if (stereotypeDefinitionProviders == null || stereotypeDefinitionProviders.isEmpty()) {
+
+ // could not find any model properties via plexus
+ // try to obtain them by ServiceLoader
+
+ provider = StereotypeDefinitionProviders.newProvider(getClass().getClassLoader(), false);
+ } else {
+ provider = StereotypeDefinitionProviders.newProvider(stereotypeDefinitionProviders.values(), false);
+ }
+ return provider;
+ }
+
}
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -39,9 +39,11 @@
import org.nuiton.eugene.ModelHelper;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.Template;
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
-import org.nuiton.eugene.metas.ModelPropertiesProviders;
import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProviders;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProviders;
import org.nuiton.eugene.plugin.writer.BaseChainedFileWriter;
import org.nuiton.eugene.plugin.writer.XmiChainedFileWriter;
import org.nuiton.eugene.plugin.writer.XmlModelChainedFileWriter;
@@ -317,13 +319,21 @@
protected Map<String, Template<?>> modelTemplates;
/**
- * All available model properties providers introspects via plexus.
+ * All available stereotype providers introspects via plexus.
*
- * @since 2.3
+ * @since 2.9
*/
- @Component(role = ModelPropertiesProvider.class)
- protected Map<String, ModelPropertiesProvider> modelPropertiesProviders;
+ @Component(role = StereotypeDefinitionProvider.class)
+ protected Map<String, StereotypeDefinitionProvider> stereotypeDefinitionProviders;
+ /**
+ * All available tag value providers introspects via plexus.
+ *
+ * @since 2.9
+ */
+ @Component(role = TagValueDefinitionProvider.class)
+ protected Map<String, TagValueDefinitionProvider> tagValueDefinitionProviders;
+
/** The engine to compute {@link ChainedFileWriter} from inputs entries. */
@Component(role = ChainedWriterEngine.class)
protected ChainedWriterEngine engine;
@@ -430,16 +440,22 @@
// add xml model writer support
- properties.put(XmlModelChainedFileWriter.PROP_MODEL_PROPERTIES_PROVIDER,
- getModelPropertiesProvider());
+ properties.put(XmlModelChainedFileWriter.PROP_TAG_VALUE_DEFINITION_PROVIDER,
+ getTagValueDefinitionProvider());
+
+ properties.put(XmlModelChainedFileWriter.PROP_STEREOTYPE_DEFINITION_PROVIDER,
+ getStereotypeDefinitionProvider());
}
if (engine.containsWriter("yamlmodel")) {
// add yaml model writer support
- properties.put(YamlModelChainedFileWriter.PROP_MODEL_PROPERTIES_PROVIDER,
- getModelPropertiesProvider());
+ properties.put(YamlModelChainedFileWriter.PROP_TAG_VALUE_DEFINITION_PROVIDER,
+ getTagValueDefinitionProvider());
+
+ properties.put(YamlModelChainedFileWriter.PROP_STEREOTYPE_DEFINITION_PROVIDER,
+ getStereotypeDefinitionProvider());
}
// init templates
@@ -512,37 +528,44 @@
ChainedFileWriterToMemoryModel writerToMemoryModel = (ChainedFileWriterToMemoryModel) writer;
models.add(writerToMemoryModel);
+ } else {
+
+ // print phase generation result
+ String message = reportGeneratedFiles(writer.getWriterReport(), t0);
+ getLog().info(message);
}
- String message = reportGeneratedFiles(writer.getWriterReport(), t0);
- getLog().info(message);
}
- // merge all models in a unique one ? or apply templates on each model ?
+ if (!models.isEmpty()) {
- long t0 = System.nanoTime();
+ // apply templates
- WriterReport writerReport = newWriterReport();
+ //TODO merge all models in a unique one ? or apply templates on each model ?
+ long t0 = System.nanoTime();
- getLog().info("Process phase [generator]");
+ WriterReport writerReport = newWriterReport();
- for (ChainedFileWriterToMemoryModel entry : models) {
- Model model = entry.getModel();
- Long lastModified = entry.getLastModifiedSource();
- File outputDir = entry.getOutputDirectory();
+ getLog().info("Process phase [generator]");
- applyTemplates(model,
- lastModified,
- outputDir,
- templateList,
- writerReport);
+ for (ChainedFileWriterToMemoryModel entry : models) {
+ Model model = entry.getModel();
+ Long lastModified = entry.getLastModifiedSource();
+ File outputDir = entry.getOutputDirectory();
- // must fix source compile roots
- fixCompileSourceRoots(outputDir);
+ applyTemplates(model,
+ lastModified,
+ outputDir,
+ templateList,
+ writerReport);
+
+ // must fix source compile roots
+ fixCompileSourceRoots(outputDir);
+ }
+
+ String message = reportGeneratedFiles(writerReport, t0);
+ getLog().info(message);
}
- String message = reportGeneratedFiles(writerReport, t0);
- getLog().info(message);
-
} finally {
// always clear everything to avoid side-effects in goal is
// invoked more than once
@@ -892,30 +915,55 @@
}
}
- protected ModelPropertiesProvider getModelPropertiesProvider() throws MojoExecutionException {
+ protected TagValueDefinitionProvider getTagValueDefinitionProvider() throws MojoExecutionException {
- ModelPropertiesProvider provider;
+ TagValueDefinitionProvider provider;
- if (modelPropertiesProviders == null ||
- modelPropertiesProviders.isEmpty() ||
+ if (tagValueDefinitionProviders == null ||
+ tagValueDefinitionProviders.isEmpty() ||
isTestPhase()) {
// could not find any model properties via plexus
// try to obtain them by ServiceLoader
- provider = ModelPropertiesProviders.newStore(
+ provider = TagValueDefinitionProviders.newProvider(
getFixedClassLoader(),
verbose
);
} else {
- provider = ModelPropertiesProviders.newStore(
- modelPropertiesProviders.values(),
+ provider = TagValueDefinitionProviders.newProvider(
+ tagValueDefinitionProviders.values(),
verbose
);
}
return provider;
}
+
+ protected StereotypeDefinitionProvider getStereotypeDefinitionProvider() throws MojoExecutionException {
+
+ StereotypeDefinitionProvider provider;
+
+ if (stereotypeDefinitionProviders == null ||
+ stereotypeDefinitionProviders.isEmpty() ||
+ isTestPhase()) {
+
+ // could not find any model properties via plexus
+ // try to obtain them by ServiceLoader
+
+ provider = StereotypeDefinitionProviders.newProvider(
+ getFixedClassLoader(),
+ verbose
+ );
+ } else {
+ provider = StereotypeDefinitionProviders.newProvider(
+ stereotypeDefinitionProviders.values(),
+ verbose
+ );
+ }
+ return provider;
+ }
+
protected List<Template<Model>> initTemplates() {
ClassLoader loader = getClassLoader();
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -24,9 +24,11 @@
* #L%
*/
+import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider;
import org.nuiton.eugene.writer.ChainedFileWriterConfiguration;
import org.nuiton.eugene.writer.ChainedFileWriterToMemoryModel;
@@ -47,6 +49,11 @@
public static final String PROP_MODEL_READER = "modelReader";
+ public static final String PROP_TAG_VALUE_DEFINITION_PROVIDER = "tagValueDefinitionProvider";
+
+ public static final String PROP_STEREOTYPE_DEFINITION_PROVIDER = "stereotypeDefinitionProvider";
+
+ @Deprecated
public static final String PROP_MODEL_PROPERTIES_PROVIDER = "modelPropertiesProvider";
public static final String PROP_READER = "reader";
@@ -61,6 +68,8 @@
super(
PROP_READER, "reader",
PROP_MODEL_READER, "xmlModelReader",
+ PROP_TAG_VALUE_DEFINITION_PROVIDER, "tagValueDefinitionProvider",
+ PROP_STEREOTYPE_DEFINITION_PROVIDER, "stereotypeDefinitionProvider",
PROP_MODEL_PROPERTIES_PROVIDER, "modelPropertiesProvider"
);
}
@@ -102,10 +111,22 @@
return getProperty(PROP_READER, String.class);
}
- protected ModelPropertiesProvider getModelPropertiesProvider() {
- return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesProvider.class);
+ /**
+ * @deprecated since 2.9, no more used, use now {@link #getStereotypeDefinitionProvider()} and {@link #getTagValueDefinitionProvider()}
+ */
+ @Deprecated
+ protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
+ return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesUtil.ModelPropertiesProvider.class);
}
+ protected TagValueDefinitionProvider getTagValueDefinitionProvider() {
+ return getProperty(PROP_TAG_VALUE_DEFINITION_PROVIDER, TagValueDefinitionProvider.class);
+ }
+
+ protected StereotypeDefinitionProvider getStereotypeDefinitionProvider() {
+ return getProperty(PROP_STEREOTYPE_DEFINITION_PROVIDER, StereotypeDefinitionProvider.class);
+ }
+
@Override
protected void initWriter(ChainedFileWriterConfiguration configuration) {
super.initWriter(configuration);
@@ -153,12 +174,15 @@
boolean verbose = configuration.isVerbose();
- // gets the provider of safe tag values and stereotypes
- ModelPropertiesProvider propertiesProvider =
- getModelPropertiesProvider();
+ getModelReader().setStereotypeDefinitionProvider(getStereotypeDefinitionProvider());
+ getModelReader().setTagValueDefinitionProvider(getTagValueDefinitionProvider());
- // affect it to the model reader
- getModelReader().setModelPropertiesProvider(propertiesProvider);
+// // gets the provider of safe tag values and stereotypes
+// ModelPropertiesUtil.ModelPropertiesProvider propertiesProvider =
+// getModelPropertiesProvider();
+//
+// // affect it to the model reader
+// getModelReader().setModelPropertiesProvider(propertiesProvider);
// set the verbose level of the model reader
getModelReader().setVerbose(verbose);
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2014-04-27 12:17:19 UTC (rev 1346)
@@ -27,11 +27,13 @@
import org.apache.commons.lang3.StringUtils;
import org.nuiton.eugene.DefaultTemplateConfiguration;
+import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.Template;
import org.nuiton.eugene.TemplateConfiguration;
-import org.nuiton.eugene.metas.ModelPropertiesProvider;
import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider;
+import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider;
import org.nuiton.eugene.writer.ChainedFileWriterConfiguration;
import java.io.File;
@@ -63,6 +65,11 @@
public static final String PROP_MODEL_READER = "modelReader";
+ public static final String PROP_TAG_VALUE_DEFINITION_PROVIDER = "tagValueDefinitionProvider";
+
+ public static final String PROP_STEREOTYPE_DEFINITION_PROVIDER = "stereotypeDefinitionProvider";
+
+ @Deprecated
public static final String PROP_MODEL_PROPERTIES_PROVIDER = "modelPropertiesProvider";
public static final String PROP_READER = "reader";
@@ -79,6 +86,8 @@
PROP_GENERATED_PACKAGES, "generatedPackages",
PROP_DEFAULT_PACKAGE, "defaultPackage",
PROP_TEMPLATE_CONFIGURATION, "templateConfiguration",
+ PROP_TAG_VALUE_DEFINITION_PROVIDER, "tagValueDefinitionProvider",
+ PROP_STEREOTYPE_DEFINITION_PROVIDER, "stereotypeDefinitionProvider",
PROP_MODEL_PROPERTIES_PROVIDER, "modelPropertiesProvider"
);
}
@@ -165,10 +174,22 @@
return getProperty(PROP_READER, String.class);
}
- protected ModelPropertiesProvider getModelPropertiesProvider() {
- return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesProvider.class);
+ /**
+ * @deprecated since 2.9, no more used, use now {@link #getStereotypeDefinitionProvider()} and {@link #getTagValueDefinitionProvider()}
+ */
+ @Deprecated
+ protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
+ return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesUtil.ModelPropertiesProvider.class);
}
+ protected TagValueDefinitionProvider getTagValueDefinitionProvider() {
+ return getProperty(PROP_TAG_VALUE_DEFINITION_PROVIDER, TagValueDefinitionProvider.class);
+ }
+
+ protected StereotypeDefinitionProvider getStereotypeDefinitionProvider() {
+ return getProperty(PROP_STEREOTYPE_DEFINITION_PROVIDER, StereotypeDefinitionProvider.class);
+ }
+
@Override
protected void initWriter(ChainedFileWriterConfiguration configuration) {
super.initWriter(configuration);
@@ -196,12 +217,13 @@
} else {
String modelType = configuration.getModelType();
ModelReader<?> modelReader = configuration.getModelHelper().getModelReader(modelType, "xml");
- configuration.getModelHelper().getModelReaders().get(modelType);
+ configuration.getModelHelper().getModelReaders().get(modelType);
if (modelReader == null) {
throw new IllegalStateException(
"could not find a model reader for modelType : " +
modelType + ", availables readers : " +
- configuration.getModelHelper().getModelReaders().values());
+ configuration.getModelHelper().getModelReaders().values()
+ );
}
properties.put(PROP_MODEL_READER, modelReader);
}
@@ -209,11 +231,14 @@
boolean verbose = configuration.isVerbose();
- // gets the provider of safe tag values and stereotypes
- ModelPropertiesProvider propertiesProvider = getModelPropertiesProvider();
+ getModelReader().setStereotypeDefinitionProvider(getStereotypeDefinitionProvider());
+ getModelReader().setTagValueDefinitionProvider(getTagValueDefinitionProvider());
- // affect it to the model reader
- getModelReader().setModelPropertiesProvider(propertiesProvider);
+// // gets the provider of safe tag values and stereotypes
+// ModelPropertiesProvider propertiesProvider = getModelPropertiesProvider();
+//
+// // affect it to the model reader
+// getModelReader().setModelPropertiesProvider(propertiesProvider);
// set the verbose level of the model reader
getModelReader().setVerbose(verbose);
Modified: trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst
===================================================================
--- trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst 2014-04-27 12:17:19 UTC (rev 1346)
@@ -154,6 +154,20 @@
Le calcul du nom d'une constante à partir de la proprité revient donc
régulièrement et est caché grâçe à cette extension.
+TagValueDefinitionProvider
+--------------------------
+
+Il est possible de définir les tagValues applicables sur un modèle.
+
+Voir `TagValueDefinitionProvider`_
+
+StereotypeDefinitionProvider
+----------------------------
+
+Il est possible de définir les stéréotypes applicables sur un modèle.
+
+Voir `StereotypeDefinitionProvider`_
+
ModelPropertiesProvider
-----------------------
@@ -179,6 +193,9 @@
.. _ObjectModelElement: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelElement.html
.. _ObjectModelClassifier: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelClassifier.html
+.. _TagValueDefinitionProvider: eugene/apidocs/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProvider.html
+.. _StereotypeDefinitionProvider: eugene/apidocs/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProvider.html
+
Modified: trunk/src/site/rst/06-fonctionnalites-avancees.rst
===================================================================
--- trunk/src/site/rst/06-fonctionnalites-avancees.rst 2014-04-26 19:16:12 UTC (rev 1345)
+++ trunk/src/site/rst/06-fonctionnalites-avancees.rst 2014-04-27 12:17:19 UTC (rev 1346)
@@ -149,13 +149,16 @@
use those constants in the generated code. So the constant's name calculation
from a property come quite often and is cached by this extension.
-ModelPropertiesProvider
------------------------
+TagValueDefinitionProvider
+--------------------------
-It is possible to define tagValues and stereotypes via a *ModelPropertiesProvider*.
+It is possible to describe tag values you can use on your models. See `TagValueDefinitionProvider`_
-Must be continued (doc will be done before version 3.0)...
+StereotypeDefinitionProvider
+----------------------------
+It is possible to describe stereotypes you can use on your models. See `StereotypeDefinitionProvider`_
+
.. _argouml: http://argouml.tigris.org/
.. _topcased: http://www.topcased.org/
.. _Templates: ./04-templates.html
@@ -175,3 +178,6 @@
.. _ObjectModelElement: eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelElement.html
.. _ObjectModelClassifier: eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelClassifier.html
+.. _TagValueDefinitionProvider: eugene/apidocs/org/nuiton/eugene/models/tagvalue/TagValueDefinitionProvider.html
+.. _StereotypeDefinitionProvider: eugene/apidocs/org/nuiton/eugene/models/stereotype/StereotypeDefinitionProvider.html
+
1
0
26 Apr '14
See <http://ci.nuiton.org/jenkins/job/eugene-nightly/11/changes>
Changes:
[Tony CHEMIT] refs #3169 (improve logs)
------------------------------------------
Started by an SCM change
Building in workspace <http://ci.nuiton.org/jenkins/job/eugene-nightly/ws/>
Reverting <http://ci.nuiton.org/jenkins/job/eugene-nightly/ws/trunk> to depth infinity with ignoreExternals: false
Updating https://svn.nuiton.org/eugene/trunk at revision '2014-04-26T01:04:49.119 +0200'
U eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java
At revision 1340
Parsing POMs
[trunk] $ /opt/jdk7/bin/java -Dsettings.security=/var/local/forge/data/nuiton.org/maven/settings-security.xml -Djava.awt.headless=true -cp /var/local/forge/data/nuiton.org/jenkins/plugins/maven-plugin/WEB-INF/lib/maven31-agent-1.5.jar:/opt/maven3/boot/plexus-classworlds-2.5.1.jar:/opt/maven3/conf/logging jenkins.maven3.agent.Maven31Main /opt/maven3 /var/local/forge/exec/tomcat-nuiton.org/webapps/jenkins/WEB-INF/lib/remoting-2.36.jar /var/local/forge/data/nuiton.org/jenkins/plugins/maven-plugin/WEB-INF/lib/maven31-interceptor-1.5.jar /var/local/forge/data/nuiton.org/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.5.jar 54462
<===[JENKINS REMOTING CAPACITY]===> channel started
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
Executing Maven: -B -f <http://ci.nuiton.org/jenkins/job/eugene-nightly/ws/trunk/pom.xml> -s /var/local/forge/data/nuiton.org/maven/settings.xml -e -U clean install -DperformRelease
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] EUGene
[INFO] EUGene :: EUGene
[INFO] EUGene :: Java templates
[INFO] EUGene :: PlantUML templates
[INFO] EUGene :: YAML templates
[INFO] EUGene :: Maven plugin
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building EUGene 2.8.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ eugene ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/eugene-nightly/ws/trunk/target>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ eugene ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:check-auto-container (check-central-safe) @ eugene ---
[INFO] Will use repository http://repo1.maven.org/maven2/
[INFO] Will use repository http://maven.nuiton.org/central-releases
[INFO] 14 dependencies to check.
[INFO] 14 artifact(s) resolved by repository http://repo1.maven.org/maven2/ in 2.469s
[INFO] All dependencies are safe.
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ eugene ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ eugene ---
[INFO] Exporting server [redmine-forge.nuiton.org] privateKey in ${redmine.apiKey}
[INFO]
[INFO] --- license-maven-plugin:1.6:update-project-license (attach-licenses) @ eugene ---
[INFO]
[INFO] --- license-maven-plugin:1.6:add-third-party (attach-licenses) @ eugene ---
[WARNING] The goal is skip due to packaging 'pom'
[INFO]
[INFO] --- license-maven-plugin:1.6:update-file-header (update-file-header) @ eugene ---
[WARNING] The extension xsl is already accepted for comment style xml
[INFO] Will search files to update from root <http://ci.nuiton.org/jenkins/job/eugene-nightly/ws/trunk/src>
[INFO] Scan 21 files header done in 207.781ms.
[INFO] All files are up-to-date.
[INFO]
[INFO] --- animal-sniffer-maven-plugin:1.10:check (default) @ eugene ---
[INFO] Checking unresolved references to org.codehaus.mojo.signature:java16:1.1
[INFO]
[INFO] --- jredmine-maven-plugin:1.8.1:generate-changes (jredmine-generate-changes) @ eugene ---
[ERROR] (RedmineClient:491) - Error = <h2>Application error</h2>Rails application failed to start properly
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] EUGene ............................................ FAILURE [ 17.355 s]
[INFO] EUGene :: EUGene .................................. SKIPPED
[INFO] EUGene :: Java templates .......................... SKIPPED
[INFO] EUGene :: PlantUML templates ...................... SKIPPED
[INFO] EUGene :: YAML templates .......................... SKIPPED
[INFO] EUGene :: Maven plugin ............................ SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.739 s
[INFO] Finished at: 2014-04-26T01:05:15+01:00
[INFO] Final Memory: 35M/440M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.nuiton.jredmine:jredmine-maven-plugin:1.8.1:generate-changes (jredmine-generate-changes) on project eugene: could not init goal GenerateChangesMojo for reason : could not init service for reason Got error code <500:Internal Server Error> on http://forge.nuiton.org/jredmine/ping -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.nuiton.jredmine:jredmine-maven-plugin:1.8.1:generate-changes (jredmine-generate-changes) on project eugene: could not init goal GenerateChangesMojo for reason : could not init service for reason Got error code <500:Internal Server Error> on http://forge.nuiton.org/jredmine/ping
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.jvnet.hudson.maven3.launcher.Maven31Launcher.main(Maven31Launcher.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at jenkins.maven3.agent.Maven31Main.launch(Maven31Main.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:134)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:69)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:328)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.maven.plugin.MojoExecutionException: could not init goal GenerateChangesMojo for reason : could not init service for reason Got error code <500:Internal Server Error> on http://forge.nuiton.org/jredmine/ping
at org.nuiton.plugin.AbstractPlugin.execute(AbstractPlugin.java:113)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 30 more
Caused by: org.nuiton.jredmine.service.RedmineServiceException: could not init service for reason Got error code <500:Internal Server Error> on http://forge.nuiton.org/jredmine/ping
at org.nuiton.jredmine.service.AbstractRedmineService.init(AbstractRedmineService.java:60)
at org.nuiton.jredmine.service.DefaultRedmineService.init(DefaultRedmineService.java:78)
at org.nuiton.jredmine.plugin.AbstractRedmineMojo.init(AbstractRedmineMojo.java:290)
at org.nuiton.jredmine.plugin.AbstractRedmineMojoWithProject.init(AbstractRedmineMojoWithProject.java:92)
at org.nuiton.jredmine.plugin.AbstractRedmineMojoWithProjectAndVersion.init(AbstractRedmineMojoWithProjectAndVersion.java:101)
at org.nuiton.jredmine.plugin.GenerateChangesMojo.init(GenerateChangesMojo.java:336)
at org.nuiton.plugin.AbstractPlugin.execute(AbstractPlugin.java:106)
... 32 more
Caused by: java.io.IOException: Got error code <500:Internal Server Error> on http://forge.nuiton.org/jredmine/ping
at org.nuiton.jredmine.client.RedmineClient$AbstractRedmineResponseHandler.checkResponse(RedmineClient.java:492)
at org.nuiton.jredmine.client.RedmineClient$RedmineSimpleResponseHandler.handleResponse(RedmineClient.java:509)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:218)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:160)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:136)
at org.nuiton.jredmine.client.RedmineClient.executeRequest(RedmineClient.java:183)
at org.nuiton.jredmine.client.RedmineClient.open(RedmineClient.java:148)
at org.nuiton.jredmine.service.AbstractRedmineService.init(AbstractRedmineService.java:58)
... 38 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Sending e-mails to: eugene-commits(a)list.nuiton.org
channel stopped
Skipping sonar analysis due to bad build status FAILURE
1
1
Build failed in Jenkins: eugene-nightly » EUGene #11
by admin+ci-nuiton.org@codelutin.com 26 Apr '14
by admin+ci-nuiton.org@codelutin.com 26 Apr '14
26 Apr '14
See <http://ci.nuiton.org/jenkins/job/eugene-nightly/org.nuiton$eugene/11/>
------------------------------------------
<===[JENKINS REMOTING CAPACITY]===> channel started
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
Executing Maven: -B -f <http://ci.nuiton.org/jenkins/job/eugene-nightly/org.nuiton$eugene/ws/pom.xml> -s /var/local/forge/data/nuiton.org/maven/settings.xml -e -U clean install -DperformRelease
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] EUGene
[INFO] EUGene :: EUGene
[INFO] EUGene :: Java templates
[INFO] EUGene :: PlantUML templates
[INFO] EUGene :: YAML templates
[INFO] EUGene :: Maven plugin
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building EUGene 2.8.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ eugene ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/eugene-nightly/org.nuiton$eugene/ws/target>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ eugene ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:check-auto-container (check-central-safe) @ eugene ---
[INFO] Will use repository http://repo1.maven.org/maven2/
[INFO] Will use repository http://maven.nuiton.org/central-releases
[INFO] 14 dependencies to check.
[INFO] 14 artifact(s) resolved by repository http://repo1.maven.org/maven2/ in 2.469s
[INFO] All dependencies are safe.
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ eugene ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ eugene ---
[INFO] Exporting server [redmine-forge.nuiton.org] privateKey in ${redmine.apiKey}
[INFO]
[INFO] --- license-maven-plugin:1.6:update-project-license (attach-licenses) @ eugene ---
[INFO]
[INFO] --- license-maven-plugin:1.6:add-third-party (attach-licenses) @ eugene ---
[WARNING] The goal is skip due to packaging 'pom'
[INFO]
[INFO] --- license-maven-plugin:1.6:update-file-header (update-file-header) @ eugene ---
[WARNING] The extension xsl is already accepted for comment style xml
[INFO] Will search files to update from root <http://ci.nuiton.org/jenkins/job/eugene-nightly/org.nuiton$eugene/ws/src>
[INFO] Scan 21 files header done in 207.781ms.
[INFO] All files are up-to-date.
[INFO]
[INFO] --- animal-sniffer-maven-plugin:1.10:check (default) @ eugene ---
[INFO] Checking unresolved references to org.codehaus.mojo.signature:java16:1.1
[INFO]
[INFO] --- jredmine-maven-plugin:1.8.1:generate-changes (jredmine-generate-changes) @ eugene ---
[ERROR] (RedmineClient:491) - Error = <h2>Application error</h2>Rails application failed to start properly
[JENKINS] Archiving disabled
1
1
26 Apr '14
Author: tchemit
Date: 2014-04-26 21:16:12 +0200 (Sat, 26 Apr 2014)
New Revision: 1345
Url: http://forge.nuiton.org/projects/eugene/repository/revisions/1345
Log:
refs #3175 add default value on TagValueDefinition
Modified:
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java
trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -79,6 +79,7 @@
* @since 2.3
*/
@TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class},
+ defaultValue = "PROPERTY_",
documentation = "Sets the prefix of any constant to be generated for the given class")
String TAG_CONSTANT_PREFIX = "constantPrefix";
@@ -102,6 +103,7 @@
* @since 2.4.1
*/
@TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class},
+ defaultValue = "true",
documentation = "To specify to NOT generate getXXX methods for boolean properties")
String TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS = "doNotGenerateBooleanGetMethods";
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -149,6 +149,7 @@
return result;
}
+ @Deprecated
public boolean containsTagValue(String tagValueName) {
boolean b = tagValueStore.containsKey(tagValueName);
return b;
@@ -159,16 +160,21 @@
return b;
}
- public void acceptTagValue(String tagValueName, Class<?> type) throws TagValueNotFoundException, MismatchTagValueTargetException {
-
+ public TagValueDefinition getTagValueDefinition(String tagValueName) {
TagValueDefinition def = null;
for (TagValueMatcher tagValueMatcher : tagValueMatchers) {
- def = tagValueMatcher.match(tagValueName, type);
+ def = tagValueMatcher.match(tagValueName);
if (def != null) {
break;
}
}
+ return def;
+ }
+ public void acceptTagValue(String tagValueName, Class<?> type) throws TagValueNotFoundException, MismatchTagValueTargetException {
+
+ TagValueDefinition def = getTagValueDefinition(tagValueName);
+
if (def == null) {
throw new TagValueNotFoundException();
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -42,5 +42,15 @@
*/
String documentation();
- Class<? extends TagValueMatcher> validatorClass() default DefaultTagValueMatcher.class;
+ /**
+ * @return the matcher used to find out back a tagValue definition from his name.
+ * @since 2.9
+ */
+ Class<? extends TagValueMatcher> matcherClass() default DefaultTagValueMatcher.class;
+
+ /**
+ * @return the default value to use, if not setted then do NOT use the default value.
+ * @since 2.9
+ */
+ String defaultValue() default "";
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -23,7 +23,7 @@
this.modelPropertiesProvider = modelPropertiesProvider;
Map<String, TagValueDefinition> tagValues = new TreeMap<String, TagValueDefinition>();
for (Map.Entry<String, TagValueDefinition> entry : modelPropertiesProvider.getTagValueStore().entrySet()) {
- if (getClass().equals(entry.getValue().validatorClass())) {
+ if (getClass().equals(entry.getValue().matcherClass())) {
tagValues.put(entry.getKey(), entry.getValue());
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -16,7 +16,7 @@
}
@Override
- public TagValueDefinition match(String tagValueName, Class<?> type) {
+ public TagValueDefinition match(String tagValueName) {
TagValueDefinition tagValueDefinition = null;
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -16,7 +16,7 @@
}
@Override
- public TagValueDefinition match(String tagValueName, Class<?> type) {
+ public TagValueDefinition match(String tagValueName) {
TagValueDefinition tagValueDefinition = null;
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -3,7 +3,7 @@
import org.nuiton.eugene.metas.TagValueDefinition;
/**
- * To validate a Tag value.
+ * To match a Tag value.
* <p/>
* Created on 4/26/14.
*
@@ -12,5 +12,5 @@
*/
public interface TagValueMatcher {
- TagValueDefinition match(String tagValueName, Class<?> type);
+ TagValueDefinition match(String tagValueName);
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -451,8 +451,7 @@
}
String fqn = matcher.group(1);
- fqn = StringUtil.substring(fqn, 0, -1); // remove ended
- // .
+ fqn = StringUtil.substring(fqn, 0, -1); // remove ended dot
// target is class, attribute or operation
String target = matcher.group(2);
// name of the target (can be null on class)
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -123,8 +123,15 @@
}
protected void containsTagValue(String name, boolean expected) {
- boolean classes = provider.containsTagValue(name);
- Assert.assertEquals(expected, classes);
+ try {
+ provider.acceptTagValue(name, Object.class);
+ Assert.assertTrue(expected);
+ } catch (TagValueNotFoundException e) {
+ Assert.assertFalse(expected);
+ } catch (MismatchTagValueTargetException e) {
+ // dont care
+ }
+
}
protected void acceptTagValue(String name, boolean expected, Class<?>... types) {
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -47,6 +47,7 @@
*/
@TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
+ defaultValue = "true",
documentation = "To specify to not generate any propertyChange " +
"code for a class or any class of a model")
String TAG_NO_PCS = "noPCS";
Modified: trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java 2014-04-26 18:56:51 UTC (rev 1344)
+++ trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java 2014-04-26 19:16:12 UTC (rev 1345)
@@ -116,8 +116,14 @@
}
protected void containsTagValue(String name, boolean expected) {
- boolean classes = provider.containsTagValue(name);
- Assert.assertEquals(expected, classes);
+ try {
+ provider.acceptTagValue(name, Object.class);
+ Assert.assertTrue(expected);
+ } catch (TagValueNotFoundException e) {
+ Assert.assertFalse(expected);
+ } catch (MismatchTagValueTargetException e) {
+ // don't care here
+ }
}
protected void acceptTagValue(String name, boolean expected, Class<?>... types) {
1
0
26 Apr '14
Author: tchemit
Date: 2014-04-26 20:56:51 +0200 (Sat, 26 Apr 2014)
New Revision: 1344
Url: http://forge.nuiton.org/projects/eugene/repository/revisions/1344
Log:
refs #3175 (add better tagvalue validation)
Added:
trunk/eugene/src/main/java/org/nuiton/eugene/metas/MismatchTagValueTargetException.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueNotFoundException.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java
Modified:
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java
trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -12,7 +12,7 @@
public class EugeneModelPropertiesProvider extends ModelPropertiesProvider {
@Override
- public void init() throws IllegalAccessException {
+ public void initStores() throws IllegalAccessException {
scanStereotypeClass(EugeneStereoTypes.class);
scanTagValueClass(EugeneTagValues.class);
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -30,7 +30,7 @@
}
@Override
- public void init() throws Exception {
+ public void initStores() throws Exception {
if (providers == null) {
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/MismatchTagValueTargetException.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/MismatchTagValueTargetException.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/MismatchTagValueTargetException.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -0,0 +1,11 @@
+package org.nuiton.eugene.metas;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class MismatchTagValueTargetException extends Exception {
+ private static final long serialVersionUID = 1L;
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/MismatchTagValueTargetException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -2,6 +2,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.metas.matcher.DefaultTagValueMatcher;
+import org.nuiton.eugene.metas.matcher.PrefixTagNameMatchTagValueMatcher;
+import org.nuiton.eugene.metas.matcher.TagValueMatcher;
import java.lang.reflect.Field;
import java.util.Arrays;
@@ -30,6 +33,8 @@
protected Set<String> deprecatedStereotypes;
+ protected Set<TagValueMatcher> tagValueMatchers;
+
protected boolean verbose;
protected ModelPropertiesProvider() {
@@ -37,6 +42,7 @@
tagValueStore = new TreeMap<String, TagValueDefinition>();
deprecatedTagValues = new HashSet<String>();
deprecatedStereotypes = new HashSet<String>();
+ tagValueMatchers = new HashSet<TagValueMatcher>();
}
public boolean isVerbose() {
@@ -47,8 +53,18 @@
this.verbose = verbose;
}
- public abstract void init() throws Exception;
+ public void init() throws Exception {
+ initStores();
+ initValidators();
+ }
+ protected abstract void initStores() throws Exception;
+
+ protected void initValidators() {
+ tagValueMatchers.add(new DefaultTagValueMatcher(this));
+ tagValueMatchers.add(new PrefixTagNameMatchTagValueMatcher(this));
+ }
+
protected void scanStereotypeClass(Class<?> holder) throws IllegalAccessException {
if (isVerbose()) {
log.info("Will scan " + holder.getName() + " to search some stereotype definitions...");
@@ -143,25 +159,25 @@
return b;
}
- public boolean acceptTagValue(String tagValueName, Class<?> type) {
- if (!containsTagValue(tagValueName)) {
+ public void acceptTagValue(String tagValueName, Class<?> type) throws TagValueNotFoundException, MismatchTagValueTargetException {
- // unknown
- return false;
+ TagValueDefinition def = null;
+ for (TagValueMatcher tagValueMatcher : tagValueMatchers) {
+ def = tagValueMatcher.match(tagValueName, type);
+ if (def != null) {
+ break;
+ }
}
- Class<?>[] tagValueTarget = getTagValueTarget(tagValueName);
+ if (def == null) {
+ throw new TagValueNotFoundException();
+ }
- for (Class<?> target : tagValueTarget) {
- if (target.equals(type) || target.isAssignableFrom(type)) {
+ boolean valid = isTargetValid(def, type);
- // found one accepting target
- return true;
- }
+ if (!valid) {
+ throw new MismatchTagValueTargetException();
}
-
- // no target found
- return false;
}
public boolean acceptStereotype(String stereotypeName, Class<?> type) {
@@ -193,4 +209,18 @@
boolean deprecated = deprecatedStereotypes.contains(stereotypeName);
return deprecated;
}
+
+ protected boolean isTargetValid(TagValueDefinition def, Class<?> type) {
+
+ Class<?>[] tagValueTarget = def.target();
+
+ for (Class<?> target : tagValueTarget) {
+ if (target.equals(type) || target.isAssignableFrom(type)) {
+
+ // found one accepting target
+ return true;
+ }
+ }
+ return false;
+ }
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -1,7 +1,6 @@
package org.nuiton.eugene.metas;
import java.util.Collection;
-import java.util.Map;
/**
* Created on 4/26/14.
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -1,5 +1,8 @@
package org.nuiton.eugene.metas;
+import org.nuiton.eugene.metas.matcher.DefaultTagValueMatcher;
+import org.nuiton.eugene.metas.matcher.TagValueMatcher;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -38,4 +41,6 @@
* @since 2.3.1
*/
String documentation();
+
+ Class<? extends TagValueMatcher> validatorClass() default DefaultTagValueMatcher.class;
}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueNotFoundException.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueNotFoundException.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueNotFoundException.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -0,0 +1,11 @@
+package org.nuiton.eugene.metas;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class TagValueNotFoundException extends Exception {
+ private static final long serialVersionUID = 1L;
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueNotFoundException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -0,0 +1,38 @@
+package org.nuiton.eugene.metas.matcher;
+
+import com.google.common.collect.ImmutableMap;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
+import org.nuiton.eugene.metas.TagValueDefinition;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public abstract class AbstractTagValueMatcher implements TagValueMatcher {
+
+ protected final ModelPropertiesProvider modelPropertiesProvider;
+
+ protected final Map<String, TagValueDefinition> tagValueStore;
+
+ public AbstractTagValueMatcher(ModelPropertiesProvider modelPropertiesProvider) {
+ this.modelPropertiesProvider = modelPropertiesProvider;
+ Map<String, TagValueDefinition> tagValues = new TreeMap<String, TagValueDefinition>();
+ for (Map.Entry<String, TagValueDefinition> entry : modelPropertiesProvider.getTagValueStore().entrySet()) {
+ if (getClass().equals(entry.getValue().validatorClass())) {
+ tagValues.put(entry.getKey(), entry.getValue());
+ }
+ }
+
+ this.tagValueStore = ImmutableMap.<String, TagValueDefinition>builder().putAll(tagValues).build();
+ }
+
+ protected Map<String, TagValueDefinition> getTagValueStore() {
+ return tagValueStore;
+ }
+
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/AbstractTagValueMatcher.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -0,0 +1,33 @@
+package org.nuiton.eugene.metas.matcher;
+
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
+import org.nuiton.eugene.metas.TagValueDefinition;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class DefaultTagValueMatcher extends AbstractTagValueMatcher {
+
+ public DefaultTagValueMatcher(ModelPropertiesProvider modelPropertiesProvider) {
+ super(modelPropertiesProvider);
+ }
+
+ @Override
+ public TagValueDefinition match(String tagValueName, Class<?> type) {
+
+ TagValueDefinition tagValueDefinition = null;
+
+ for (String name : getTagValueStore().keySet()) {
+ if (tagValueName.equals(name)) {
+ tagValueDefinition = getTagValueStore().get(name);
+ break;
+ }
+ }
+
+ return tagValueDefinition;
+ }
+
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/DefaultTagValueMatcher.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -0,0 +1,34 @@
+package org.nuiton.eugene.metas.matcher;
+
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
+import org.nuiton.eugene.metas.TagValueDefinition;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class PrefixTagNameMatchTagValueMatcher extends AbstractTagValueMatcher {
+
+ public PrefixTagNameMatchTagValueMatcher(ModelPropertiesProvider modelPropertiesProvider) {
+ super(modelPropertiesProvider);
+ }
+
+ @Override
+ public TagValueDefinition match(String tagValueName, Class<?> type) {
+
+ TagValueDefinition tagValueDefinition = null;
+
+ for (String name : getTagValueStore().keySet()) {
+ if (tagValueName.startsWith(name + ".")) {
+ tagValueDefinition = getTagValueStore().get(name);
+ break;
+ }
+ }
+
+ return tagValueDefinition;
+ }
+
+
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/PrefixTagNameMatchTagValueMatcher.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -0,0 +1,16 @@
+package org.nuiton.eugene.metas.matcher;
+
+import org.nuiton.eugene.metas.TagValueDefinition;
+
+/**
+ * To validate a Tag value.
+ * <p/>
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public interface TagValueMatcher {
+
+ TagValueDefinition match(String tagValueName, Class<?> type);
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/matcher/TagValueMatcher.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -32,7 +32,9 @@
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.ModelHelper;
import org.nuiton.eugene.ModelReader;
+import org.nuiton.eugene.metas.MismatchTagValueTargetException;
import org.nuiton.eugene.metas.ModelPropertiesProviders;
+import org.nuiton.eugene.metas.TagValueNotFoundException;
import org.nuiton.eugene.models.object.reader.XmlObjectModelReader;
import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet;
import org.nuiton.eugene.models.object.xml.ObjectModelAssociationClassImpl;
@@ -303,21 +305,18 @@
}
String tag = matcher.group(2);
- boolean safe = modelPropertiesProvider.containsTagValue(tag);
+ boolean safe = false;
- if (!safe) {
+ try {
+ modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
+ safe = true;
+ } catch (TagValueNotFoundException e) {
if (log.isWarnEnabled()) {
log.warn("Invalid model tag value [" + key + "] : the tagvalue '" + tag + "' is unknown.");
}
- } else {
- safe = modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
-
- if (!safe) {
-
- // the tag value can not be apply of model
- if (log.isWarnEnabled()) {
- log.warn("Invalid model tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the model.");
- }
+ } catch (MismatchTagValueTargetException e) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid model tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the model.");
}
}
@@ -466,24 +465,18 @@
+ " type:" + type + " tag:" + tag);
}
- boolean safe = modelPropertiesProvider.containsTagValue(tag);
+ boolean safe = false;
- if (!safe) {
-
- // unknown tag value
+ try {
+ modelPropertiesProvider.acceptTagValue(tag, targetType);
+ safe = true;
+ } catch (TagValueNotFoundException e) {
if (log.isWarnEnabled()) {
log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' is unknown.");
}
- } else {
-
- safe = modelPropertiesProvider.acceptTagValue(tag, targetType);
-
- if (!safe) {
-
- // the tag value can not be apply of model
- if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the given type '" + target + "'.");
- }
+ } catch (MismatchTagValueTargetException e) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the given type '" + target + "'.");
}
}
@@ -516,7 +509,7 @@
+ ", value:" + value
+ " to element:" + element);
}
- ((ObjectModelElementImpl) element).addTagValue(tag, value);
+ element.addTagValue(tag, value);
}
if (isVerbose()) {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -30,7 +30,9 @@
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.ModelHelper;
import org.nuiton.eugene.ModelReader;
+import org.nuiton.eugene.metas.MismatchTagValueTargetException;
import org.nuiton.eugene.metas.ModelPropertiesProviders;
+import org.nuiton.eugene.metas.TagValueNotFoundException;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAssociationClass;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -287,21 +289,18 @@
}
String tag = matcher.group(2);
- boolean safe = modelPropertiesProvider.containsTagValue(tag);
+ boolean safe = false;
- if (!safe) {
+ try {
+ modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
+ safe = true;
+ } catch (TagValueNotFoundException e) {
if (log.isWarnEnabled()) {
log.warn("Invalid model tag value [" + key + "] : the tagvalue '" + tag + "' is unknown.");
}
- } else {
- safe = modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
-
- if (!safe) {
-
- // the tag value can not be apply of model
- if (log.isWarnEnabled()) {
- log.warn("Invalid model tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the model.");
- }
+ } catch (MismatchTagValueTargetException e) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid model tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the model.");
}
}
@@ -472,24 +471,18 @@
+ " type:" + type + " tag:" + tag);
}
- boolean safe = modelPropertiesProvider.containsTagValue(tag);
+ boolean safe = false;
- if (!safe) {
-
- // unknown tag value
+ try {
+ modelPropertiesProvider.acceptTagValue(tag, targetType);
+ safe = true;
+ } catch (TagValueNotFoundException e) {
if (log.isWarnEnabled()) {
log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' is unknown.");
}
- } else {
-
- safe = modelPropertiesProvider.acceptTagValue(tag, targetType);
-
- if (!safe) {
-
- // the tag value can not be apply of model
- if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the given type '" + target + "'.");
- }
+ } catch (MismatchTagValueTargetException e) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the given type '" + target + "'.");
}
}
@@ -534,7 +527,7 @@
+ ", value:" + value
+ " to element:" + element);
}
- ((ObjectModelElementImpl) element).addTagValue(tag, value);
+ element.addTagValue(tag, value);
}
if (isVerbose()) {
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -27,7 +27,9 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.nuiton.eugene.metas.MismatchTagValueTargetException;
import org.nuiton.eugene.metas.ModelPropertiesProvider;
+import org.nuiton.eugene.metas.TagValueNotFoundException;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
@@ -127,8 +129,14 @@
protected void acceptTagValue(String name, boolean expected, Class<?>... types) {
for (Class<?> type : types) {
- boolean actual = provider.acceptTagValue(name, type);
- Assert.assertEquals(expected, actual);
+ try {
+ provider.acceptTagValue(name, type);
+ Assert.assertTrue(expected);
+ } catch (TagValueNotFoundException e) {
+ Assert.assertFalse(expected);
+ } catch (MismatchTagValueTargetException e) {
+ Assert.assertFalse(expected);
+ }
}
}
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -36,7 +36,7 @@
public class JavaTemplatesModelPropertiesProvider extends ModelPropertiesProvider {
@Override
- public void init() throws IllegalAccessException {
+ public void initStores() throws IllegalAccessException {
scanStereotypeClass(JavaTemplatesStereoTypes.class);
scanTagValueClass(JavaTemplatesTagValues.class);
}
Modified: trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java 2014-04-26 17:42:25 UTC (rev 1343)
+++ trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java 2014-04-26 18:56:51 UTC (rev 1344)
@@ -27,7 +27,9 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.nuiton.eugene.metas.MismatchTagValueTargetException;
import org.nuiton.eugene.metas.ModelPropertiesProvider;
+import org.nuiton.eugene.metas.TagValueNotFoundException;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
@@ -120,8 +122,14 @@
protected void acceptTagValue(String name, boolean expected, Class<?>... types) {
for (Class<?> type : types) {
- boolean actual = provider.acceptTagValue(name, type);
- Assert.assertEquals(expected, actual);
+ try {
+ provider.acceptTagValue(name, type);
+ Assert.assertTrue(expected);
+ } catch (TagValueNotFoundException e) {
+ Assert.assertFalse(expected);
+ } catch (MismatchTagValueTargetException e) {
+ Assert.assertFalse(expected);
+ }
}
}
1
0
r1343 - in trunk/eugene/src/main/java/org/nuiton/eugene/models/object: . reader
by tchemit@users.nuiton.org 26 Apr '14
by tchemit@users.nuiton.org 26 Apr '14
26 Apr '14
Author: tchemit
Date: 2014-04-26 19:42:25 +0200 (Sat, 26 Apr 2014)
New Revision: 1343
Url: http://forge.nuiton.org/projects/eugene/repository/revisions/1343
Log:
fix typo
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2014-04-26 17:11:32 UTC (rev 1342)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2014-04-26 17:42:25 UTC (rev 1343)
@@ -366,7 +366,7 @@
if (!safe) {
- // stereotype unkown
+ // stereotype unknown
if (log.isWarnEnabled()) {
log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' is unknown.");
}
@@ -470,9 +470,9 @@
if (!safe) {
- // unkown tag value
+ // unknown tag value
if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' is unkown.");
+ log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' is unknown.");
}
} else {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 17:11:32 UTC (rev 1342)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 17:42:25 UTC (rev 1343)
@@ -291,7 +291,7 @@
if (!safe) {
if (log.isWarnEnabled()) {
- log.warn("Invalid model tag value [" + key + "] : the tagvalue '" + tag + "' is unkown.");
+ log.warn("Invalid model tag value [" + key + "] : the tagvalue '" + tag + "' is unknown.");
}
} else {
safe = modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
@@ -361,9 +361,9 @@
if (!safe) {
- // stereotype unkown
+ // stereotype unknown
if (log.isWarnEnabled()) {
- log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' is unkown.");
+ log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' is unknown.");
}
} else {
@@ -476,9 +476,9 @@
if (!safe) {
- // unkown tag value
+ // unknown tag value
if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' is unkown.");
+ log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' is unknown.");
}
} else {
1
0
Author: tchemit
Date: 2014-04-26 19:11:32 +0200 (Sat, 26 Apr 2014)
New Revision: 1342
Url: http://forge.nuiton.org/projects/eugene/repository/revisions/1342
Log:
fixes #3175: Introduce a metas package for Stereotype and TagValue API and improve this API.
Added:
trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/
trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProviders.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeDefinition.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueAble.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValues.java
trunk/eugene/src/main/java/org/nuiton/eugene/metas/package-info.java
trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider
Removed:
trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider
trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider
Modified:
trunk/eugene-java-templates/pom.xml
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesGeneratorUtil.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java
trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java
trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java
trunk/eugene-maven-plugin/pom.xml
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java
trunk/eugene-plantuml-templates/pom.xml
trunk/eugene-yaml-templates/pom.xml
trunk/eugene/pom.xml
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
trunk/pom.xml
Modified: trunk/eugene/pom.xml
===================================================================
--- trunk/eugene/pom.xml 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/pom.xml 2014-04-26 17:11:32 UTC (rev 1342)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.8.1-SNAPSHOT</version>
+ <version>2.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Added: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,19 @@
+package org.nuiton.eugene;
+
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
+
+/**
+ * The Eugene provider of tag values and stereotypes.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @plexus.component role="org.nuiton.eugene.metas.ModelPropertiesProvider" role-hint="eugene"
+ * @since 2.3
+ */
+public class EugeneModelPropertiesProvider extends ModelPropertiesProvider {
+
+ @Override
+ public void init() throws IllegalAccessException {
+ scanStereotypeClass(EugeneStereoTypes.class);
+ scanTagValueClass(EugeneTagValues.class);
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneModelPropertiesProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -25,11 +25,10 @@
package org.nuiton.eugene;
import org.nuiton.eugene.java.JavaGeneratorUtil;
+import org.nuiton.eugene.metas.StereotypeDefinition;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import static org.nuiton.eugene.ModelPropertiesUtil.StereotypeDefinition;
-
/**
* Defines all stereotypes managed by Eugene.
* <p/>
@@ -45,7 +44,7 @@
* Stéréotype pour les attributs à indexer en base.
*
* @see GeneratorUtil#hasIndexedStereotype(ObjectModelAttribute)
- * @deprecated since 2.8, use {@link #STEREOTYPE_ORDERED} instead
+ * @deprecated since 2.8, use {@link #STEREOTYPE_ORDERED} instead, will be removed in version 3.0
*/
@StereotypeDefinition(target = ObjectModelAttribute.class,
documentation = "To specify that a attribute is indexed")
@@ -54,7 +53,7 @@
/**
* Stereotype to mark an attribute with multiplicity as ordered.
- *
+ * <p/>
* 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}.
@@ -68,14 +67,14 @@
/**
* Stereotype to mark an attribute with multiplicity as unique.
- *
+ * <p/>
* 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}.
*
* @see JavaGeneratorUtil#hasUniqueStereotype(ObjectModelAttribute)
*/
@StereotypeDefinition(target = ObjectModelAttribute.class,
- documentation = "To specify that an attribute is unique")
+ documentation = "To specify that an attribute is unique")
String STEREOTYPE_UNIQUE = "unique";
/**
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -25,12 +25,11 @@
package org.nuiton.eugene;
import org.nuiton.eugene.java.JavaGeneratorUtil;
+import org.nuiton.eugene.metas.TagValueDefinition;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
import org.nuiton.eugene.models.object.ObjectModelElement;
-import static org.nuiton.eugene.ModelPropertiesUtil.TagValueDefinition;
-
/**
* Defines all tag values managed by Eugene.
* <p/>
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -16,8 +16,8 @@
* 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
+ *
+ * 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%
@@ -27,6 +27,8 @@
package org.nuiton.eugene;
import org.apache.commons.lang3.StringUtils;
+import org.nuiton.eugene.metas.TagValueAble;
+import org.nuiton.eugene.metas.TagValues;
import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -461,7 +463,9 @@
* @param element l'élément à tester
* @param model le modele utilisé
* @return la valeur du tagValue ou null
+ * @deprecated since 2.9 (will be remove in version 3.0), prefer use now {@link TagValues#findTagValue(String, TagValueAble...)}
*/
+ @Deprecated
public static String findTagValue(String tagName,
ObjectModelElement element,
Model model) {
@@ -798,7 +802,8 @@
* @since 2.3
*/
public static String getDocumentationTagValue(ObjectModel model) {
- String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, null, model);
+// String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, null, model);
+ String value = TagValues.findTagValue(EugeneTagValues.TAG_DOCUMENTATION, model);
return value;
}
@@ -812,7 +817,8 @@
* @since 2.3
*/
public static String getDocumentationTagValue(ObjectModelElement element) {
- String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, element, null);
+// String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, element, null);
+ String value = TagValues.findTagValue(EugeneTagValues.TAG_DOCUMENTATION, element);
return value;
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -45,7 +45,9 @@
*
* @author tchemit <chemit(a)codelutin.com>
* @since 2.3
+ * @deprecated since 2.9, will be removed in version 3.0, use now classes inside {@link org.nuiton.eugene.metas} package.
*/
+@Deprecated
public class ModelPropertiesUtil {
/** Logger. */
@@ -101,7 +103,6 @@
* The Eugene provider of tag values and stereotypes.
*
* @author tchemit <chemit(a)codelutin.com>
- * @plexus.component role="org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider" role-hint="eugene"
* @since 2.3
*/
public static class EugeneModelPropertiesProvider extends ModelPropertiesProvider {
@@ -185,7 +186,7 @@
/**
* Obtain the english documentation of the stereotype.
- *
+ *
* @return the documentation of the stereotype.
* @since 2.3.1
*/
@@ -242,7 +243,9 @@
protected Map<String, TagValueDefinition> tagValueStore;
protected Map<String, StereotypeDefinition> stereotypeStore;
+
protected Set<String> deprecatedTagValues;
+
protected Set<String> deprecatedStereotypes;
protected boolean verbose;
@@ -261,7 +264,7 @@
public void setVerbose(boolean verbose) {
this.verbose = verbose;
}
-
+
public abstract void init() throws Exception;
protected void scanStereotypeClass(Class<?> holder) throws IllegalAccessException {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -27,6 +27,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
import org.nuiton.eugene.models.Model;
import java.io.File;
@@ -69,7 +70,7 @@
*
* @since 2.3
*/
- protected ModelPropertiesUtil.ModelPropertiesProvider modelPropertiesProvider;
+ protected ModelPropertiesProvider modelPropertiesProvider;
/**
* Gets the type of model.
@@ -136,7 +137,7 @@
* @return the provider of controled tagvalues and stereotypes.
* @since 2.3
*/
- public ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
+ public ModelPropertiesProvider getModelPropertiesProvider() {
return modelPropertiesProvider;
}
@@ -146,7 +147,7 @@
* @param modelPropertiesProvider the provider to use
* @since 2.3
*/
- public void setModelPropertiesProvider(ModelPropertiesUtil.ModelPropertiesProvider modelPropertiesProvider) {
+ public void setModelPropertiesProvider(ModelPropertiesProvider modelPropertiesProvider) {
this.modelPropertiesProvider = modelPropertiesProvider;
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -28,6 +28,7 @@
import org.nuiton.eugene.EugeneStereoTypes;
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.metas.TagValues;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
@@ -152,7 +153,8 @@
*/
public static String getI18nPrefixTagValue(ObjectModelElement element,
ObjectModel model) {
- return findTagValue(EugeneTagValues.TAG_I18N_PREFIX, element, model);
+// return findTagValue(EugeneTagValues.TAG_I18N_PREFIX, element, model);
+ return TagValues.findTagValue(EugeneTagValues.TAG_I18N_PREFIX, element, model);
}
/**
@@ -169,8 +171,10 @@
*/
public static boolean isDoNotGenerateBooleanGetMethods(ObjectModel model,
ObjectModelClassifier classifier) {
- String value = findTagValue(EugeneTagValues.TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS, classifier, model);
- return value!=null && "true".equals(value);
+// String value = findTagValue(EugeneTagValues.TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS, classifier, model);
+// return value!=null && "true".equals(value);
+ boolean value = TagValues.findBooleanTagValue(EugeneTagValues.TAG_DO_NOT_GENERATE_BOOLEAN_GET_METHODS, classifier, model);
+ return value;
}
/**
@@ -187,7 +191,8 @@
*/
public static String getConstantPrefixTagValue(ObjectModel model,
ObjectModelClassifier classifier) {
- String value = findTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, classifier, model);
+// String value = findTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, classifier, model);
+ String value = TagValues.findTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, classifier, model);
return value;
}
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,52 @@
+package org.nuiton.eugene.metas;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ServiceLoader;
+
+/**
+ * A aggregate provider to box all the ones registred in the class-path via the
+ * {@link ServiceLoader} api.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.3
+ */
+public class AggregateModelPropertiesProvider extends ModelPropertiesProvider {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(AggregateModelPropertiesProvider.class);
+
+ protected ClassLoader loader;
+
+ private Iterable<ModelPropertiesProvider> providers;
+
+ public AggregateModelPropertiesProvider(ClassLoader loader) {
+ this.loader = loader;
+ }
+
+ public AggregateModelPropertiesProvider(Iterable<ModelPropertiesProvider> providers) {
+ this.providers = providers;
+ }
+
+ @Override
+ public void init() throws Exception {
+
+ if (providers == null) {
+
+ providers = ServiceLoader.load(ModelPropertiesProvider.class, loader);
+ }
+
+ for (ModelPropertiesProvider provider : providers) {
+ if (isVerbose()) {
+ log.info("Will init model properties provider " + provider);
+ }
+ provider.setVerbose(isVerbose());
+ provider.init();
+ getStereotypeStore().putAll(provider.getStereotypeStore());
+ getTagValueStore().putAll(provider.getTagValueStore());
+ getDeprecatedStereotypes().addAll(provider.getDeprecatedStereotypes());
+ getDeprecatedTagValues().addAll(provider.getDeprecatedTagValues());
+ }
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/AggregateModelPropertiesProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,196 @@
+package org.nuiton.eugene.metas;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since XXX
+ */
+public abstract class ModelPropertiesProvider {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ModelPropertiesProvider.class);
+
+ protected Map<String, TagValueDefinition> tagValueStore;
+
+ protected Map<String, StereotypeDefinition> stereotypeStore;
+
+ protected Set<String> deprecatedTagValues;
+
+ protected Set<String> deprecatedStereotypes;
+
+ protected boolean verbose;
+
+ protected ModelPropertiesProvider() {
+ stereotypeStore = new TreeMap<String, StereotypeDefinition>();
+ tagValueStore = new TreeMap<String, TagValueDefinition>();
+ deprecatedTagValues = new HashSet<String>();
+ deprecatedStereotypes = new HashSet<String>();
+ }
+
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ public abstract void init() throws Exception;
+
+ protected void scanStereotypeClass(Class<?> holder) throws IllegalAccessException {
+ if (isVerbose()) {
+ log.info("Will scan " + holder.getName() + " to search some stereotype definitions...");
+ }
+ Field[] fields = holder.getDeclaredFields();
+ for (Field field : fields) {
+
+ StereotypeDefinition stereotypeDefinition =
+ field.getAnnotation(StereotypeDefinition.class);
+
+ if (stereotypeDefinition != null) {
+ String fieldName = field.getName();
+ String stereotypeName = (String) field.get(null);
+ if (isVerbose()) {
+ log.info("Detected stereotype definition [" + fieldName + ":" + stereotypeName + "] : " + Arrays.toString(stereotypeDefinition.target()));
+ }
+ stereotypeStore.put(stereotypeName, stereotypeDefinition);
+ if (field.isAnnotationPresent(Deprecated.class)) {
+ deprecatedStereotypes.add((stereotypeName));
+ }
+ }
+ }
+ }
+
+ protected void scanTagValueClass(Class<?> holder) throws IllegalAccessException {
+ if (isVerbose()) {
+ log.info("Will scan " + holder.getName() + " to search some tag value definitions...");
+ }
+ Field[] fields = holder.getDeclaredFields();
+ for (Field field : fields) {
+
+ TagValueDefinition tagValueDefinition =
+ field.getAnnotation(TagValueDefinition.class);
+ if (tagValueDefinition != null) {
+ String fieldName = field.getName();
+ String tagValueName = (String) field.get(null);
+ if (isVerbose()) {
+ log.info("Detected tag value definition [" + fieldName + ":" + tagValueName + "] : " + Arrays.toString(tagValueDefinition.target()));
+ }
+ tagValueStore.put(tagValueName, tagValueDefinition);
+ if (field.isAnnotationPresent(Deprecated.class)) {
+ deprecatedTagValues.add((tagValueName));
+ }
+ }
+ }
+ }
+
+ public Map<String, StereotypeDefinition> getStereotypeStore() {
+ return stereotypeStore;
+ }
+
+ public Map<String, TagValueDefinition> getTagValueStore() {
+ return tagValueStore;
+ }
+
+ public Set<String> getDeprecatedTagValues() {
+ return deprecatedTagValues;
+ }
+
+ public Set<String> getDeprecatedStereotypes() {
+ return deprecatedStereotypes;
+ }
+
+ public Class<?>[] getTagValueTarget(String tagValueName) {
+ TagValueDefinition definition = tagValueStore.get(tagValueName);
+
+ Class<?>[] result = null;
+ if (definition != null) {
+ result = definition.target();
+ }
+ return result;
+ }
+
+ public Class<?>[] getStereotypeTarget(String tagValueName) {
+
+ StereotypeDefinition definition = stereotypeStore.get(tagValueName);
+
+ Class<?>[] result = null;
+ if (definition != null) {
+ result = definition.target();
+ }
+ return result;
+ }
+
+ public boolean containsTagValue(String tagValueName) {
+ boolean b = tagValueStore.containsKey(tagValueName);
+ return b;
+ }
+
+ public boolean containsStereotype(String stereotypeName) {
+ boolean b = stereotypeStore.containsKey(stereotypeName);
+ return b;
+ }
+
+ public boolean acceptTagValue(String tagValueName, Class<?> type) {
+ if (!containsTagValue(tagValueName)) {
+
+ // unknown
+ return false;
+ }
+
+ Class<?>[] tagValueTarget = getTagValueTarget(tagValueName);
+
+ for (Class<?> target : tagValueTarget) {
+ if (target.equals(type) || target.isAssignableFrom(type)) {
+
+ // found one accepting target
+ return true;
+ }
+ }
+
+ // no target found
+ return false;
+ }
+
+ public boolean acceptStereotype(String stereotypeName, Class<?> type) {
+ if (!containsStereotype(stereotypeName)) {
+
+ // unknown
+ return false;
+ }
+
+ Class<?>[] tagValueTarget = getStereotypeTarget(stereotypeName);
+ for (Class<?> target : tagValueTarget) {
+ if (target.equals(type) || target.isAssignableFrom(type)) {
+
+ // found one accepting target
+ return true;
+ }
+ }
+
+ // no target found
+ return false;
+ }
+
+ public boolean isDeprecatedTagValue(String tagValueName) {
+ boolean deprecated = deprecatedTagValues.contains(tagValueName);
+ return deprecated;
+ }
+
+ public boolean isDeprecatedStereotype(String stereotypeName) {
+ boolean deprecated = deprecatedStereotypes.contains(stereotypeName);
+ return deprecated;
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProviders.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProviders.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProviders.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,60 @@
+package org.nuiton.eugene.metas;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class ModelPropertiesProviders {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ModelPropertiesProviders.class);
+
+ /**
+ * Obtain a new store of tag values and stereotypes.
+ *
+ * @param loader the classloader to use (if none given will use the one of the current thread)
+ * @param verbose a verbose flag
+ * @return the aggregate store of all atomic one detected in the class-path
+ */
+ public static ModelPropertiesProvider newStore(ClassLoader loader, boolean verbose) {
+
+ if (loader == null) {
+
+ // use the current thread loader
+ loader = Thread.currentThread().getContextClassLoader();
+ }
+
+ ModelPropertiesProvider store = new AggregateModelPropertiesProvider(loader);
+ store.setVerbose(verbose || log.isDebugEnabled());
+ try {
+ store.init();
+ } catch (Exception e) {
+ throw new RuntimeException("Could not init store of tag values and stereotypes", e);
+ }
+ return store;
+ }
+
+ /**
+ * Obtain a new store of tag values and stereotypes.
+ *
+ * @param providers the list of providers to use in the store
+ * @param verbose a verbose flag
+ * @return the aggregate store of all atomic one detected in the class-path
+ */
+ public static ModelPropertiesProvider newStore(Iterable<ModelPropertiesProvider> providers, boolean verbose) {
+
+ ModelPropertiesProvider store = new AggregateModelPropertiesProvider(providers);
+ store.setVerbose(verbose || log.isDebugEnabled());
+ try {
+ store.init();
+ } catch (Exception e) {
+ throw new RuntimeException("Could not init store of tag values and stereotypes", e);
+ }
+ return store;
+ }
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/ModelPropertiesProviders.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,28 @@
+package org.nuiton.eugene.metas;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public interface StereotypeAble {
+
+ /**
+ * Returns the stereotypes names associated with this element.
+ *
+ * @return a Collection containing all stereotypes names associated with this element as String.
+ */
+ Collection<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);
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeAble.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeDefinition.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeDefinition.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeDefinition.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,44 @@
+package org.nuiton.eugene.metas;
+
+import org.nuiton.eugene.EugeneTagValues;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * To define a stereotype.
+ * <p/>
+ * Place this annotation on the constant defining your stereotype.
+ * <p/>
+ * <br/>
+ * Example for stereotype named mystereotype which can be only put on a attribute :
+ * <pre>
+ * String STEREOTYPE_MYSTEREOTYPE = "mystereotype";
+ * \@StereotypeDefinition(target = ObjectModelAttribute.class)
+ * </pre
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @see EugeneTagValues
+ * @since 2.3
+ */
+(a)Target(ElementType.FIELD)
+(a)Retention(RetentionPolicy.RUNTIME)
+public @interface StereotypeDefinition {
+
+ /**
+ * Define the types of object model api which can use this tag value.
+ *
+ * @return the array of target object model element which can accept the tag value.
+ */
+ Class<?>[] target();
+
+ /**
+ * Obtain the english documentation of the stereotype.
+ *
+ * @return the documentation of the stereotype.
+ * @since 2.3.1
+ */
+ String documentation();
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/StereotypeDefinition.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueAble.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueAble.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueAble.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,47 @@
+package org.nuiton.eugene.metas;
+
+import java.util.Map;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public interface TagValueAble {
+
+ /**
+ * Returns the tagValues associated with this element.
+ * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-)
+ *
+ * @return a Map containing all tagValues associated with this element
+ */
+ Map<String, String> getTagValues();
+
+ /**
+ * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
+ *
+ * @param tagValue tag value key
+ * @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
+ */
+ String getTagValue(String tagValue);
+
+ /**
+ * Adds the given {@code value} associated to the {@code tagValue}.
+ * <p/>
+ * Note: If a previous tag value was definied, then it will be replaced.
+ *
+ * @param tagValue the name of the tag value
+ * @param value the value to associate
+ * @since 2.1.2
+ */
+ void addTagValue(String tagValue, String value);
+
+ /**
+ * Returns whether this element has a tagValue corresponding to the given name, or not.
+ *
+ * @param tagValue tag value name
+ * @return a boolean indicating whether this element has a tagValue corresponding to the given name, or not.
+ */
+ boolean hasTagValue(String tagValue);
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueAble.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,41 @@
+package org.nuiton.eugene.metas;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * To define a tag value.
+ * <p/>
+ * Place this annotation on the constant defining your tag-value.
+ * <p/>
+ * Example for tag value named mytagvalut which can be only put on a attribute :
+ * <pre>
+ * String TAG_VALUE_MYTAGVALUE = "mytagvalue";
+ * \@TagValueDefinition(target = ObjectModelAttribute.class)
+ * </pre
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @see org.nuiton.eugene.EugeneTagValues
+ * @since 2.3
+ */
+(a)Target(ElementType.FIELD)
+(a)Retention(RetentionPolicy.RUNTIME)
+public @interface TagValueDefinition {
+
+ /**
+ * Define the types of object model api which can use this tag value.
+ *
+ * @return the array of target object model element which can accept the tag value.
+ */
+ Class<?>[] target();
+
+ /**
+ * Obtain the english documentation of the tag value.
+ *
+ * @return the documentation of the tag value.
+ * @since 2.3.1
+ */
+ String documentation();
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValueDefinition.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValues.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValues.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValues.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,91 @@
+package org.nuiton.eugene.metas;
+
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.eugene.models.object.ObjectModelElement;
+
+/**
+ * Created on 4/26/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.9
+ */
+public class TagValues {
+
+ /**
+ * Seek for a boolean tag value.
+ * <p/>
+ * Will first the tag value using the method {@link #findTagValue(String, TagValueAble...)}.
+ * <p/>
+ * If found, return {@code true}, if the value is not null and is {@code "true"} String value.
+ * <p/>
+ * <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 tagName tag name to find
+ * @param elements not null elements to test
+ * @return found boolean tag value or {@code false} if tag value is not found, nor having
+ * exactly {@code "true"} value.
+ * @since 2.9
+ */
+ public static boolean findBooleanTagValue(String tagName, TagValueAble... elements) {
+
+ String value = findTagValue(tagName, elements);
+ return value != null && "true".equals(value);
+
+ }
+
+ /**
+ * Seek for a tag value amoung elements given using these rules:
+ * <ul>
+ * <li>Look into {@code elements} and return the first not empty tag value 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
+ * value found.</li>
+ * <li>If not found return {@code null}</li>
+ * </ul>
+ * <p/>
+ * <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 tagName tag name to find
+ * @param elements not null elements to test
+ * @return found tag value or {@code null} if not found
+ * @since 2.9
+ */
+ public static String findTagValue(String tagName, TagValueAble... elements) {
+
+ for (TagValueAble element : elements) {
+ String value = findNotEmptyTagValue(tagName, element);
+ if (value != null) {
+ return value;
+ }
+ }
+
+ for (TagValueAble element : elements) {
+ if (element instanceof ObjectModelElement) {
+ // try in declaring element
+ ObjectModelElement declaringElement = ((ObjectModelElement) element).getDeclaringElement();
+ if (declaringElement != null) {
+ String value = findNotEmptyTagValue(tagName, declaringElement);
+ if (value != null) {
+ return value;
+ }
+ }
+ }
+ }
+ return null;
+
+ }
+
+ public static String findNotEmptyTagValue(String tagName, TagValueAble element) {
+ String value = element.getTagValue(tagName);
+ if (StringUtils.isEmpty(value)) {
+ value = null;
+ }
+ return value;
+
+ }
+
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/TagValues.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/metas/package-info.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/metas/package-info.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/metas/package-info.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1,37 @@
+/*
+ * #%L
+ * EUGene :: EUGene
+ *
+ * $Id$
+ * $HeadURL: https://nuiton.org/svn/eugene/trunk/eugene/src/main/java/org/nuiton/eugene/… $
+ * %%
+ * Copyright (C) 2004 - 2010 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%
+ */
+
+/**
+ * This package contains all the metas objects you can add on a model,
+ * such as a stereotype or tagValue.
+ *
+ * We find also here tools to read and validate them.
+ *
+ * <strong>Note:</strong> Replace the deprecated class {@link org.nuiton.eugene.ModelPropertiesUtil}.
+ *
+ * @since 2.9
+ */
+package org.nuiton.eugene.metas;
+
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/metas/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -26,16 +26,17 @@
package org.nuiton.eugene.models;
-import java.util.Map;
+import org.nuiton.eugene.metas.TagValueAble;
/**
* Model.
*
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : */
-public interface Model {
+ * <p/>
+ * Mise a jour: $Date$
+ * par :
+ */
+public interface Model extends TagValueAble {
/**
* Plexus role name
@@ -62,31 +63,31 @@
*/
String getModelType();
- /**
- * Returns the tagValues associated with this element.
- * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-)
- *
- * @return a Map containing all tagValues associated with this element
- */
- Map<String, String> getTagValues();
+// /**
+// * Returns the tagValues associated with this element.
+// * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-)
+// *
+// * @return a Map containing all tagValues associated with this element
+// */
+// Map<String, String> getTagValues();
+//
+// /**
+// * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
+// *
+// * @param tagValue tag value key
+// * @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
+// */
+// String getTagValue(String tagValue);
+//
+// /**
+// * Adds the given {@code value} associated to the {@code tagValue}.
+// *
+// * Note: If a previous tag value was definied, then it will be replaced.
+// *
+// * @param tagValue the name of the tag value
+// * @param value the value to associate
+// * @since 2.1.2
+// */
+// void addTagValue(String tagValue, String value);
- /**
- * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
- *
- * @param tagValue tag value key
- * @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
- */
- String getTagValue(String tagValue);
-
- /**
- * Adds the given {@code value} associated to the {@code tagValue}.
- *
- * Note: If a previous tag value was definied, then it will be replaced.
- *
- * @param tagValue the name of the tag value
- * @param value the value to associate
- * @since 2.1.2
- */
- void addTagValue(String tagValue, String value);
-
} //Model
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -25,51 +25,53 @@
package org.nuiton.eugene.models.object;
-import java.util.Collection;
+import org.nuiton.eugene.metas.StereotypeAble;
+import org.nuiton.eugene.metas.TagValueAble;
+
import java.util.List;
-import java.util.Map;
/**
* ObjectModelElement.
- *
+ *
* @author Cédric Pineau <pineau(a)codelutin.com>
- * Copyright Code Lutin
+ * Copyright Code Lutin
* @version $Revision$
- *
- * Last update : $Date$
- * by : */
-public interface ObjectModelElement {
+ * <p/>
+ * Last update : $Date$
+ * by :
+ */
+public interface ObjectModelElement extends TagValueAble, StereotypeAble {
/**
- * Returns the name of this element.
- *
- * @return the name of this element.
- */
+ * Returns the name of this element.
+ *
+ * @return the name of this element.
+ */
String getName();
/**
- * Returns the element in which this element is defined, or null if there's none.
- *
- * @return the ObjectModelElement in which this element is defined, or null if there's none.
- */
+ * Returns the element in which this element is defined, or null if there's none.
+ *
+ * @return the ObjectModelElement in which this element is defined, or null if there's none.
+ */
ObjectModelElement getDeclaringElement();
/**
- * Returns the whole documentation associated with this element (description + source documentation).
- *
- * @return the whole documentation associated with this element.
- */
+ * Returns the whole documentation associated with this element (description + source documentation).
+ *
+ * @return the whole documentation associated with this element.
+ */
String getDocumentation();
/**
- * The description of this element is the upper part of the element's
- * documentation.
- *
- * The other part of the document can be accessed with
- * {@link #getSourceDocumentation()}
- *
- * @return the description associated with this element.
- */
+ * The description of this element is the upper part of the element's
+ * documentation.
+ * <p/>
+ * The other part of the document can be accessed with
+ * {@link #getSourceDocumentation()}
+ *
+ * @return the description associated with this element.
+ */
String getDescription();
/**
@@ -81,58 +83,59 @@
*/
String getSourceDocumentation();
- /**
- * Returns the stereotypes names associated with this element.
- *
- * @return a Collection containing all stereotypes names associated with this element as String.
- */
- Collection<String> getStereotypes();
+// /**
+// * Returns the stereotypes names associated with this element.
+// *
+// * @return a Collection containing all stereotypes names associated with this element as String.
+// */
+// Collection<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);
- /**
- * 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);
+// /**
+// * Returns the tagValues associated with this element.
+// * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-)
+// *
+// * @return a Map containing all tagValues associated with this element
+// */
+// Map<String, String> getTagValues();
+//
+// /**
+// * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
+// *
+// * @param tagValue tag value name
+// * @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
+// */
+// String getTagValue(String tagValue);
+//
+// /**
+// * Returns whether this element has a tagValue corresponding to the given name, or not.
+// *
+// * @param tagValue tag value name
+// * @return a boolean indicating whether this element has a tagValue corresponding to the given name, or not.
+// */
+// boolean hasTagValue(String tagValue);
/**
- * Returns the tagValues associated with this element.
- * For each entry, the key is the name of the tagValue, the value is the value of the tagValue :-)
- *
- * @return a Map containing all tagValues associated with this element
- */
- Map<String, String> getTagValues();
-
- /**
- * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
- *
- * @param tagValue tag value name
- * @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
- */
- String getTagValue(String tagValue);
-
- /**
- * Returns whether this element has a tagValue corresponding to the given name, or not.
- *
- * @param tagValue tag value name
- * @return a boolean indicating whether this element has a tagValue corresponding to the given name, or not.
- */
- boolean hasTagValue(String tagValue);
-
- /**
- * Return if this element has static declaration, only valid when
- * getDeclaringElement is classifier. Not possible for the moment
+ * Return if this element has static declaration, only valid when
+ * getDeclaringElement is classifier. Not possible for the moment
* to have static innerClass (from XMI 1.2 and 2.1).
+ *
* @return true if element is static
*/
boolean isStatic();
/**
- * Returns all comments lied to this particular model element
- *
- * @return a List containing all comments for this element as Strings.
- */
+ * Returns all comments lied to this particular model element
+ *
+ * @return a List containing all comments for this element as Strings.
+ */
List<String> getComments();
} //ObjectModelElement
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -31,8 +31,8 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.ModelHelper;
-import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
+import org.nuiton.eugene.metas.ModelPropertiesProviders;
import org.nuiton.eugene.models.object.reader.XmlObjectModelReader;
import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet;
import org.nuiton.eugene.models.object.xml.ObjectModelAssociationClassImpl;
@@ -139,7 +139,7 @@
if (log.isWarnEnabled()) {
log.warn("No properties provider filled, will instanciate a new default one");
}
- setModelPropertiesProvider(ModelPropertiesUtil.newStore(getClass().getClassLoader(), false));
+ setModelPropertiesProvider(ModelPropertiesProviders.newStore(getClass().getClassLoader(), false));
}
ObjectModel model = new ObjectModelImpl();
@@ -307,7 +307,7 @@
if (!safe) {
if (log.isWarnEnabled()) {
- log.warn("Invalid model tag value [" + key + "] : the tagvalue '" + tag + "' is unkown.");
+ log.warn("Invalid model tag value [" + key + "] : the tagvalue '" + tag + "' is unknown.");
}
} else {
safe = modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
@@ -368,7 +368,7 @@
// stereotype unkown
if (log.isWarnEnabled()) {
- log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' is unkown.");
+ log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' is unknown.");
}
} else {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -29,8 +29,8 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.ModelHelper;
-import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
+import org.nuiton.eugene.metas.ModelPropertiesProviders;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAssociationClass;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -125,7 +125,7 @@
if (log.isDebugEnabled()) {
log.debug("No properties provider filled, will instanciate a new default one");
}
- setModelPropertiesProvider(ModelPropertiesUtil.newStore(getClass().getClassLoader(), false));
+ setModelPropertiesProvider(ModelPropertiesProviders.newStore(getClass().getClassLoader(), false));
}
}
@@ -317,7 +317,7 @@
boolean deprecated = modelPropertiesProvider.isDeprecatedTagValue(tag);
if (deprecated) {
if (log.isWarnEnabled()) {
- log.warn("Deprecated tagValue usage [" + key + "] : " + value );
+ log.warn("Deprecated tagValue usage [" + key + "] : " + value);
}
}
}
@@ -390,7 +390,7 @@
boolean deprecated = modelPropertiesProvider.isDeprecatedStereotype(value);
if (deprecated) {
if (log.isWarnEnabled()) {
- log.warn("Deprecated stereotype usage [" + key + "] : " + value );
+ log.warn("Deprecated stereotype usage [" + key + "] : " + value);
}
}
}
@@ -505,7 +505,7 @@
boolean deprecated = modelPropertiesProvider.isDeprecatedTagValue(tag);
if (deprecated) {
if (log.isWarnEnabled()) {
- log.warn("Deprecated tagValue usage [" + key + "] : " + value );
+ log.warn("Deprecated tagValue usage [" + key + "] : " + value);
}
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -230,15 +230,7 @@
return tagValues.containsKey(tagValue);
}
- /**
- * Adds the given {@code value} associated to the {@code tagValue}.
- * <p/>
- * Note: If a previous tag value was definied, then it will be replaced.
- *
- * @param tagValue the name of the tag value
- * @param value the value to associate
- * @since 2.1.2
- */
+ @Override
public void addTagValue(String tagValue, String value) {
String oldValue = getTagValue(tagValue);
if (StringUtils.isNotEmpty(oldValue)) {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -509,15 +509,7 @@
return tagValue == null ? null : tagValues.get(tagValue);
}
- /**
- * Adds the given {@code value} associated to the {@code tagValue}.
- *
- * Note: If a previous tag value was definied, then it will be replaced.
- *
- * @param tagValue the name of the tag value
- * @param value the value to associate
- * @since 2.1.2
- */
+ @Override
public void addTagValue(String tagValue, String value) {
String oldValue = getTagValue(tagValue);
if (StringUtils.isNotEmpty(oldValue) && !oldValue.equals(value)) {
@@ -529,6 +521,11 @@
tagValues.put(tagValue,value);
}
+ @Override
+ public boolean hasTagValue(String tagValue) {
+ return tagValues.containsKey(tagValue);
+ }
+
/**
* Get the extension associated to the reference (unique). Create it if not exist.
* @param <O> object type returned
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -127,14 +127,7 @@
return modelTagValues;
}
- /**
- * Adds the given {@code value} associated to the {@code key}.
- *
- * Note: If a previous tag value was definied, then it will be replaced.
- *
- * @param key the name of the tag value
- * @param value the value to associate
- */
+ @Override
public void addTagValue(String key, String value) {
modelTagValues.put(key, value);
}
@@ -144,6 +137,11 @@
return key == null ? null : modelTagValues.get(key);
}
+ @Override
+ public boolean hasTagValue(String tagValue) {
+ return modelTagValues.containsKey(tagValue);
+ }
+
/**
* Set model version.
*
Deleted: trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider
===================================================================
--- trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2014-04-26 17:11:32 UTC (rev 1342)
@@ -1 +0,0 @@
-org.nuiton.eugene.ModelPropertiesUtil$EugeneModelPropertiesProvider
\ No newline at end of file
Copied: trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider (from rev 1339, trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider)
===================================================================
--- trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider (rev 0)
+++ trunk/eugene/src/main/resolver-cache/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1 @@
+org.nuiton.eugene.EugeneModelPropertiesProvider
\ No newline at end of file
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -27,6 +27,7 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
@@ -36,18 +37,18 @@
import org.nuiton.eugene.models.object.ObjectModelOperation;
/**
- * To test {@link ModelPropertiesUtil.EugeneModelPropertiesProvider}.
+ * To test {@link EugeneModelPropertiesProvider}.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 2.3
*/
public class EugeneModelPropertiesProviderTest {
- protected ModelPropertiesUtil.ModelPropertiesProvider provider;
+ protected ModelPropertiesProvider provider;
@Before
public void setUp() throws Exception {
- provider = new ModelPropertiesUtil.EugeneModelPropertiesProvider();
+ provider = new EugeneModelPropertiesProvider();
provider.init();
}
Modified: trunk/eugene-java-templates/pom.xml
===================================================================
--- trunk/eugene-java-templates/pom.xml 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-java-templates/pom.xml 2014-04-26 17:11:32 UTC (rev 1342)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.8.1-SNAPSHOT</version>
+ <version>2.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesGeneratorUtil.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesGeneratorUtil.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesGeneratorUtil.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -25,6 +25,7 @@
*/
import org.apache.commons.lang3.StringUtils;
+import org.nuiton.eugene.metas.TagValues;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
@@ -61,8 +62,10 @@
* @since 2.3
*/
public static boolean isNoPCS(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_NO_PCS, classifier, model);
- return value != null && "true".equals(value);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_NO_PCS, classifier, model);
+// return value != null && "true".equals(value);
+ boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_NO_PCS, classifier, model);
+ return value;
}
/**
@@ -78,7 +81,8 @@
* @since 2.3
*/
public static String getBeanSuperClassTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_BEAN_SUPER_CLASS, classifier, model);
return value;
}
@@ -95,7 +99,8 @@
* @since 2.6.2
*/
public static String getSimpleBeanSuperClassTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_SUPER_CLASS, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_SUPER_CLASS, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_SUPER_CLASS, classifier, model);
return value;
}
@@ -112,8 +117,10 @@
* @since 2.3
*/
public static boolean isSimpleBeanGenerateInterface(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_INTERFACE, classifier, model);
- return value != null && "true".equals(value);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_INTERFACE, classifier, model);
+// return value != null && "true".equals(value);
+ boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_INTERFACE, classifier, model);
+ return value ;
}
/**
@@ -126,8 +133,10 @@
* @since 2.7.2
*/
public static boolean isSimpleBeanGenerateFactory(ObjectModel model) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_FACTORY, null, model);
- return value != null && "true".equals(value);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_FACTORY, null, model);
+// return value != null && "true".equals(value);
+ boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_FACTORY, model);
+ return value;
}
/**
@@ -143,7 +152,8 @@
* @since 2.6.2
*/
public static String getSimpleBeanInterfaceSuperClassTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_SUPER_CLASS, classifier, model);
return value;
}
@@ -160,7 +170,8 @@
* @since 2.6.2
*/
public static String getSimpleBeanClassNamePrefixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_PREFIX, classifier, model);
return value;
}
@@ -177,7 +188,8 @@
* @since 2.6.2
*/
public static String getSimpleBeanClassNameSuffixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_CLASS_NAME_SUFFIX, classifier, model);
return value;
}
@@ -194,7 +206,8 @@
* @since 2.6.2
*/
public static String getSimpleBeanInterfaceNamePrefixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_PREFIX, classifier, model);
return value;
}
@@ -211,7 +224,8 @@
* @since 2.6.2
*/
public static String getSimpleBeanInterfaceNameSuffixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_INTERFACE_NAME_SUFFIX, classifier, model);
return value;
}
@@ -228,8 +242,10 @@
* @since 2.7.2
*/
public static boolean isSimpleBeanGenerateDefaults(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_DEFAULTS, classifier, model);
- return value != null && "true".equals(value);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_DEFAULTS, classifier, model);
+// return value != null && "true".equals(value);
+ boolean value = TagValues.findBooleanTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_GENERATE_DEFAULTS, classifier, model);
+ return value;
}
/**
@@ -245,7 +261,8 @@
* @since 2.7.2
*/
public static String getSimpleBeanDefaultsSuperClassTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_SUPER_CLASS, classifier, model);
return value;
}
@@ -262,7 +279,8 @@
* @since 2.7.2
*/
public static String getSimpleBeanDefaultsClassNamePrefixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_PREFIX, classifier, model);
return value;
}
@@ -271,7 +289,7 @@
* tag value on the given model or classifier.
* <p/>
* It will first look on the model, and then in the given classifier.
- *
+ * <p/>
* <strong>If not filled, then use default {@code s} value.</strong>
*
* @param model model to seek
@@ -281,7 +299,8 @@
* @since 2.6.2
*/
public static String getSimpleBeanDefaultsClassNameSuffixTagValue(ObjectModel model, ObjectModelClassifier classifier) {
- String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX, classifier, model);
+// String value = findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX, classifier, model);
+ String value = TagValues.findTagValue(JavaTemplatesTagValues.TAG_SIMPLE_BEAN_DEFAULTS_CLASS_NAME_SUFFIX, classifier, model);
if (StringUtils.isBlank(value)) {
value = "s";
}
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProvider.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -24,16 +24,16 @@
* #L%
*/
-import org.nuiton.eugene.ModelPropertiesUtil;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
/**
* The Java templates provider of tag values and stereotypes.
*
* @author tchemit <chemit(a)codelutin.com>
- * @plexus.component role="org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider" role-hint="java"
+ * @plexus.component role="org.nuiton.eugene.metas.ModelPropertiesProvider" role-hint="java"
* @since 2.5.6
*/
-public class JavaTemplatesModelPropertiesProvider extends ModelPropertiesUtil.ModelPropertiesProvider {
+public class JavaTemplatesModelPropertiesProvider extends ModelPropertiesProvider {
@Override
public void init() throws IllegalAccessException {
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesStereoTypes.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -25,7 +25,7 @@
*/
import org.nuiton.eugene.EugeneStereoTypes;
-import org.nuiton.eugene.ModelPropertiesUtil;
+import org.nuiton.eugene.metas.StereotypeDefinition;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
/**
@@ -42,7 +42,7 @@
* @see JavaTemplatesGeneratorUtil#hasBeanStereotype(ObjectModelClassifier)
* @since 2.5.6
*/
- @ModelPropertiesUtil.StereotypeDefinition(
+ @StereotypeDefinition(
target = ObjectModelClassifier.class,
documentation = "To specify that a class is a JavaBean")
String STEREOTYPE_BEAN = "bean";
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaTemplatesTagValues.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -25,7 +25,7 @@
*/
import org.nuiton.eugene.EugeneTagValues;
-import org.nuiton.eugene.ModelPropertiesUtil;
+import org.nuiton.eugene.metas.TagValueDefinition;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
@@ -45,7 +45,7 @@
* @see JavaTemplatesGeneratorUtil#isNoPCS(ObjectModel, ObjectModelClassifier)
* @since 2.5.6
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To specify to not generate any propertyChange " +
"code for a class or any class of a model")
@@ -108,7 +108,7 @@
* @see JavaTemplatesGeneratorUtil#getBeanSuperClassTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.5.6
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To specify a super-class to used on generated bean " +
"for a class or any class of a model.\n" +
@@ -172,7 +172,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanSuperClassTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.5.6
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To specify a super-class to used on generated simple bean " +
"for a class or any class of a model.\n" +
@@ -187,7 +187,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanClassNamePrefixTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.6.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To add a prefix on class name of generated bean " +
"for a class or any class of a model.\n" +
@@ -202,7 +202,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanClassNameSuffixTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.6.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To add a suffix on class name of generated bean " +
"for a class or any class of a model.\n" +
@@ -217,7 +217,7 @@
* @see JavaTemplatesGeneratorUtil#isSimpleBeanGenerateInterface(ObjectModel, ObjectModelClassifier)
* @since 2.6.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To generate an interface for each bean " +
"for a class or any class of a model.\n" +
@@ -232,7 +232,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanInterfaceSuperClassTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.6.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To specify a super-class to used on generated interfaces " +
"for a class or any class of a model.\n" +
@@ -247,7 +247,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanInterfaceNamePrefixTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.6.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To add a prefix on interface name of generated bean " +
"for a class or any class of a model.\n" +
@@ -262,7 +262,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanInterfaceNameSuffixTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.6.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To add a suffix on interface name of generated bean " +
"for a class or any class of a model.\n" +
@@ -277,7 +277,7 @@
* @see JavaTemplatesGeneratorUtil#isSimpleBeanGenerateFactory(ObjectModel)
* @since 2.6.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class},
documentation = "To generate a factory of simple bean.\n" +
"(only effective with simple bean generator)")
@@ -291,7 +291,7 @@
* @see JavaTemplatesGeneratorUtil#isSimpleBeanGenerateDefaults(ObjectModel, ObjectModelClassifier)
* @since 2.7.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To generate defaults class with simple operations on the type.\n" +
"(only effective with simple bean generator)")
@@ -306,7 +306,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanDefaultsSuperClassTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.7.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To specify a super-class to used on generated defaults classes" +
"for a bean or any bean of a model.\n" +
@@ -321,7 +321,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanDefaultsClassNamePrefixTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.7.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To add a prefix on class name of generated defaults bean " +
"for a class or any class of a model.\n" +
@@ -336,7 +336,7 @@
* @see JavaTemplatesGeneratorUtil#getSimpleBeanDefaultsClassNameSuffixTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.6.2
*/
- @ModelPropertiesUtil.TagValueDefinition(
+ @TagValueDefinition(
target = {ObjectModel.class, ObjectModelClassifier.class},
documentation = "To add a suffix on class name of generated defaults bean " +
"for a class or any class of a model.\n" +
Modified: trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java
===================================================================
--- trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformer.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -133,8 +133,7 @@
boolean generateFactory =
JavaTemplatesGeneratorUtil.isSimpleBeanGenerateFactory(model);
- String defaultPackage =
- getConfiguration().getProperty(PROP_DEFAULT_PACKAGE);
+ String defaultPackage = getDefaultPackageName();
String fqn = defaultPackage + "." + className;
boolean canGenerate = generateFactory &&
@@ -227,8 +226,7 @@
}
protected void generateBeanFactory(ObjectModel model, String className) {
- String defaultPackage =
- getConfiguration().getProperty(PROP_DEFAULT_PACKAGE);
+ String defaultPackage = getDefaultPackageName();
ObjectModelClass output = createClass(className, defaultPackage);
Deleted: trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider
===================================================================
--- trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2014-04-26 17:11:32 UTC (rev 1342)
@@ -1 +0,0 @@
-org.nuiton.eugene.java.JavaTemplatesModelPropertiesProvider
\ No newline at end of file
Copied: trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider (from rev 1339, trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider)
===================================================================
--- trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider (rev 0)
+++ trunk/eugene-java-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider 2014-04-26 17:11:32 UTC (rev 1342)
@@ -0,0 +1 @@
+org.nuiton.eugene.java.JavaTemplatesModelPropertiesProvider
\ No newline at end of file
Modified: trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-java-templates/src/test/java/org/nuiton/eugene/java/JavaTemplatesModelPropertiesProviderTest.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -27,7 +27,7 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.nuiton.eugene.ModelPropertiesUtil;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
@@ -44,7 +44,7 @@
*/
public class JavaTemplatesModelPropertiesProviderTest {
- protected ModelPropertiesUtil.ModelPropertiesProvider provider;
+ protected ModelPropertiesProvider provider;
@Before
public void setUp() throws Exception {
Modified: trunk/eugene-maven-plugin/pom.xml
===================================================================
--- trunk/eugene-maven-plugin/pom.xml 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-maven-plugin/pom.xml 2014-04-26 17:11:32 UTC (rev 1342)
@@ -29,7 +29,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.8.1-SNAPSHOT</version>
+ <version>2.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -33,9 +33,12 @@
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.Template;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
+import org.nuiton.eugene.metas.ModelPropertiesProviders;
+import org.nuiton.eugene.metas.StereotypeDefinition;
+import org.nuiton.eugene.metas.TagValueDefinition;
import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.writer.ChainedFileWriter;
@@ -107,12 +110,12 @@
*
* @since 2.3.1
*/
- @Component(role = ModelPropertiesUtil.ModelPropertiesProvider.class)
- protected Map<String, ModelPropertiesUtil.ModelPropertiesProvider> modelPropertiesProviders;
+ @Component(role = ModelPropertiesProvider.class)
+ protected Map<String, ModelPropertiesProvider> modelPropertiesProviders;
- protected Map<String, ModelPropertiesUtil.ModelPropertiesProvider> loadedProviders;
+ protected Map<String, ModelPropertiesProvider> loadedProviders;
- protected ModelPropertiesUtil.ModelPropertiesProvider currentPropertiesProvider;
+ protected ModelPropertiesProvider currentPropertiesProvider;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
@@ -143,7 +146,8 @@
} catch (IllegalArgumentException e) {
getLog().warn(
"does not know data type : " + s + " use one of " +
- Arrays.toString(AvailableData.values()));
+ Arrays.toString(AvailableData.values())
+ );
}
}
}
@@ -151,10 +155,10 @@
if (safeDataTypes.contains(AvailableData.stereotype) ||
safeDataTypes.contains(AvailableData.tagvalue)) {
- loadedProviders = new LinkedHashMap<String, ModelPropertiesUtil.ModelPropertiesProvider>();
+ loadedProviders = new LinkedHashMap<String, ModelPropertiesProvider>();
// init stores
- for (Map.Entry<String, ModelPropertiesUtil.ModelPropertiesProvider> e : modelPropertiesProviders.entrySet()) {
- ModelPropertiesUtil.ModelPropertiesProvider provider = ModelPropertiesUtil.newStore(
+ for (Map.Entry<String, ModelPropertiesProvider> e : modelPropertiesProviders.entrySet()) {
+ ModelPropertiesProvider provider = ModelPropertiesProviders.newStore(
Arrays.asList(e.getValue()),
false
);
@@ -177,7 +181,7 @@
if (data == AvailableData.tagvalue || data == AvailableData.stereotype) {
int nbData = 0;
- for (ModelPropertiesUtil.ModelPropertiesProvider provider : loadedProviders.values()) {
+ for (ModelPropertiesProvider provider : loadedProviders.values()) {
currentPropertiesProvider = provider;
nbData += data.getData(this).size();
}
@@ -192,9 +196,9 @@
loadedProviders.keySet())
);
- for (Map.Entry<String, ModelPropertiesUtil.ModelPropertiesProvider> e : loadedProviders.entrySet()) {
+ for (Map.Entry<String, ModelPropertiesProvider> e : loadedProviders.entrySet()) {
String providerName = e.getKey();
- ModelPropertiesUtil.ModelPropertiesProvider provider = e.getValue();
+ ModelPropertiesProvider provider = e.getValue();
currentPropertiesProvider = provider;
Map<String, ?> map = data.getData(this);
@@ -288,7 +292,7 @@
@Override
String toString(Object data) {
- ModelPropertiesUtil.TagValueDefinition d = (ModelPropertiesUtil.TagValueDefinition) data;
+ TagValueDefinition d = (TagValueDefinition) data;
StringBuilder sb = new StringBuilder();
Class<?>[] targets = d.target();
for (Class<?> aClass : targets) {
@@ -310,7 +314,7 @@
buffer.append("] targets : '");
buffer.append(toString(value));
buffer.append("\' : ");
- buffer.append(((ModelPropertiesUtil.TagValueDefinition) value).documentation());
+ buffer.append(((TagValueDefinition) value).documentation());
}
},
stereotype {
@@ -321,7 +325,7 @@
@Override
String toString(Object data) {
- ModelPropertiesUtil.StereotypeDefinition d = (ModelPropertiesUtil.StereotypeDefinition) data;
+ StereotypeDefinition d = (StereotypeDefinition) data;
StringBuilder sb = new StringBuilder();
Class<?>[] targets = d.target();
for (Class<?> aClass : targets) {
@@ -343,7 +347,7 @@
buffer.append("] targets : '");
buffer.append(toString(value));
buffer.append("\' : ");
- buffer.append(((ModelPropertiesUtil.StereotypeDefinition) value).documentation());
+ buffer.append(((StereotypeDefinition) value).documentation());
}
};
@@ -364,13 +368,13 @@
}
}
- protected ModelPropertiesUtil.ModelPropertiesProvider getCurrentPropertiesProvider() {
+ protected ModelPropertiesProvider getCurrentPropertiesProvider() {
return currentPropertiesProvider;
}
- protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
+ protected ModelPropertiesProvider getModelPropertiesProvider() {
- ModelPropertiesUtil.ModelPropertiesProvider provider;
+ ModelPropertiesProvider provider;
if (modelPropertiesProviders == null ||
modelPropertiesProviders.isEmpty()) {
@@ -378,12 +382,12 @@
// could not find any model properties via plexus
// try to obtain them by ServiceLoader
- provider = ModelPropertiesUtil.newStore(
+ provider = ModelPropertiesProviders.newStore(
getClass().getClassLoader(),
false
);
} else {
- provider = ModelPropertiesUtil.newStore(
+ provider = ModelPropertiesProviders.newStore(
modelPropertiesProviders.values(),
false
);
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -37,9 +37,10 @@
import org.apache.maven.settings.Settings;
import org.nuiton.eugene.DefaultTemplateConfiguration;
import org.nuiton.eugene.ModelHelper;
-import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.Template;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
+import org.nuiton.eugene.metas.ModelPropertiesProviders;
import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.plugin.writer.BaseChainedFileWriter;
import org.nuiton.eugene.plugin.writer.XmiChainedFileWriter;
@@ -320,8 +321,8 @@
*
* @since 2.3
*/
- @Component(role = ModelPropertiesUtil.ModelPropertiesProvider.class)
- protected Map<String, ModelPropertiesUtil.ModelPropertiesProvider> modelPropertiesProviders;
+ @Component(role = ModelPropertiesProvider.class)
+ protected Map<String, ModelPropertiesProvider> modelPropertiesProviders;
/** The engine to compute {@link ChainedFileWriter} from inputs entries. */
@Component(role = ChainedWriterEngine.class)
@@ -891,9 +892,9 @@
}
}
- protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() throws MojoExecutionException {
+ protected ModelPropertiesProvider getModelPropertiesProvider() throws MojoExecutionException {
- ModelPropertiesUtil.ModelPropertiesProvider provider;
+ ModelPropertiesProvider provider;
if (modelPropertiesProviders == null ||
modelPropertiesProviders.isEmpty() ||
@@ -902,12 +903,12 @@
// could not find any model properties via plexus
// try to obtain them by ServiceLoader
- provider = ModelPropertiesUtil.newStore(
+ provider = ModelPropertiesProviders.newStore(
getFixedClassLoader(),
verbose
);
} else {
- provider = ModelPropertiesUtil.newStore(
+ provider = ModelPropertiesProviders.newStore(
modelPropertiesProviders.values(),
verbose
);
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -24,8 +24,8 @@
* #L%
*/
-import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.writer.ChainedFileWriterConfiguration;
import org.nuiton.eugene.writer.ChainedFileWriterToMemoryModel;
@@ -102,8 +102,8 @@
return getProperty(PROP_READER, String.class);
}
- protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
- return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesUtil.ModelPropertiesProvider.class);
+ protected ModelPropertiesProvider getModelPropertiesProvider() {
+ return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesProvider.class);
}
@Override
@@ -144,7 +144,8 @@
throw new IllegalStateException(
"could not find a model reader for modelType: " +
modelType + ", and input type: " + inputType + ", availables readers : " +
- configuration.getModelHelper().getModelReaders().values());
+ configuration.getModelHelper().getModelReaders().values()
+ );
}
properties.put(PROP_MODEL_READER, modelReader);
}
@@ -153,7 +154,7 @@
boolean verbose = configuration.isVerbose();
// gets the provider of safe tag values and stereotypes
- ModelPropertiesUtil.ModelPropertiesProvider propertiesProvider =
+ ModelPropertiesProvider propertiesProvider =
getModelPropertiesProvider();
// affect it to the model reader
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2014-04-26 17:11:32 UTC (rev 1342)
@@ -27,10 +27,10 @@
import org.apache.commons.lang3.StringUtils;
import org.nuiton.eugene.DefaultTemplateConfiguration;
-import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.Template;
import org.nuiton.eugene.TemplateConfiguration;
+import org.nuiton.eugene.metas.ModelPropertiesProvider;
import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.writer.ChainedFileWriterConfiguration;
@@ -51,7 +51,7 @@
*/
public class ModelChainedFileWriter extends BaseChainedFileWriter {
- public static final String PROP_GENERATED_PACKAGES = "generatedPackages";
+ public static final String PROP_GENERATED_PACKAGES = Template.PROP_GENERATED_PACKAGES;
public static final String PROP_EXCLUDE_TEMPLATES = "excludeTemplates";
@@ -59,7 +59,7 @@
public static final String PROP_TEMPLATES_LIST = "templatesList";
- public static final String PROP_DEFAULT_PACKAGE = "defaultPackage";
+ public static final String PROP_DEFAULT_PACKAGE = Template.PROP_DEFAULT_PACKAGE;
public static final String PROP_MODEL_READER = "modelReader";
@@ -165,8 +165,8 @@
return getProperty(PROP_READER, String.class);
}
- protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
- return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesUtil.ModelPropertiesProvider .class);
+ protected ModelPropertiesProvider getModelPropertiesProvider() {
+ return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesProvider.class);
}
@Override
@@ -210,9 +210,8 @@
boolean verbose = configuration.isVerbose();
// gets the provider of safe tag values and stereotypes
- ModelPropertiesUtil.ModelPropertiesProvider propertiesProvider =
- getModelPropertiesProvider();
-
+ ModelPropertiesProvider propertiesProvider = getModelPropertiesProvider();
+
// affect it to the model reader
getModelReader().setModelPropertiesProvider(propertiesProvider);
@@ -274,7 +273,8 @@
} catch (Exception e) {
throw new IllegalStateException(
"Can't obtain template [" + templateName +
- "] for reason " + e.getMessage(), e);
+ "] for reason " + e.getMessage(), e
+ );
}
}
@@ -307,9 +307,8 @@
if (configuration.isVerbose()) {
getLog().info("Will read " + filesToRead.length + " model(s).");
}
-
-
+
// read memory model from all files models
Model model = getModelReader().read(filesToRead);
Modified: trunk/eugene-plantuml-templates/pom.xml
===================================================================
--- trunk/eugene-plantuml-templates/pom.xml 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-plantuml-templates/pom.xml 2014-04-26 17:11:32 UTC (rev 1342)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.8.1-SNAPSHOT</version>
+ <version>2.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/eugene-yaml-templates/pom.xml
===================================================================
--- trunk/eugene-yaml-templates/pom.xml 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/eugene-yaml-templates/pom.xml 2014-04-26 17:11:32 UTC (rev 1342)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.8.1-SNAPSHOT</version>
+ <version>2.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-04-26 17:10:22 UTC (rev 1341)
+++ trunk/pom.xml 2014-04-26 17:11:32 UTC (rev 1342)
@@ -32,7 +32,7 @@
</parent>
<artifactId>eugene</artifactId>
- <version>2.8.1-SNAPSHOT</version>
+ <version>2.9-SNAPSHOT</version>
<packaging>pom</packaging>
<name>EUGene</name>
<description>Efficient Universal Generator</description>
1
0
26 Apr '14
Author: tchemit
Date: 2014-04-26 19:10:22 +0200 (Sat, 26 Apr 2014)
New Revision: 1341
Url: http://forge.nuiton.org/projects/eugene/repository/revisions/1341
Log:
fixes #3176: Review the outputProperties state in Transformer
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2014-04-25 10:06:34 UTC (rev 1340)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2014-04-26 17:10:22 UTC (rev 1341)
@@ -68,7 +68,7 @@
/**
* Properties for output generator.
*/
- protected Properties outputProperties;
+ protected Properties outputProperties = new Properties();
public Transformer() {
}
@@ -96,14 +96,15 @@
// merge input configuration + output properties
Properties properties = new Properties();
properties.putAll(getConfiguration().getProperties());
- properties.putAll(getOutputProperties());
+ properties.putAll(outputProperties);
TemplateConfiguration outconfig =
new DefaultTemplateConfiguration(properties);
+ // Note tchemit 2014-04-26, do not touch the outputProperties, init the transformer
+ // should not change this state
// push back to outputPropertie the all configuration
- //FIXME tchemit 2010-05-16 Should rethink this...
- outputProperties = properties;
+// outputProperties = properties;
outputTemplate.setConfiguration(outconfig);
outputModel = initOutputModel();
@@ -139,14 +140,20 @@
*
* @return output properties
* @since 2.0.0
+ * @deprecated since 2.9, wille be removed in version 3.0, prefer use now {@link #addOutputProperty(String, Object)}
*/
+ @Deprecated
protected Properties getOutputProperties() {
- if (outputProperties == null) {
- outputProperties = new Properties();
- }
+// if (outputProperties == null) {
+// outputProperties = new Properties();
+// }
return outputProperties;
}
+ public void addOutputProperty(String key, Object value) {
+ outputProperties.put(key, value);
+ }
+
public Template<O> getOutputTemplate() {
return outputTemplate;
}
@@ -156,8 +163,7 @@
}
public String getDefaultPackageName() {
- String packageName =
- getOutputProperties().getProperty(PROP_DEFAULT_PACKAGE);
+ String packageName = getConfiguration().getProperty(PROP_DEFAULT_PACKAGE);
return packageName;
}
1
0
r1340 - trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin
by tchemit@users.nuiton.org 25 Apr '14
by tchemit@users.nuiton.org 25 Apr '14
25 Apr '14
Author: tchemit
Date: 2014-04-25 12:06:34 +0200 (Fri, 25 Apr 2014)
New Revision: 1340
Url: http://forge.nuiton.org/projects/eugene/repository/revisions/1340
Log:
refs #3169 (improve logs)
Modified:
trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java
Modified: trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java
===================================================================
--- trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java 2014-04-23 08:05:06 UTC (rev 1339)
+++ trunk/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java 2014-04-25 10:06:34 UTC (rev 1340)
@@ -486,18 +486,8 @@
continue;
}
long t0 = System.nanoTime();
- int size = writer.getEntries().size();
- if (size == 1) {
- getLog().info(
- "Process phase [" + writer.getInputProtocol() +
- "] for one entry."
- );
- } else {
- getLog().info(
- "Process phase [" + writer.getInputProtocol() +
- "] for " + size + " entries."
- );
- }
+ getLog().info("Process phase [" + writer.getInputProtocol() + "]");
+
if (dryRun || isVerbose()) {
for (ChainedFileWriterEntry entry : writer.getEntries()) {
getLog().info(" entry : " + entry);
@@ -532,16 +522,7 @@
WriterReport writerReport = newWriterReport();
- int size = models.size();
- if (size == 1) {
- getLog().info(
- "Process phase [java] for one entry."
- );
- } else {
- getLog().info(
- "Process phase [java] for " + size + " entries."
- );
- }
+ getLog().info("Process phase [generator]");
for (ChainedFileWriterToMemoryModel entry : models) {
Model model = entry.getModel();
1
0