r759 - in trunk: eugene/src/main/java/org/nuiton/eugene/java eugene/src/test/resources maven-eugene-plugin maven-eugene-plugin/src/it/generate/generators maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin
Author: tchemit Date: 2009-12-16 21:18:32 +0100 (Wed, 16 Dec 2009) New Revision: 759 Added: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateFromModelsMojo.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java trunk/eugene/src/test/resources/log4j.properties trunk/maven-eugene-plugin/pom.xml trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java Log: register concrete templates as plexus components, pass log to info in tests, introduce GenerateFromModels mojo Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-12-16 20:18:32 UTC (rev 759) @@ -50,6 +50,7 @@ * * Mise a jour: $Date$ * par : $Author$ + * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.java.JavaGenerator" */ public class JavaGenerator extends ObjectModelGenerator { Modified: trunk/eugene/src/test/resources/log4j.properties =================================================================== --- trunk/eugene/src/test/resources/log4j.properties 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/eugene/src/test/resources/log4j.properties 2009-12-16 20:18:32 UTC (rev 759) @@ -7,5 +7,5 @@ log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n # package level -log4j.logger.org.nuiton.eugene=DEBUG +log4j.logger.org.nuiton.eugene=INFO log4j.logger.org.apache.commons.digester=INFO \ No newline at end of file Modified: trunk/maven-eugene-plugin/pom.xml =================================================================== --- trunk/maven-eugene-plugin/pom.xml 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/maven-eugene-plugin/pom.xml 2009-12-16 20:18:32 UTC (rev 759) @@ -100,200 +100,10 @@ <pluginManagement> <plugins> - <!--plugin> - <artifactId>maven-javadoc-plugin</artifactId> - <version>${javadoc.version}</version> - <configuration> - <docencoding>${project.reporting.outputEncoding}</docencoding> - <encoding>${project.reporting.outputEncoding}</encoding> - <charset>${project.reporting.outputEncoding}</charset> - <quiet>true</quiet> - <skip>${maven.javadoc.skip}</skip> - <taglets> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoAggregatorTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoComponentFieldTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoConfiguratorTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoExecuteTypeTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoExecutionStrategyTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoGoalTypeTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoInheritByDefaultTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoInstantiationStrategyTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoParameterFieldTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoPhaseTypeTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoReadOnlyFieldTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiredFieldTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass> - org.apache.maven.tools.plugin.javadoc.MojoRequiresDependencyResolutionTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass> - org.apache.maven.tools.plugin.javadoc.MojoRequiresDirectInvocationTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresOnLineTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresProjectTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresReportsTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - - <taglet> - <tagletClass>org.codehaus.plexus.javadoc.PlexusComponentTaglet</tagletClass> - <tagletArtifact> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-javadoc</artifactId> - <version>1.0</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.codehaus.plexus.javadoc.PlexusConfigurationTaglet</tagletClass> - <tagletArtifact> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-javadoc</artifactId> - <version>1.0</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.codehaus.plexus.javadoc.PlexusRequirementTaglet</tagletClass> - <tagletArtifact> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-javadoc</artifactId> - <version>1.0</version> - </tagletArtifact> - </taglet> - </taglets> - </configuration> - </plugin--> - <plugin> <artifactId>maven-invoker-plugin</artifactId> <version>1.4</version> </plugin> - </plugins> </pluginManagement> @@ -306,200 +116,6 @@ <plugin> <artifactId>maven-plugin-plugin</artifactId> </plugin> - - - <!--plugin> - <artifactId>maven-javadoc-plugin</artifactId> - <version>${javadoc.version}</version> - <configuration> - <quiet>true</quiet> - <skip>${maven.javadoc.skip}</skip> - <docencoding>${project.build.sourceEncoding}</docencoding> - <encoding>${project.build.sourceEncoding}</encoding> - <charset>${project.reporting.outputEncoding}</charset> - <excludePackageNames>${maven.javadoc.excludePackageNames}</excludePackageNames> - <taglets> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoAggregatorTypeTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoComponentFieldTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoConfiguratorTypeTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoExecuteTypeTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoExecutionStrategyTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoGoalTypeTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoInheritByDefaultTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoInstantiationStrategyTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoParameterFieldTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoPhaseTypeTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoReadOnlyFieldTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiredFieldTaglet</tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass> - org.apache.maven.tools.plugin.javadoc.MojoRequiresDependencyResolutionTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresDirectInvocationTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresOnLineTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresProjectTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresReportsTypeTaglet - </tagletClass> - <tagletArtifact> - <groupId>org.apache.maven.plugin-tools</groupId> - <artifactId>maven-plugin-tools-javadoc</artifactId> - <version>2.4.2</version> - </tagletArtifact> - </taglet> - - <taglet> - <tagletClass>org.codehaus.plexus.javadoc.PlexusComponentTaglet</tagletClass> - <tagletArtifact> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-javadoc</artifactId> - <version>1.0</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.codehaus.plexus.javadoc.PlexusConfigurationTaglet</tagletClass> - <tagletArtifact> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-javadoc</artifactId> - <version>1.0</version> - </tagletArtifact> - </taglet> - <taglet> - <tagletClass>org.codehaus.plexus.javadoc.PlexusRequirementTaglet</tagletClass> - <tagletArtifact> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-javadoc</artifactId> - <version>1.0</version> - </tagletArtifact> - </taglet> - </taglets> - </configuration> - <reportSets> - <reportSet> - <reports> - <report>javadoc</report> - <report>test-javadoc</report> - </reports> - </reportSet> - </reportSets> - </plugin--> </plugins> </reporting> Modified: trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml 2009-12-16 20:18:32 UTC (rev 759) @@ -75,9 +75,7 @@ </executions> <configuration> <includes>**/*.java</includes> - <filters> - org.nuiton.processor.filters.GeneratorTemplatesFilter - </filters> + <filters>org.nuiton.processor.filters.GeneratorTemplatesFilter</filters> </configuration> </plugin> @@ -99,12 +97,11 @@ <id>Test Regression Generator</id> <phase>generate-test-sources</phase> <configuration> - <!--<reader>org.nuiton.eugene.ObjectModelReader</reader>--> <includes>dtotest.objectmodel</includes> <templates>org.nuiton.eugene.test.generator.BeanGenerator</templates> </configuration> <goals> - <goal>generate</goal> + <goal>generate-from-models</goal> </goals> </execution> <execution> @@ -115,19 +112,18 @@ <templates>org.nuiton.eugene.java.JavaGenerator</templates> </configuration> <goals> - <goal>generate</goal> + <goal>generate-from-models</goal> </goals> </execution> <execution> <id>Test Bean Transformer</id> <phase>generate-test-sources</phase> <configuration> - <!--<reader>org.nuiton.eugene.ObjectModelReader</reader>--> <includes>dtotest2.objectmodel</includes> <templates>org.nuiton.eugene.test.generator.BeanTransformer</templates> </configuration> <goals> - <goal>generate</goal> + <goal>generate-from-models</goal> </goals> </execution> </executions> Modified: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2009-12-16 20:18:32 UTC (rev 759) @@ -27,6 +27,7 @@ * * Mise a jour: $Date$ * par : $Author: chemit $ +* @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.topia.generator.BeanGenerator" */ package org.nuiton.eugene.test.generator; @@ -63,6 +64,7 @@ /** * DTO generator + * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.test.generator.BeanGenerator" */ public class BeanGenerator extends ObjectModelGenerator { Modified: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-12-16 20:18:32 UTC (rev 759) @@ -42,6 +42,7 @@ * <p/> * Mise a jour: $Date$ * par : $Author: fdesbois $ + * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.test.generator.BeanTransformer" */ public class BeanTransformer extends ObjectModelTransformerToJava { Modified: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java 2009-12-16 20:18:32 UTC (rev 759) @@ -15,6 +15,7 @@ * * Mise a jour: $Date$ * par : $Author$ + * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.test.generator.Megatron" */ public class Megatron extends ObjectModelTransformerToJava { Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java 2009-12-16 20:18:32 UTC (rev 759) @@ -84,8 +84,10 @@ protected boolean testPhase; /** * The type of model to be used. + * <p/> + * By default, use an {@code objectmodel}. * - * @parameter expression="${eugene.modelType}" + * @parameter expression="${eugene.modelType}" default-value="objectmodel" * @required * @since 2.0.0 */ Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-12-16 20:18:32 UTC (rev 759) @@ -53,9 +53,9 @@ * <p/> * Last update: $Date$ * by : $Author$ - * @goal generate-old + * @goal generate * @requiresProject true - * @deprecated since 2.0.0, use now the {@link GenerateMojo}. + * @deprecated since 2.0.0, use now the {@link GenerateFromModelsMojo}. */ @Deprecated public class EugenePlugin extends EugeneAbstractMojo { Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java 2009-12-16 18:01:51 UTC (rev 758) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java 2009-12-16 20:18:32 UTC (rev 759) @@ -42,7 +42,7 @@ * Time: 00:22:37 * * @goal generate-model-files - * @projectRequired true + * @requiresProject true * @requiresDependencyResolution compile */ public class GeneratateModelFilesMojo extends AbstractEugeneMojo implements ModelFileWriterConfiguration { @@ -68,18 +68,18 @@ * <p/> * Example : * <pre> - * <includes> - * <include>zargo:<include> - * <include>src/main/xmi2:**\/*.zargo<include> - * <include>zargo:src/main/xmi:**\/*.zargo2<include> - * </includes> + * <inputFiles> + * <inputFile>zargo:<inputFile> + * <inputFile>src/main/xmi2:**\/*.zargo<inputFile> + * <inputFile>zargo:src/main/xmi:**\/*.zargo2<inputFile> + * </inputFiles> * </pre> * - * @parameter expression="${eugene.includes}" + * @parameter expression="${eugene.inputFiles}" * @required * @since 2.0.0 */ - protected String[] includes; + protected String[] inputFiles; /** * Where to generate files. * @@ -109,14 +109,14 @@ * @since 2.0.0 */ protected String fullPackagePath; +// /** +// * Nom du paquetage à générer +// * +// * @parameter expression="${generator.extractedPackages}" default-value="${project.groupId}.${project.artifactId}" +// * @since 2.0.0 +// */ +// protected String extractedPackages; /** - * Nom du paquetage à générer - * - * @parameter expression="${generator.extractedPackages}" default-value="${project.groupId}.${project.artifactId}" - * @since 2.0.0 - */ - protected String extractedPackages; - /** * Nom du resolver a utiliser * * @parameter expression="${generator.resolver}" default-value="org.nuiton.util.ResourceResolver" @@ -124,25 +124,15 @@ */ protected String resolver; /** - * An extra directory to be added to the classpath. - * - * @parameter expression="${eugene.extraClassPathDirectory}" - * @since 2.0.0 - */ - protected File extraClassPathDirectory; - - /** * All available writers * * @component role="org.nuiton.eugene.ModelFileWriter" */ protected Map<String, ModelFileWriter> writers; - /** * All available writers for the given {@link #getModelClass()} */ protected Set<ModelFileWriter> availableWriters; - /** * Writers to process */ @@ -151,37 +141,39 @@ @Override protected boolean init() throws Exception { boolean b = super.init(); - if (b) { - if (includes.length == 0) { - throw new MojoExecutionException("Must specify something to include using the includes property"); - } + if (!b) { + return false; + } + if (inputFiles.length == 0) { + throw new MojoExecutionException("Must specify something to include using the includes property"); + } - availableWriters = ModelFileWriterUtil.filterWriterForModelType(writers, getModelClass()); + availableWriters = ModelFileWriterUtil.filterWriterForModelType(writers, getModelClass()); - if (availableWriters.isEmpty()) { - throw new MojoExecutionException("Could not find any writer in class-path."); - } + if (availableWriters.isEmpty()) { + throw new MojoExecutionException("Could not find any writer in class-path."); + } - for (ModelFileWriter writer : availableWriters) { - if (writer instanceof BaseModelFileWriter) { - ((BaseModelFileWriter) writer).setLog(getLog()); - } + for (ModelFileWriter writer : availableWriters) { + if (writer instanceof BaseModelFileWriter) { + // add log support + ((BaseModelFileWriter) writer).setLog(getLog()); } + } - plan = new ArrayList<ModelFileWriter>(); + plan = new ArrayList<ModelFileWriter>(); - // first pass to detect top level writers - for (String include : includes) { + // first pass to detect top level writers + for (String include : inputFiles) { - getLog().info("Register include : " + include); - ModelFileWriterUtil.registerInclude(this, include, plan); - } + getLog().info("Register include : " + include); + ModelFileWriterUtil.registerInclude(this, include, plan); + } - if (properties == null) { - properties = new TreeMap<String, Object>(); - } + if (properties == null) { + properties = new TreeMap<String, Object>(); } - return b; + return true; } @Override @@ -272,6 +264,7 @@ List<URL> urls = new ArrayList<URL>(); try { ClassLoader loader; + File extraClassPathDirectory = getExtraClassPathDirectory(); if (extraClassPathDirectory != null) { if (verbose) { getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory); Added: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateFromModelsMojo.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateFromModelsMojo.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateFromModelsMojo.java 2009-12-16 20:18:32 UTC (rev 759) @@ -0,0 +1,501 @@ +package org.nuiton.eugene.plugin; + +import org.apache.commons.lang.StringUtils; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.model.Resource; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.MavenProject; +import org.nuiton.eugene.ModelReader; +import org.nuiton.eugene.Template; +import org.nuiton.eugene.models.Model; +import org.nuiton.plugin.PluginHelper; +import org.nuiton.plugin.PluginIOContext; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.*; + +/** + * Created: 15 déc. 2009 + * + * @author Tony Chemit <chemit@codelutin.com> Copyright Code Lutin + * @version $Revision$ + * <p/> + * Mise a jour: $Date$ par : + * $Author: tchemit $ + * @goal generate-from-models + * @requiresProject true + * @since 2.0.0 (replace previous goal {@link EugenePlugin}). + */ +public class GenerateFromModelsMojo extends AbstractEugeneMojo { + + /** + * Les entrées sorties du plugin. + * <p/> + * <p/> + * <p/> + * En entrée on demande des répertoires où chercher les fichiers objectmodel a convertir. + * <p/> + * En sortie on demande le répertoire ou generer les classes java. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <pre> + * <generateResources> + * </p> + * <input>target/generated-sources/models</input> + * </p> + * <output>target/generated-sources/java</output> + * </p> + * </generateResources> + * </pre> + * </p> + * <p/> + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <pre> + * <generateResources> + * </p> + * <input>target/generated-sources/test-models</input> + * </p> + * <output>target/generated-sources/test-java</output> + * </p> + * </generateResources> + * </pre> + * + * @parameter + * @since 1.0.0-rc-8 + */ + protected PluginIOContext generateResources; + /** + * Templates à utiliser, séparés par des virgules. + * + * @parameter expression="${eugene.templates}" + * @required + * @since 0.50 + */ + protected String templates; + /** + * Templates à ne pas utiliser. + * + * @parameter expression="${eugene.excludeTemplates}" + * @since 0.63 + */ + protected String[] excludeTemplates; + /** + * Fichier à inclure. + * + * @parameter expression="${eugene.includes}" default-value="*.*model" + * @since 0.50 + */ + protected String includes; + /** + * Nom par défaut du paquetage généré. + * + * @parameter expression="${eugene.defaultPackage}" default-value="${project.groupId}.${project.artifactId}" + * @since 0.50 + */ + protected String defaultPackage; + /** + * List of packages to generate (comma separated). + * <p/> + * If the parameter is not filled, will generate all packages. + * + * @parameter expression="${eugene.generatedPackages}" + * @since 1.0.0-rc-8 + */ + protected String generatedPackages; + /** + * To define a specific reader to use to transform input files in a Model to generate. + * <p/> + * If nothing is specified, will use the reader corresponding to the given {@link #modelType}. + * + * @parameter expression="${eugene.reader}" + * @since 1.1.0 + */ + protected String reader; + /** + * All available writers + * + * @component role="org.nuiton.eugene.ModelReader" + */ + protected Map<String, ModelReader<?>> availableReaders; + /** + * All available templates + * + * @component role="org.nuiton.eugene.Template" + */ + protected Map<String, Template<?>> availableTemplates; + + /** + * model reader instance + */ + protected ModelReader<?> modelReader; + /** + * fixed classloader + */ + protected ClassLoader fixedClassLoader; + /** + * list of templates to apply + */ + protected List<Template<Model>> templatesList; + /** + * list of model files to load in the memory reader via the model reader + */ + protected File[] modelFiles; + + @Override + protected boolean init() throws Exception { + boolean b = super.init(); + if (!b) { + // something wrong from the super class, skip now + return false; + } + + // init goal io context + + generateResources = initResources(); + + if (generateResources == null) { + // could not be init... + return false; + } + + // init reader + + modelReader = getModelReader(); + if (modelReader == null) { + // could not be init... + return false; + } + + // get templates to use + + templatesList = getTemplates(getFixedClassLoader()); + + if (templatesList == null || templatesList.isEmpty()) { + getLog().error("No template to apply."); + return false; + } + + //TODO Check excludeTemplates are sane :) + + // get models to treate + + modelFiles = getModelFiles(generateResources); + if (modelFiles.length == 0) { + // can skip + getLog().warn("No model to treate."); + return false; + } + return true; + } + + @Override + public void doAction() throws MojoExecutionException, MojoFailureException { + + getLog().info("Generating java sources from models"); + getLog().info(" reader : " + modelReader.getClass().getName()); + getLog().info(" includes : " + includes); + getLog().info(" using template : " + templates); + getLog().info(" using defaultPackage : " + defaultPackage); + + if (verbose) { + for (File m : modelFiles) { + getLog().info("will treate model file : " + m); + } + } + + // prepare template properties + + Properties templateProperties = new Properties(); + templateProperties.setProperty(Template.PROP_DEFAULT_PACKAGE, defaultPackage); + templateProperties.setProperty(Template.PROP_OVERWRITE, String.valueOf(overwrite)); + templateProperties.setProperty(Template.PROP_ENCODING, encoding); + templateProperties.setProperty(Template.PROP_LAST_MODIFIED_SOURCE, String.valueOf(modelReader.getLastModifiedSource())); + if (StringUtils.isEmpty(generatedPackages)) { + getLog().info(" generating all packages"); + } else { + templateProperties.setProperty(Template.PROP_GENERATED_PACKAGES, generatedPackages); + getLog().info(" generating only for packages " + generatedPackages); + } + templateProperties.setProperty(Template.PROP_EXCLUDE_TEMPLATES, getExcludeTemplatesAsString()); + + // read the model + + Model model = modelReader.read(modelFiles); + + // apply all templates to the model + + for (Template<Model> template : templatesList) { + getLog().info("Apply " + template.getClass().getSimpleName() + " generator"); + + try { + + // init template + template.setProperties(templateProperties); + + // apply template + template.applyTemplate(model, generateResources.getOutput()); + } catch (IOException eee) { + throw new MojoExecutionException("Generation problem", eee); + } + } + + // fix compile root sources + + fixCompileSourceRoots(); + + } + + /** + * Init the {@link #generateResources} io context and return it. + * <p/> + * <b>Note:</b> If something wrong appears, then return a {@code null} value. + * + * @return the io context to use for the goal, or {@code null} if something was wrong + */ + protected PluginIOContext initResources() { + + File defaultIn = getFileFromBasedir("target", "generated-sources", "models"); + File defaultOut = getFileFromBasedir("target", "generated-sources", "java"); + + File defaultTestIn = getFileFromBasedir("target", "generated-sources", "test-models"); + File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-java"); + + PluginIOContext p = initResources(generateResources, defaultIn, defaultOut, defaultTestIn, defaultTestOut); + + // check context + + if ((p.getInputs() == null || p.getInputs().length == 0)) { + getLog().error("no input defined"); + return null; + } + if (p.getOutput() == null) { + getLog().error("no output defined"); + return null; + } + + if (!p.getOutput().exists()) { + boolean b2 = p.getOutput().mkdirs(); + if (!b2) { + getLog().error("could not create directory " + p.getOutput()); + p = null; + } + } + + return p; + } + + /** + * Obtain the reader to use to read the model. + * <p/> + * <b>Note:</b> If something wrong appears, the return a {@code null} value. + * + * @return the model reader to use to obtain the model to treate, or {@code null} if something was wrong. + */ + protected ModelReader<?> getModelReader() { + + ModelReader<?> modelReader; + + if (reader != null && !reader.trim().isEmpty()) { + // try to load a specific reader + try { + ClassLoader fixedClassLoader = getFixedClassLoader(); + modelReader = (ModelReader<?>) Class.forName(reader, true, fixedClassLoader).newInstance(); + //TODO : should check that the reader is compatible with given modelType + } catch (Exception eee) { + getLog().error("could not obtain reader " + reader + " for reason : " + eee.getMessage()); + return null; + } + } else { + modelReader = availableReaders.get(modelType); + if (modelReader == null) { + getLog().error("could not find a model reader for modelType : " + modelType + ", availables readers : " + availableReaders.values()); + return null; + } + } + return modelReader; + } + + /** + * Recuperation de la liste des fichiers de modele a traite. + * + * @param ioContext io context + * @return la liste des modeles a utiliser + */ + protected File[] getModelFiles(PluginIOContext ioContext) { + + List<File> modelFiles = new ArrayList<File>(); + String[] includePatterns = includes.split(","); + + for (File srcDirGen : ioContext.getInputs()) { + + if (verbose) { + getLog().info("Search for " + Arrays.toString(includePatterns) + " in " + srcDirGen.getAbsolutePath()); + } + List<File> currentFiles = PluginHelper.getIncludedFiles(srcDirGen, includePatterns, null); + modelFiles.addAll(currentFiles); + } + return modelFiles.toArray(new File[modelFiles.size()]); + } + + /** + * Obtain the list of templates to apply to model. + * <p/> + * <b>Note:</b> If something wrong appears, then return a {@code null} value. + * + * @param fixedClassLoader classloader to use to seek of templates + * @return list of templates to apply, or {@code null} if something was wrong + */ + protected List<Template<Model>> getTemplates(ClassLoader fixedClassLoader) { + + List<Template<Model>> templatesList = new ArrayList<Template<Model>>(); + String[] templatesNames = templates.split(","); + for (String templateName : templatesNames) { + // remove trailing spaces + templateName = templateName.trim(); + Template<Model> template; + + template = (Template<Model>) availableTemplates.get(templateName); + if (template == null) { + getLog().warn("template [" + templateName + "] is not registred via plexus, try to load it directly"); + try { + template = (Template<Model>) Class.forName(templateName, true, fixedClassLoader).newInstance(); + } catch (Exception e) { + getLog().error("Can't obtain template [" + templateName + "] for reason " + e.getMessage(), e); + return null; + } + // will use this template + templatesList.add(template); + } + } + return templatesList; + } + + /** + * @return the string representation of excludesTemplates (separated by comma) + */ + protected String getExcludeTemplatesAsString() { + String result = ""; + for (int i = 0; i < excludeTemplates.length; i++) { + result += excludeTemplates[i]; + if (i != excludeTemplates.length - 1) { + result += ","; + } + } + return result; + } + + /** + * Prepare le classLoader a utiliser dans le generateur. + * <p/> + * Si un {@link #extraClassPathDirectory} a été renseigné, il est rajouté. + * <p/> + * Si des références à des sibling modules, ils seront rajoutés aussi. + * + * @return le class loader modifie + * @throws MojoExecutionException if any pb + */ + + public ClassLoader getFixedClassLoader() throws MojoExecutionException { + + if (fixedClassLoader == null) { + + List<URL> urls = new ArrayList<URL>(); + Set<String> urlsAsString = new HashSet<String>(); + try { + ClassLoader loader; + File extraClassPathDirectory = getExtraClassPathDirectory(); + if (extraClassPathDirectory != null) { + if (verbose) { + getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory); + } + addDirectoryToUrlsList(extraClassPathDirectory, urls, urlsAsString); + } + if (project.getProjectReferences() != null) { + // this case is for multi-module when calling from a parent module + for (Object o : project.getProjectReferences().entrySet()) { + Map.Entry<?, ?> entry = (Map.Entry<?, ?>) o; + MavenProject relatedProject = (MavenProject) entry.getValue(); + if (verbose) { + getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'"); + } + //TODO il faudrait peut-etre aussi ajouter les dependances ? + addDirectoryToUrlsList(relatedProject.getArtifact().getFile(), urls, urlsAsString); + } + } + if (!project.getArtifacts().isEmpty()) { + // this is a special case when artifacts were resolved (for example in site phase) + if (verbose) { + getLog().info("Use resolved artifacts to build class-path"); + } + for (Object o : project.getArtifacts()) { + Artifact a = (Artifact) o; + if (!a.getScope().equals("provided")) { + addDirectoryToUrlsList(a.getFile(), urls, urlsAsString); + } + } + } + // we ask to add the directory in classloader + loader = getClass().getClassLoader(); + if (!urls.isEmpty()) { + loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), + loader); + } + fixedClassLoader = loader; + } catch (MalformedURLException e) { + throw new MojoExecutionException(e.getMessage()); + } finally { + urls.clear(); + urlsAsString.clear(); + } + } + return fixedClassLoader; + } + + /** + * permet d'ajout le répertoire de génération des fichiers java dans les répertoires + * de compilation du projet Maven. + */ + protected void fixCompileSourceRoots() { + + //FIXME-TC20091215 : should never have a null project, this is not normal + if (project == null) { + // no project defined, can not fix anything + // this case could appears if we wanted to do some tests of the plugin + return; + } + + File destDirGen = generateResources.getOutput(); + + //TODO-TC20091016 should use AbstractPlugin api + if (testPhase) { + if (!project.getTestCompileSourceRoots().contains(destDirGen.getPath())) { + getLog().info("Add test compile source root : " + destDirGen); + project.addTestCompileSourceRoot(destDirGen.getPath()); + Resource resources = new Resource(); + resources.setDirectory(destDirGen.getAbsolutePath()); + resources.setExcludes(Arrays.asList("**/*.java")); + getLog().info("Add test resource root :" + resources); + project.addTestResource(resources); + } + } else { + if (!project.getCompileSourceRoots().contains(destDirGen.getPath())) { + getLog().info("Add compile source root : " + destDirGen); + project.addCompileSourceRoot(destDirGen.getPath()); + Resource resources = new Resource(); + resources.setDirectory(destDirGen.getAbsolutePath()); + resources.setExcludes(Arrays.asList("**/*.java")); + getLog().info("Add resource root :" + resources); + project.addResource(resources); + } + } + } + + +} Property changes on: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateFromModelsMojo.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL
participants (1)
-
tchemit@users.nuiton.org