Author: tchemit Date: 2009-12-19 15:46:11 +0100 (Sat, 19 Dec 2009) New Revision: 769 Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/AbstractChainedFileWriter.java trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java trunk/maven-eugene-plugin/src/it/smart-generate/all/pom.xml trunk/maven-eugene-plugin/src/it/smart-generate/all/verify.groovy trunk/maven-eugene-plugin/src/it/smart-generate/generators/pom.xml trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToChainedFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java Log: commons properties for Chainedwriter are in configuration (modelType, classLoader) + fix states issues Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/AbstractChainedFileWriter.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/writer/AbstractChainedFileWriter.java 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/AbstractChainedFileWriter.java 2009-12-19 14:46:11 UTC (rev 769) @@ -99,6 +99,7 @@ public void clear() { entries.clear(); properties.clear(); + previousWriter = nextWriter = null; } @Override Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java 2009-12-19 14:46:11 UTC (rev 769) @@ -39,6 +39,11 @@ /** * @return the type of model used */ + String getModelType(); + + /** + * @return the type of model used + */ Class<? extends Model> getModelClass(); /** @@ -96,4 +101,10 @@ */ Map<String, Object> getProperties(); + /** + * + * @return the classloader to use to seek for resources + */ + ClassLoader getClassLoader(); + } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java 2009-12-19 14:46:11 UTC (rev 769) @@ -184,6 +184,9 @@ selectedWriters = null; } if (availableWriters != null) { + for (ChainedFileWriter writer : availableWriters) { + writer.clear(); + } availableWriters.clear(); availableWriters = null; } Modified: trunk/maven-eugene-plugin/src/it/smart-generate/all/pom.xml =================================================================== --- trunk/maven-eugene-plugin/src/it/smart-generate/all/pom.xml 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/maven-eugene-plugin/src/it/smart-generate/all/pom.xml 2009-12-19 14:46:11 UTC (rev 769) @@ -105,6 +105,19 @@ <goal>smart-generate</goal> </goals> </execution> + <execution> + <id>Model to java</id> + <phase>generate-test-sources</phase> + <configuration> + <inputs> + <input>model:target/generated-sources-zargo2Java/test-models:topiatest.objectmodel</input> + </inputs> + <outputDirectory>target/generated-sources-objectModel2Java</outputDirectory> + </configuration> + <goals> + <goal>smart-generate</goal> + </goals> + </execution> </executions> <dependencies> <dependency> Modified: trunk/maven-eugene-plugin/src/it/smart-generate/all/verify.groovy =================================================================== --- trunk/maven-eugene-plugin/src/it/smart-generate/all/verify.groovy 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/maven-eugene-plugin/src/it/smart-generate/all/verify.groovy 2009-12-19 14:46:11 UTC (rev 769) @@ -33,5 +33,15 @@ assert new File(basedir, 'target/generated-sources-xmi2Java/test-java/org/nuiton/topiatest/beangen2/Roue.java').exists(); assert new File(basedir, 'target/generated-sources-xmi2Java/test-java/org/nuiton/topiatest/beangen2/Siege.java').exists(); +// ObjectModel to java + +assert new File(basedir, 'target/generated-sources-objectModel2Java').exists(); + +assert new File(basedir, 'target/generated-sources-objectModel2Java/test-java').exists(); +assert new File(basedir, 'target/generated-sources-objectModel2Java/test-java/org/nuiton/topiatest/beangen').exists(); +assert new File(basedir, 'target/generated-sources-objectModel2Java/test-java/org/nuiton/topiatest/beangen/Voiture.java').exists(); +assert new File(basedir, 'target/generated-sources-objectModel2Java/test-java/org/nuiton/topiatest/beangen/Roue.java').exists(); +assert new File(basedir, 'target/generated-sources-objectModel2Java/test-java/org/nuiton/topiatest/beangen/Siege.java').exists(); + return true; Modified: trunk/maven-eugene-plugin/src/it/smart-generate/generators/pom.xml =================================================================== --- trunk/maven-eugene-plugin/src/it/smart-generate/generators/pom.xml 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/maven-eugene-plugin/src/it/smart-generate/generators/pom.xml 2009-12-19 14:46:11 UTC (rev 769) @@ -86,6 +86,7 @@ <configuration> <testPhase>true</testPhase> <defaultPackage>org.nuiton.eugene.test</defaultPackage> + <generatedPackages>org.nuiton</generatedPackages> </configuration> <executions> <execution> @@ -102,25 +103,6 @@ </goals> </execution> <execution> - <id>Test Java Generator</id> - <phase>generate-test-sources</phase> - <configuration> - <inputs> - <input>model</input> - </inputs> - <properties> - <propertie> - <key>reader</key> - <value>org.nuiton.eugene.test.generator.TestReader</value> - </propertie> - </properties> - <templates>org.nuiton.eugene.java.JavaGenerator</templates> - </configuration> - <goals> - <goal>smart-generate</goal> - </goals> - </execution> - <execution> <id>Test Bean Transformer</id> <phase>generate-test-sources</phase> <configuration> @@ -133,45 +115,26 @@ <goal>smart-generate</goal> </goals> </execution> - </executions> - <!--executions> - <execution> - <id>Test Regression Generator</id> + <!--execution> + <id>Test Java Generator</id> <phase>generate-test-sources</phase> <configuration> <inputs> - <input>model:src/main/models/dtotest.objectmodel</input> + <input>model</input> </inputs> - <includes>dtotest.objectmodel</includes> - <templates>org.nuiton.eugene.test.generator.BeanGenerator</templates> + <properties> + <propertie> + <key>reader</key> + <value>org.nuiton.eugene.test.generator.TestReader</value> + </propertie> + </properties> + <templates>org.nuiton.eugene.java.JavaGenerator</templates> </configuration> <goals> <goal>smart-generate</goal> </goals> - </execution> - <execution> - <id>Test Java Generator</id> - <phase>generate-test-sources</phase> - <configuration> - <reader>org.nuiton.eugene.test.generator.TestReader</reader> - <templates>org.nuiton.eugene.java.JavaGenerator</templates> - </configuration> - <goals> - <goal>generate-from-models</goal> - </goals> - </execution> - <execution> - <id>Test Bean Transformer</id> - <phase>generate-test-sources</phase> - <configuration> - <includes>dtotest2.objectmodel</includes> - <templates>org.nuiton.eugene.test.generator.BeanTransformer</templates> - </configuration> - <goals> - <goal>generate-from-models</goal> - </goals> - </execution> - </executions--> + </execution--> + </executions> <dependencies> <dependency> <groupId>log4j</groupId> Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java 2009-12-19 14:46:11 UTC (rev 769) @@ -330,9 +330,6 @@ // add xmi writer support - ClassLoader loader = getFixedClassLoader(); - - properties.put(BaseXmiToChainedFileWriter.PROP_CLASS_LOADER, loader); properties.put(BaseXmiToChainedFileWriter.PROP_FULL_PACKAGE_PATH, fullPackagePath); //properties.put("extractedPackages", extractedPackages); properties.put(BaseXmiToChainedFileWriter.PROP_RESOLVER, resolver); @@ -342,10 +339,6 @@ // add model writer support - ClassLoader loader = getFixedClassLoader(); - - properties.put(ModelChainedFileWriter.PROP_CLASS_LOADER, loader); - properties.put(ModelChainedFileWriter.PROP_MODEL_TYPE, modelType); properties.put(ModelChainedFileWriter.PROP_DEFAULT_PACKAGE, defaultPackage); properties.put(ModelChainedFileWriter.PROP_GENERATED_PACKAGES, generatedPackages); properties.put(ModelChainedFileWriter.PROP_TEMPLATES, templates); @@ -434,6 +427,15 @@ } @Override + public ClassLoader getClassLoader() { + try { + return getFixedClassLoader(); + } catch (MojoExecutionException e) { + throw new IllegalStateException("could not obtain classLoader",e); + } + } + + @Override public MavenProject getProject() { return project; } @@ -474,6 +476,11 @@ } @Override + public String getModelType() { + return modelType; + } + + @Override public Class<? extends Model> getModelClass() { return modelClass; } Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToChainedFileWriter.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToChainedFileWriter.java 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToChainedFileWriter.java 2009-12-19 14:46:11 UTC (rev 769) @@ -52,10 +52,10 @@ public static final String PROP_RESOLVER = "resolver"; // public static final String PROP_EXTRACTED_PACKAGES = "extractedPackages"; public static final String PROP_FULL_PACKAGE_PATH = "fullPackagePath"; - public static final String PROP_CLASS_LOADER = "classLoader"; public BaseXmiToChainedFileWriter() { - super(PROP_CLASS_LOADER, "classLoader", PROP_RESOLVER, "resolver", PROP_FULL_PACKAGE_PATH, "fullPackagePath"); + super( + PROP_RESOLVER, "resolver", PROP_FULL_PACKAGE_PATH, "fullPackagePath"); } /** @@ -136,11 +136,6 @@ } - public ClassLoader getClassLoader() { - return getProperty(PROP_CLASS_LOADER, ClassLoader.class); - } - - @Override public void generate(ChainedFileWriterConfiguration configuration, File outputDir, File inputDirectory, String includePattern) throws IOException { long t0 = System.nanoTime(); @@ -232,7 +227,7 @@ URIResolver result = null; try { - ClassLoader loader = getClassLoader(); + ClassLoader loader = configuration.getClassLoader(); Class<?> clazz = Class.forName(getResolver(), true, loader); // Try to set the base using the constructor Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2009-12-18 13:33:25 UTC (rev 768) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2009-12-19 14:46:11 UTC (rev 769) @@ -50,9 +50,7 @@ public static final String PROP_TEMPLATES_LIST = "templatesList"; public static final String PROP_DEFAULT_PACKAGE = "defaultPackage"; public static final String PROP_MODEL_READER = "modelReader"; - public static final String PROP_MODEL_TYPE = "modelType"; public static final String PROP_READER = "reader"; - public static final String PROP_CLASS_LOADER = "classLoader"; public ModelChainedFileWriter() { super( @@ -60,11 +58,10 @@ PROP_TEMPLATES_LIST, "templatesList", PROP_EXCLUDE_TEMPLATES, "excludetemplates", PROP_READER, "reader", - PROP_MODEL_TYPE, "modelType", PROP_MODEL_READER, "modelReader", PROP_GENERATED_PACKAGES, "generatedPackages", - PROP_DEFAULT_PACKAGE, "defaultPackage", - PROP_CLASS_LOADER, "classLoader"); + PROP_DEFAULT_PACKAGE, "defaultPackage" + ); } @Override @@ -142,20 +139,12 @@ return getProperty(PROP_READER, String.class); } - protected String getModelType() { - return getProperty(PROP_MODEL_TYPE, String.class); - } - - public ClassLoader getClassLoader() { - return getProperty(PROP_CLASS_LOADER, ClassLoader.class); - } - @Override protected void initWriter(ChainedFileWriterConfiguration configuration) { super.initWriter(configuration); // obtain a reader - ClassLoader loader = getClassLoader(); + ClassLoader loader = configuration.getClassLoader(); if (getModelReader() == null) { if (getReader() != null) { @@ -170,7 +159,7 @@ throw new IllegalStateException("could not obtain reader " + reader, eee); } } else { - String modelType = getModelType(); + String modelType = configuration.getModelType(); ModelReader<?> modelReader = configuration.getModelReaders().get(modelType); if (modelReader == null) { throw new IllegalStateException("could not find a model reader for modelType : " + modelType + ", availables readers : " + configuration.getModelReaders().values()); @@ -202,6 +191,7 @@ Template<Model> template; template = (Template<Model>) configuration.getModelTemplates().get(templateName); + if (template == null) { getLog().warn("template [" + templateName + "] is not registred via plexus, try to load it directly"); try { @@ -209,13 +199,15 @@ } catch (Exception e) { throw new IllegalStateException("Can't obtain template [" + templateName + "] for reason " + e.getMessage(), e); } + } else { + getLog().info("will use the template [" + templateName + "]"); + } - // will use this template - templatesList.add(template); + // will use this template + templatesList.add(template); - // set the properties of the template - template.setProperties(templateProperties); - } + // set the properties of the template + template.setProperties(templateProperties); } properties.put(PROP_TEMPLATES_LIST, templatesList);