r1342 - in trunk: . eugene eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/java eugene/src/main/java/org/nuiton/eugene/metas eugene/src/main/java/org/nuiton/eugene/models eugene/src/main/java/org/nuiton/eugene/models/object eugene/src/main/java/org/nuiton/eugene/models/object/reader eugene/src/main/java/org/nuiton/eugene/models/object/xml eugene/src/main/java/org/nuiton/eugene/models/state/xml eugene/src/main/resolver-cache/META-INF/services eugene/src/test/jav
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@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@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@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@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@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@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@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@codelutin.com> + * @see EugeneTagValues + * @since 2.3 + */ +@Target(ElementType.FIELD) +@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@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@codelutin.com> + * @see org.nuiton.eugene.EugeneTagValues + * @since 2.3 + */ +@Target(ElementType.FIELD) +@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@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/p... $ + * %% + * 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@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@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@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>
participants (1)
-
tchemit@users.nuiton.org