r1030 - in trunk: eugene/src/main/java/org/nuiton/eugene maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin
Author: tchemit Date: 2011-01-21 15:45:11 +0100 (Fri, 21 Jan 2011) New Revision: 1030 Url: http://nuiton.org/repositories/revision/eugene/1030 Log: Evolution #1218: Add stereotypes and tagvalues in the available-data goal Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2011-01-21 10:43:29 UTC (rev 1029) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2011-01-21 14:45:11 UTC (rev 1030) @@ -221,6 +221,8 @@ protected Map<String, TagValueDefinition> tagValueStore; + protected Map<String, StereotypeDefinition> stereotypeStore; + protected boolean verbose; protected ModelPropertiesProvider() { @@ -235,7 +237,7 @@ public void setVerbose(boolean verbose) { this.verbose = verbose; } - + public abstract void init() throws Exception; protected void scanStereotypeClass(Class<?> holder) throws IllegalAccessException { @@ -279,13 +281,11 @@ } } - protected Map<String, StereotypeDefinition> stereotypeStore; - - protected Map<String, StereotypeDefinition> getStereotypeStore() { + public Map<String, StereotypeDefinition> getStereotypeStore() { return stereotypeStore; } - protected Map<String, TagValueDefinition> getTagValueStore() { + public Map<String, TagValueDefinition> getTagValueStore() { return tagValueStore; } Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java 2011-01-21 10:43:29 UTC (rev 1029) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java 2011-01-21 14:45:11 UTC (rev 1030) @@ -29,6 +29,7 @@ import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.nuiton.eugene.ModelPropertiesUtil; import org.nuiton.eugene.ModelReader; import org.nuiton.eugene.Template; import org.nuiton.eugene.models.Model; @@ -47,12 +48,12 @@ * (otherwise will display all known data types). * <p/> * + * @author tchemit <chemit@codelutin.com> * @goal available-data * @requiresProject true * @requiresDirectInvocation true * @requiresDependencyResolution test * @since 2.0.0 - * @author tchemit <chemit@codelutin.com> */ public class AvailableDataMojo extends AbstractMojo { @@ -65,7 +66,9 @@ * modeltype, * modelreader, * modeltemplate, - * writer + * writer, + * stereotype, + * tagvalue * </pre> * <p/> * <b>Note:</b> Let empty to display all data types. @@ -82,18 +85,21 @@ * @component role="org.nuiton.eugene.models.Model" */ protected Map<String, Model> modelTypes; + /** * All available writers introspects via plexus * * @component role="org.nuiton.eugene.ModelReader" */ protected Map<String, ModelReader<?>> modelReaders; + /** * All available templates introspects via plexus * * @component role="org.nuiton.eugene.Template" */ protected Map<String, Template<?>> modelTemplates; + /** * All available writers introspects via plexus * @@ -101,6 +107,14 @@ */ protected Map<String, ChainedFileWriter> writers; + /** + * All available model properties providers introspects via plexus + * + * @component role="org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider" + * @since 2.3.1 + */ + protected Map<String, ModelPropertiesUtil.ModelPropertiesProvider> modelPropertiesProviders; + @Override public void execute() throws MojoExecutionException, MojoFailureException { StringBuilder buffer = new StringBuilder(); @@ -162,13 +176,7 @@ buffer.append("s : "); } for (Map.Entry<String, ?> e : map.entrySet()) { - String name = e.getKey(); - Object value = e.getValue(); - buffer.append("\n ["); - buffer.append(name); - buffer.append("] with implementation '"); - buffer.append(data.toString(value)); - buffer.append('\''); + data.toString(buffer, e); } } @@ -184,6 +192,7 @@ public Map<String, ?> getData(AvailableDataMojo mojo) { return mojo.writers; } + @Override String toString(Object data) { ChainedFileWriter w = (ChainedFileWriter) data; @@ -212,6 +221,70 @@ public Map<String, ?> getData(AvailableDataMojo mojo) { return mojo.modelTemplates; } + }, + tagvalue { + @Override + public Map<String, ?> getData(AvailableDataMojo mojo) { + return mojo.getModelPropertiesProvider().getTagValueStore(); + } + + @Override + String toString(Object data) { + ModelPropertiesUtil.TagValueDefinition d = (ModelPropertiesUtil.TagValueDefinition) data; + StringBuilder sb = new StringBuilder(); + Class<?>[] targets = d.target(); + for (Class<?> aClass : targets) { + sb.append(", ").append(aClass.getSimpleName()); + } + String result = sb.toString(); + if (targets.length > 0) { + result = result.substring(2); + } + return result; + } + + @Override + void toString(StringBuilder buffer, Map.Entry<String, ?> e) { + String name = e.getKey(); + Object value = e.getValue(); + buffer.append("\n ["); + buffer.append(name); + buffer.append("] targets : '"); + buffer.append(toString(value)); + buffer.append('\''); + } + }, + stereotype { + @Override + public Map<String, ?> getData(AvailableDataMojo mojo) { + return mojo.getModelPropertiesProvider().getStereotypeStore(); + } + + @Override + String toString(Object data) { + ModelPropertiesUtil.StereotypeDefinition d = (ModelPropertiesUtil.StereotypeDefinition) data; + StringBuilder sb = new StringBuilder(); + Class<?>[] targets = d.target(); + for (Class<?> aClass : targets) { + sb.append(", ").append(aClass.getSimpleName()); + } + String result = sb.toString(); + if (targets.length > 0) { + result = result.substring(2); + } + return result; + } + + @Override + void toString(StringBuilder buffer, Map.Entry<String, ?> e) { + String name = e.getKey(); + Object value = e.getValue(); + buffer.append("\n ["); + buffer.append(name); + buffer.append("] targets : '"); + buffer.append(toString(value)); + buffer.append('\''); + } }; abstract Map<String, ?> getData(AvailableDataMojo mojo); @@ -219,6 +292,39 @@ String toString(Object data) { return data.getClass().getName(); } + + void toString(StringBuilder buffer, Map.Entry<String, ?> e) { + String name = e.getKey(); + Object value = e.getValue(); + buffer.append("\n ["); + buffer.append(name); + buffer.append("] with implementation '"); + buffer.append(toString(value)); + buffer.append('\''); + } } + protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() { + + ModelPropertiesUtil.ModelPropertiesProvider provider; + + if (modelPropertiesProviders == null || + modelPropertiesProviders.isEmpty()) { + + // could not find any model properties via plexus + // try to obtain them by ServiceLoader + + provider = ModelPropertiesUtil.newStore( + getClass().getClassLoader(), + false + ); + } else { + provider = ModelPropertiesUtil.newStore( + modelPropertiesProviders.values(), + false + ); + } + return provider; + } + }
participants (1)
-
tchemit@users.nuiton.org