r905 - in trunk: ant-eugene-task/src/test/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/java eugene/src/main/java/org/nuiton/eugene/models/object eugene/src/main/java/org/nuiton/eugene/models/state eugene/src/main/java/org/nuiton/eugene/writer eugene/src/test/java/org/nuiton/eugene/models/object maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator maven-eugene-plugin/src/main/java/org/nuito
Author: tchemit Date: 2010-05-14 15:44:45 +0200 (Fri, 14 May 2010) New Revision: 905 Url: http://nuiton.org/repositories/revision/eugene/905 Log: - add TemplateConfiguration - remove deprecated methods - add classLoader in template (via TemplateConfiguration) to seek Impl - clean code Added: trunk/eugene/src/main/java/org/nuiton/eugene/DefaultTemplateConfiguration.java trunk/eugene/src/main/java/org/nuiton/eugene/TemplateConfiguration.java Removed: trunk/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java Modified: trunk/ant-eugene-task/src/test/java/org/nuiton/eugene/BasicObjectModelGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java trunk/eugene/src/main/java/org/nuiton/eugene/Template.java trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI12ToObjectModelTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java trunk/maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 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/ModelChainedFileWriter.java Modified: trunk/ant-eugene-task/src/test/java/org/nuiton/eugene/BasicObjectModelGenerator.java =================================================================== --- trunk/ant-eugene-task/src/test/java/org/nuiton/eugene/BasicObjectModelGenerator.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/ant-eugene-task/src/test/java/org/nuiton/eugene/BasicObjectModelGenerator.java 2010-05-14 13:44:45 UTC (rev 905) @@ -49,10 +49,10 @@ } @Override - public void generateFromClass(Writer output, ObjectModelClass clazz) + public void generateFromClass(Writer output, ObjectModelClass input) throws IOException { - output.write("package " + clazz.getPackageName() + ";\n\n"); - output.write("public class " + clazz.getName() + " {\n\n}\n"); + output.write("package " + input.getPackageName() + ";\n\n"); + output.write("public class " + input.getName() + " {\n\n}\n"); } } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java 2010-05-14 13:44:45 UTC (rev 905) @@ -58,15 +58,14 @@ public void setParent(AbstractGenerator<M> parent) { this.parent = parent; - //setEncoding(parent.getEncoding()); } @Override - public boolean getOverwrite() { + public boolean isOverwrite() { if (parent != null) { - return parent.getOverwrite(); + return parent.isOverwrite(); } - return super.getOverwrite(); + return super.isOverwrite(); } @Override Modified: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java 2010-05-14 13:44:45 UTC (rev 905) @@ -62,13 +62,6 @@ protected abstract boolean validateModel(M model); @Override - public final void generate(File[] file, File destDir) { - throw new UnsupportedOperationException( - "Transformer does not implements any longer this deprecated " + - "method"); - } - - @Override public void applyTemplate(M model, File destDir) throws IOException { boolean isValid = validateModel(model); Added: trunk/eugene/src/main/java/org/nuiton/eugene/DefaultTemplateConfiguration.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/DefaultTemplateConfiguration.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/DefaultTemplateConfiguration.java 2010-05-14 13:44:45 UTC (rev 905) @@ -0,0 +1,62 @@ +/* + * #%L + * EUGene :: EUGene + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2004 - 2010 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package org.nuiton.eugene; + +/** + * Default template configuration + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0.2 + */ +public class DefaultTemplateConfiguration implements TemplateConfiguration { + + protected boolean overwrite = true; + + protected boolean verbose; + + protected String encoding = "UTF-8"; + + protected ClassLoader loader = getClass().getClassLoader(); + + @Override + public boolean isOverwrite() { + return overwrite; + } + + @Override + public boolean isVerbose() { + return verbose; + } + + @Override + public String getEncoding() { + return encoding; + } + + @Override + public ClassLoader getClassLoader() { + return loader; + } +} Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/DefaultTemplateConfiguration.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java 2010-05-14 13:44:45 UTC (rev 905) @@ -1,184 +0,0 @@ -/* - * #%L - * EUGene :: EUGene - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2004 - 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -package org.nuiton.eugene; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Class used in generators that allows to manage easily imports. A first-pass - * allow to register imports, and in a second-pass, returns the type to use in - * generated code. - * - * @author thimel, chemit - * @deprecated This class was moved to {@link org.nuiton.eugene.java} package - */ -@Deprecated -public class ImportsManager { - - private static Set<String> primitiveTypes; - - static { - primitiveTypes = new HashSet<String>(); - - primitiveTypes.add("byte"); - primitiveTypes.add("Byte"); - primitiveTypes.add("short"); - primitiveTypes.add("Short"); - primitiveTypes.add("int"); - primitiveTypes.add("Integer"); - primitiveTypes.add("long"); - primitiveTypes.add("Long"); - primitiveTypes.add("float"); - primitiveTypes.add("Float"); - primitiveTypes.add("double"); - primitiveTypes.add("Double"); - - primitiveTypes.add("char"); - primitiveTypes.add("Char"); - primitiveTypes.add("String"); - - primitiveTypes.add("boolean"); - primitiveTypes.add("Boolean"); - - primitiveTypes.add("void"); - - } - private Map<String, String> imports = new HashMap<String, String>(); - private State state = State.FILLING; - - /** - * From the given class, add it to the imports list. - * @param clazz the class to import - * @return true if import add was successful - * @see ImportsManager#addImport(String) - */ - public boolean addImport(Class<?> clazz) { - return addImport(clazz.getName()); - } - - /** - * From the given fqn (fully qualified name), add it to the imports list. - * If there is a conflict adding this import, will return false. - * If reading of the imports has started, this method will return false, - * unless type does not need to be imported. - * @param fqn the fully qualified name to import - * @return true if import add was successful - */ - public boolean addImport(String fqn) { - // if no package don't include it - if (fqn.indexOf(".") == -1) { - return true; - } - - // Exclude java.lang classes - if (fqn == null || fqn.trim().isEmpty() || - (fqn.startsWith("java.lang.") && fqn.lastIndexOf(".") == 9)) { - return true; - } - // Exclude primitive types - if (primitiveTypes.contains(fqn)) { - return true; - } - // Reject generics - if (fqn.indexOf("<") != -1 || fqn.indexOf(">") != -1) { - return false; - } - String name = fqn.substring(fqn.lastIndexOf(".") + 1); - String inPlaceFqn = imports.get(name); - if (inPlaceFqn == null) { - // Someone has started to read imports, impossible to add some more - if (state == State.READING) { - return false; - } else { - imports.put(name, fqn); - return true; - } - } - // if fqn is not the same, return false. Otherwise, no need to override. - return inPlaceFqn.equals(fqn); - } - - /** - * Accorging to the already added types, returns the type to write in file. - * If there is a conflict, returns the fully qualified name, otherwise - * returns the simple name - * @param fqn the fully qualified name to add - * @return the fqn or simple name according to in-place imports - */ - public String getType(String fqn) { - boolean importResult = addImport(fqn); - if (!importResult) { - // There is a conflict, do not use simple name - return fqn; - } else { - // No conflict, use simple name - int packageEndIndex = fqn.lastIndexOf("."); - if (packageEndIndex == -1) { - return fqn; - } else { - return fqn.substring(packageEndIndex + 1); - } - } - } - - /** - * List the imports. This method will remove the useless imports according - * to the given packageName (no need to import a class in the same package) - * @param packageName the current package name (to avoid useless imports) - * @return the imports alphabeticaly sorted - */ - public List<String> getImports(String packageName) { - state = State.READING; - List<String> result = new ArrayList<String>(); - for (String fqn : imports.values()) { - if (!(fqn.lastIndexOf(".") == packageName.length() && fqn.startsWith(packageName + "."))) { - result.add(fqn); - } - } - Collections.sort(result); - return result; - } - - /** - * Method to reset imports list. If imports has been listed, it becomes back - * possible to add imports. - */ - public void clearImports() { - imports.clear(); - state = State.FILLING; - } - - private enum State { - - FILLING, READING - } -} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/Template.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/Template.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/Template.java 2010-05-14 13:44:45 UTC (rev 905) @@ -26,8 +26,6 @@ package org.nuiton.eugene; import org.apache.commons.lang.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.Model; import java.io.File; @@ -46,15 +44,18 @@ * * @author Cedric Pineau <pineau@codelutin.com> */ -public abstract class Template<M extends Model> { +public abstract class Template<M extends Model> implements TemplateConfiguration { - public static final String PROP_DEFAULT_PACKAGE = "defaultPackage"; public static final String PROP_OVERWRITE = "overwrite"; public static final String PROP_ENCODING = "encoding"; + + public static final String PROP_DEFAULT_PACKAGE = "defaultPackage"; public static final String PROP_LAST_MODIFIED_SOURCE = "lastModifiedSource"; public static final String PROP_GENERATED_PACKAGES = "generatedPackages"; public static final String PROP_EXCLUDE_TEMPLATES = "excludeTemplates"; + protected TemplateConfiguration configuration; + protected Properties properties = new Properties(); protected List<String> excludeTemplates; @@ -69,40 +70,59 @@ /** Model */ protected M model; - /** - * Old method from EUGene 1.0.1 used to generate files. Now, you have to - * use a Reader instead of directly use a Template. - * - * @param file list of tiles - * @param destDir destination folder - * @deprecated since 2.0.0 - */ - @Deprecated - public abstract void generate(File[] file, File destDir); +// /** +// * Old method from EUGene 1.0.1 used to generate files. Now, you have to +// * use a Reader instead of directly use a Template. +// * +// * @param file list of tiles +// * @param destDir destination folder +// * @deprecated since 2.0.0 +// */ +// @Deprecated +// public abstract void generate(File[] file, File destDir); public abstract void applyTemplate(M model, File destDir) throws IOException; - + public TemplateConfiguration getConfiguration() { + if (configuration == null) { + configuration = new DefaultTemplateConfiguration(); + } + return configuration; + } + + public void setConfiguration(TemplateConfiguration configuration) { + this.configuration = configuration; + } + /** - * @param v override value - * @deprecated since 2.0.0, use a Properties object to add the - * {@link Template#PROP_OVERWRITE} value - * @see Template#setProperties(Properties) + * + * @return {@code true} if must overwrite ouput + * @deprecated since 2.0.2, prefer use the {@link #isOverwrite()} method */ @Deprecated - public void setOverwrite(boolean v) { - //overwrite = v; - properties.setProperty(PROP_OVERWRITE, String.valueOf(v)); + public boolean getOverwrite() { + return isOverwrite(); } - public boolean getOverwrite() { - return Boolean.parseBoolean(properties.getProperty(PROP_OVERWRITE, "true")); + @Override + public boolean isOverwrite() { + return getConfiguration().isOverwrite(); } + @Override + public boolean isVerbose() { + return getConfiguration().isVerbose(); + } + @Override public String getEncoding() { - return properties.getProperty(PROP_ENCODING, ""); + return getConfiguration().getEncoding(); } + @Override + public ClassLoader getClassLoader() { + return getConfiguration().getClassLoader(); + } + /** * @param encoding encoding value * @deprecated since 2.0.0, use a Properties object to add the @@ -149,9 +169,6 @@ if (!StringUtils.isEmpty(genPackages)) { //TC-20091125 avoid manual array copy generatedPackages.addAll(Arrays.asList(genPackages.split(","))); -// for (String s : genPackages.split(",")) { -// generatedPackages.add(s); -// } } } return generatedPackages; @@ -181,9 +198,6 @@ if (!StringUtils.isEmpty(excludes)) { //TC-20091125 avoid manual array copy excludeTemplates.addAll(Arrays.asList(excludes.split(","))); -// for (String s : excludes.split(",")) { -// excludeTemplates.add(s); -// } } } return excludeTemplates; Added: trunk/eugene/src/main/java/org/nuiton/eugene/TemplateConfiguration.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/TemplateConfiguration.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/TemplateConfiguration.java 2010-05-14 13:44:45 UTC (rev 905) @@ -0,0 +1,50 @@ +/* + * #%L + * EUGene :: EUGene + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2004 - 2010 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package org.nuiton.eugene; + +/** + * Contract of a {@link Template} configuration + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0.2 + */ +public interface TemplateConfiguration { + + /** + * @return {@code true} if must regenerate files even if they are up to + * date + */ + boolean isOverwrite(); + + /** @return {@code true} if build is verbose. */ + boolean isVerbose(); + + /** @return encoding to use to read and write files */ + String getEncoding(); + + /** @return the classloader to use to seek for resources */ + ClassLoader getClassLoader(); + +} Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/TemplateConfiguration.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2010-05-14 13:44:45 UTC (rev 905) @@ -138,23 +138,6 @@ } /** - * Old method from previous EUGene 1.0.1 version. Used before creation - * of ModelReader. - * - * @param file - * @param destDir - * @deprecated no need to manage list of files in input, prefer use input model. - */ - @Override - @Deprecated - public void generate(File[] file, File destDir) { - outputTemplate = initOutputTemplate(); - outputTemplate.setProperties(getOutputProperties()); - getOutputTemplate().generate(file, destDir); - } - - - /** * This method apply the current transformation. You can use an other * transformer for previous transformation by overriding * {@link #initPreviousTransformer} method. In this case, the current Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2010-05-14 13:44:45 UTC (rev 905) @@ -35,6 +35,7 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -434,16 +435,25 @@ ObjectModelClass output) { // Get name for Impl class - String implQualifiedName = input.getQualifiedName() + "Impl"; + String fqn = input.getQualifiedName() + "Impl"; + URL location = getFileInClassPath(fqn); + if (location != null) { + + if (isVerbose()) { + log.info("Will not generate ["+fqn+"] which exists : "+location); + } + // file already found in class-path, do not generate it + return null; + } + // Does bean own operations ? boolean hasOperations = !input.getAllOtherOperations(true).isEmpty() || !input.getOperations().isEmpty(); - String resourceName = "/" + implQualifiedName.replaceAll("\\.", "/"); ObjectModelClass resultClassImpl = null; // Generate the Impl class if not already exist in classpath and no operation is defined in model - if (getClass().getResource(resourceName) == null && !hasOperations) { + if (!hasOperations) { String implName = input.getName() + "Impl"; resultClassImpl = createClass(implName, input.getPackageName()); // set the abstract resulClass as the resultClassImpl super class Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2010-05-14 13:44:45 UTC (rev 905) @@ -95,26 +95,26 @@ * Generate from all classes. * * @param output Writer for generating the java file - * @param clazz Class to manage for creating an output file + * @param input Class to manage for creating an output file * @throws IOException if any pb while writing file */ @Override - public void generateFromClass(Writer output, ObjectModelClass clazz) + public void generateFromClass(Writer output, ObjectModelClass input) throws IOException { if (log.isDebugEnabled()) { - log.debug("Will generate class "+clazz.getQualifiedName()); + log.debug("Will generate class "+ input.getQualifiedName()); } - preparePrefix(clazz); + preparePrefix(input); // Imports, package et documentation - generateHeader(output, clazz); + generateHeader(output, input); - String abstractStr = clazz.isAbstract() ? " abstract " : " "; - String className = clazz.getName(); + String abstractStr = input.isAbstract() ? " abstract " : " "; + String className = input.getName(); String extend = ""; - Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); + Iterator<ObjectModelClass> j = input.getSuperclasses().iterator(); if (j.hasNext()) { ObjectModelClassifier p = j.next(); extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); @@ -122,7 +122,7 @@ String implement = ""; for (Iterator<ObjectModelInterface> i = - clazz.getInterfaces().iterator(); i.hasNext();) { + input.getInterfaces().iterator(); i.hasNext();) { ObjectModelClassifier parentInterface = i.next(); String interfaceName = GeneratorUtil.getSimpleName( parentInterface.getQualifiedName()); @@ -135,7 +135,7 @@ log.debug(className+" : super : "+extend+", interfaces : " + implement); } - generateAnnotations(output, clazz, clazz); + generateAnnotations(output, input, input); /*{ <%=prefix%>public<%=abstractStr%>class <%=className%>}*/ @@ -157,9 +157,9 @@ }*/ } - generateInnerClassifiers(output, clazz.getInnerClassifiers()); - generateAttributes(output, clazz,clazz.getAttributes()); - generateOperations(output, clazz,clazz.getOperations()); + generateInnerClassifiers(output, input.getInnerClassifiers()); + generateAttributes(output, input, input.getAttributes()); + generateOperations(output, input, input.getOperations()); /*{ <%=prefix%>} //<%=className%> @@ -168,20 +168,20 @@ @Override public void generateFromInterface(Writer output, - ObjectModelInterface interfacez) + ObjectModelInterface input) throws IOException { if (log.isDebugEnabled()) { - log.debug(interfacez.getQualifiedName()); + log.debug(input.getQualifiedName()); } - preparePrefix(interfacez); + preparePrefix(input); // Imports, package et documentation - generateHeader(output, interfacez); + generateHeader(output, input); - String interfaceName = interfacez.getName(); + String interfaceName = input.getName(); String extend = ""; - Iterator<ObjectModelInterface> j = interfacez.getInterfaces().iterator(); + Iterator<ObjectModelInterface> j = input.getInterfaces().iterator(); while (j.hasNext()) { ObjectModelClassifier p = j.next(); extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); @@ -189,7 +189,7 @@ extend += ", "; } } - generateAnnotations(output, interfacez, interfacez); + generateAnnotations(output, input, input); /*{ <%=prefix%>public interface <%=interfaceName%>}*/ @@ -203,8 +203,8 @@ }*/ } - generateAttributes(output, interfacez, interfacez.getAttributes()); - generateOperations(output, interfacez, interfacez.getOperations()); + generateAttributes(output, input, input.getAttributes()); + generateOperations(output, input, input.getOperations()); /*{ <%=prefix%>} //<%=interfaceName%> }*/ @@ -236,23 +236,23 @@ } @Override - public void generateFromEnum(Writer output, ObjectModelEnumeration enumz) + public void generateFromEnum(Writer output, ObjectModelEnumeration input) throws IOException { if (log.isDebugEnabled()) { - log.debug(enumz.getQualifiedName()); + log.debug(input.getQualifiedName()); } - preparePrefix(enumz); - generateHeader(output, enumz); // Imports, package et documentation + preparePrefix(input); + generateHeader(output, input); // Imports, package et documentation - String enumzName = enumz.getName(); + String enumzName = input.getName(); String extend = ""; - Iterator<ObjectModelInterface> j = enumz.getInterfaces().iterator(); + Iterator<ObjectModelInterface> j = input.getInterfaces().iterator(); if (j.hasNext()) { ObjectModelClassifier p = j.next(); extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); } - generateAnnotations(output, enumz, enumz); + generateAnnotations(output, input, input); /*{ <%=prefix%>public enum <%=enumzName%>}*/ @@ -267,18 +267,18 @@ }*/ } // generation of literal - if (enumz.getLiterals().isEmpty()) { + if (input.getLiterals().isEmpty()) { /*{ ; }*/ } else { - Iterator<String> i = enumz.getLiterals().iterator(); + Iterator<String> i = input.getLiterals().iterator(); while (i.hasNext()) { String literal = i.next(); /*{<%=prefix%> <%=literal%><%=(i.hasNext() ? "," : ";")%> }*/ } } - generateAttributes(output, enumz, enumz.getAttributes()); - generateOperations(output, enumz, enumz.getOperations()); + generateAttributes(output, input, input.getAttributes()); + generateOperations(output, input, input.getOperations()); /*{ <%=prefix%>} //<%=enumzName%> }*/ Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-05-14 13:44:45 UTC (rev 905) @@ -43,6 +43,7 @@ import org.nuiton.eugene.models.object.ObjectModelTransformer; import org.nuiton.eugene.models.object.ObjectModelType; +import java.net.URL; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -382,4 +383,14 @@ public void setConstantPrefix(String constantPrefix) { this.constantPrefix = constantPrefix; } + + protected URL getFileInClassPath(String fqn) { + String resourceName = fqn.replaceAll("\\.", "/") + ".java"; + URL fileLocation = getClassLoader().getResource(resourceName); + if (log.isDebugEnabled()) { + log.debug("Look for resource : " + resourceName + " = " + fileLocation); + } + return fileLocation; + } + } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelGenerator.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelGenerator.java 2010-05-14 13:44:45 UTC (rev 905) @@ -25,51 +25,51 @@ package org.nuiton.eugene.models.object; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.AbstractGenerator; +import org.nuiton.eugene.MonitorWriter; + import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.Collection; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.AbstractGenerator; -import org.nuiton.eugene.MonitorWriter; - /** * Pour utiliser ce type de générateur il faut implanter au moins une des trois * méthodes generateFrom... et le getFilenameFor... associé si l'on souhaite un * nom de fichier convenable. Si dans une méthode generateFrom... on utilise pas * le Writer alors aucun fichier n'est généré. - * + * <p/> * <pre> * public String getFilenameForClass(ObjectModelClass clazz){ * return super.getFilenameForClass(Clazz) + "Service.java"; * } - * + * <p/> * public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException{ * if(clazz.getType().equals("service")){ * / *{ * public class .... { - * + * <p/> * } * }* / * } * } * </pre> - * + * <p/> * Le nom de l'argument writer doit absolument etre output et pas autre chose si * vous souhaitez utiliser le processeur * org.codelutin.processor.filters.GeneratorTemplatesFilter pour vous * s'implifier l'écriture des templates. - * + * <p/> * Created: 14 mars 2004 - * + * * @author Benjamin Poussin <poussin@codelutin.com> Copyright Code Lutin - * * @version $Revision$ - * - * Mise a jour: $Date$ par : */ + * <p/> + * Mise a jour: $Date$ par : + */ public class ObjectModelGenerator extends AbstractGenerator<ObjectModel> { /** Logger for this class. */ @@ -82,21 +82,6 @@ super(parent); } - @Override - @Deprecated - public void generate(File[] files, File destDir) { - ObjectModelReader reader = new ObjectModelReader(); - ObjectModel objectModel = reader.read(files); - setLastModifiedSource(reader.getLastModifiedSource()); - try { - applyTemplate(objectModel, destDir); - } catch (IOException eee) { - if (log.isWarnEnabled()) { - log.warn("Unable to generate for file", eee); - } - } - } - /** * Par defaut la methode appelle la methode * {@link #generateFromModel(Writer, ObjectModel)} puis boucle sur chaque @@ -110,7 +95,8 @@ * getFilenameFor.... La methode generateFrom... n'utilise pas le Writer * alors le fichier n'est pas généré, si on l'utilise m?me pour ne rien * écrire alors le fichier sera généré. - * @param model le modele memoire a utiliser + * + * @param model le modele memoire a utiliser * @param destDir le repertoire ou generer * @throws IOException pour tout pb */ @@ -146,33 +132,32 @@ * Deux méthodes dépendent du type et peuvent être surchargées : * getFilenameForXXX et generateFromXXX (XXX étant un type prédéfini pour une méthode existante). * - * @see ObjectModelType - * * @param elements Collection d'éléments d'un des types ci-dessus - * @param destDir dossier de destination pour le fichier généré - * @param type type explicite d'ObjectModel + * @param destDir dossier de destination pour le fichier généré + * @param type type explicite d'ObjectModel + * @see ObjectModelType */ private void generateFromElements(Collection<? extends ObjectModelElement> elements, File destDir, ObjectModelType type) { - + for (ObjectModelElement element : elements) { String filename = ""; // Filename depends on type of element (Classifier, Class, Interface or Enumeration) switch (type) { case OBJECT_MODEL_CLASSIFIER: - filename = getFilenameForClassifier((ObjectModelClassifier)element); + filename = getFilenameForClassifier((ObjectModelClassifier) element); break; case OBJECT_MODEL_INTERFACE: - filename = getFilenameForInterface((ObjectModelInterface)element); + filename = getFilenameForInterface((ObjectModelInterface) element); break; case OBJECT_MODEL_CLASS: - filename = getFilenameForClass((ObjectModelClass)element); + filename = getFilenameForClass((ObjectModelClass) element); break; case OBJECT_MODEL_ENUMERATION: - filename = getFilenameForEnumeration((ObjectModelEnumeration)element); + filename = getFilenameForEnumeration((ObjectModelEnumeration) element); } - + generateFromElement(element, destDir, filename, type); } } @@ -183,12 +168,11 @@ * ObjectModelInterface et ObjectModelEnumeration. * La méthode generateFromXXX dépend du type d'élément et peut être surchargée. * - * @see ObjectModelType - * - * @param element element à généré - * @param destDir dossier de destination + * @param element element à généré + * @param destDir dossier de destination * @param filename nom du fichier de sortie - * @param type type d'ObjectModel + * @param type type d'ObjectModel + * @see ObjectModelType */ protected void generateFromElement(Object element, File destDir, @@ -200,9 +184,9 @@ // effectue un appel pour savoir si on a le droit de generer l'element // courant if (canGenerateElement(element)) { - + File outputFile = getDestinationFile(destDir, filename); - if (!getOverwrite() && isNewerThanSource(outputFile)) { + if (!isOverwrite() && isNewerThanSource(outputFile)) { if (log.isTraceEnabled()) { log.trace("file " + outputFile + " is up-to-date"); } @@ -210,7 +194,7 @@ } if (!outputFile.exists() && log.isTraceEnabled()) { log.trace("not up-to-date " + outputFile.lastModified() - + " <" + outputFile + ">"); + + " <" + outputFile + ">"); } try { StringWriter out = new StringWriter(); @@ -243,36 +227,36 @@ } catch (Exception eee) { log.warn("Erreur lors de la génération du fichier " - + outputFile); + + outputFile); throw new RuntimeException( "Erreur lors de la génération du fichier " - + outputFile, eee); + + outputFile, eee); } } } /** * Test if given element can be generated. - * + * <p/> * An element can be generated if his package is in the * {@link #generatedPackages} list or if {@link #generatedPackages} is * null or empty. - * + * * @param element element to test * @return generation allowed */ protected boolean canGenerateElement(Object element) { - + boolean canGenerate = true; - + // can get package only for Classifiers if (element instanceof ObjectModelClassifier) { - ObjectModelClassifier classifier = (ObjectModelClassifier)element; + ObjectModelClassifier classifier = (ObjectModelClassifier) element; String classifierPackage = classifier.getPackageName(); - - canGenerate = super.canGeneratePackage(classifierPackage); + + canGenerate = canGeneratePackage(classifierPackage); } - + return canGenerate; } @@ -280,6 +264,7 @@ * Par defaut cette methode retourne le getName du model. Si l'on souhaite * utiliser la methode generateFromModel il vaut mieux surcharger cette * methode + * * @param model le modele utilise * @return le nom du fichier a generer */ @@ -291,7 +276,8 @@ /** * Par defaut cette methode retourne le QualifiedName convertie en chemin * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto - * @param model le modele utilise + * + * @param model le modele utilise * @param packageName le nom du paquetage * @return le repertoire correspondant au paquetage */ @@ -303,28 +289,29 @@ /** * Par defaut cette methode retourne le QualifiedName convertie en chemin * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto + * * @param interfacez l'interface utilisee * @return le nom du l'interface a generer */ public String getFilenameForInterface(ObjectModelInterface interfacez) { return getFilenameForClassifier(interfacez); -// return interfacez.getQualifiedName().replace('.', File.separatorChar); } /** * Par defaut cette methode retourne le QualifiedName convertie en chemin * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto + * * @param clazz la classe utilisee * @return le nom de la classe a generer */ public String getFilenameForClass(ObjectModelClass clazz) { return getFilenameForClassifier(clazz); -// return clazz.getQualifiedName().replace('.', File.separatorChar); } /** * Par defaut cette methode retourne le QualifiedName convertie en chemin * par exemple pour org.codelutin.Toto on aurait org/codelutin/Toto + * * @param classifier le classifier utilisee * @return le nom du classifier a generer */ @@ -334,30 +321,29 @@ public String getFilenameForEnumeration(ObjectModelEnumeration enumeration) { return getFilenameForClassifier(enumeration); -// return enumeration.getQualifiedName().replace('.', File.separatorChar); } public void generateFromModel(Writer output, - ObjectModel model) throws IOException { + ObjectModel input) throws IOException { } public void generateFromInterface(Writer output, - ObjectModelInterface interfacez) throws IOException { + ObjectModelInterface input) throws IOException { } public void generateFromEnum(Writer output, - ObjectModelEnumeration interfacez) throws IOException { + ObjectModelEnumeration input) throws IOException { } public void generateFromClass(Writer output, - ObjectModelClass clazz) throws IOException { + ObjectModelClass input) throws IOException { } public void generateFromClassifier(Writer output, - ObjectModelClassifier clazz) throws IOException { + ObjectModelClassifier input) throws IOException { } public void generateFromEnumeration(Writer output, - ObjectModelEnumeration enumeration) throws IOException { + ObjectModelEnumeration input) throws IOException { } } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelGenerator.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelGenerator.java 2010-05-14 13:44:45 UTC (rev 905) @@ -74,26 +74,26 @@ super(parent); } - /* - * @see org.nuiton.eugene.Generator#generate(java.io.File[], java.io.File) - */ - @Override - @Deprecated - public void generate(File[] files, File destDir) { +// /* +// * @see org.nuiton.eugene.Generator#generate(java.io.File[], java.io.File) +// */ +// @Override +// @Deprecated +// public void generate(File[] files, File destDir) { +// +// StateModelReader reader = new StateModelReader(); +// StateModel stateModel = reader.read(files); +// setLastModifiedSource(reader.getLastModifiedSource()); +// +// // generate code +// try { +// applyTemplate(stateModel, destDir); +// } catch (IOException e) { +// log.warn("Can't generate code for files", e); +// } +// } - StateModelReader reader = new StateModelReader(); - StateModel stateModel = reader.read(files); - setLastModifiedSource(reader.getLastModifiedSource()); - // generate code - try { - applyTemplate(stateModel, destDir); - } catch (IOException e) { - log.warn("Can't generate code for files", e); - } - } - - /** * Par défaut, appel {@link #generateFromModel(MonitorWriter , StateModel)} pour le * model et {@link #generateFromState(Writer,StateModelState)} pour tous les @@ -110,10 +110,9 @@ String filename = getFilenameFromModel(stateModel); File outputFile = getDestinationFile(destDir, filename); - if (getOverwrite() || !isNewerThanSource(outputFile)) { + if (isOverwrite() || !isNewerThanSource(outputFile)) { + MonitorWriter monitorOut = new MonitorWriter(new StringWriter()); try { - StringWriter out = new StringWriter(); - MonitorWriter monitorOut = new MonitorWriter(out); generateFromModel(monitorOut, stateModel); write(outputFile, monitorOut); } catch (Exception eee) { @@ -122,6 +121,8 @@ throw new RuntimeException( "Erreur lors de la génération du fichier " + outputFile, eee); + } finally { + monitorOut.close(); } } @@ -137,10 +138,9 @@ String filenameState = getFilenameFromState(state, chart .getName()); File outputFiletate = getDestinationFile(destDir, filenameState); - if (getOverwrite() || !isNewerThanSource(outputFiletate)) { + if (isOverwrite() || !isNewerThanSource(outputFiletate)) { + MonitorWriter monitorOut = new MonitorWriter(new StringWriter()); try { - StringWriter out = new StringWriter(); - MonitorWriter monitorOut = new MonitorWriter(out); generateFromState(monitorOut, state); write(outputFiletate, monitorOut); } catch (Exception eee) { @@ -149,6 +149,8 @@ throw new RuntimeException( "Erreur lors de la génération du fichier " + outputFiletate, eee); + } finally { + monitorOut.close(); } } } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java 2010-05-14 13:44:45 UTC (rev 905) @@ -27,6 +27,7 @@ import org.nuiton.eugene.ModelReader; import org.nuiton.eugene.Template; +import org.nuiton.eugene.TemplateConfiguration; import java.io.File; import java.util.Map; @@ -38,7 +39,7 @@ * @author tchemit <chemit@codelutin.com> * @since 2.0.0 */ -public interface ChainedFileWriterConfiguration { +public interface ChainedFileWriterConfiguration extends TemplateConfiguration{ /** @return the type of model used */ String getModelType(); Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java 2010-05-14 13:44:45 UTC (rev 905) @@ -31,7 +31,6 @@ import junit.framework.Assert; import org.junit.Test; -import org.nuiton.eugene.models.object.ObjectModelGenerator; import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl; Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI12ToObjectModelTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI12ToObjectModelTest.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI12ToObjectModelTest.java 2010-05-14 13:44:45 UTC (rev 905) @@ -85,9 +85,12 @@ transformer.setURIResolver(new ResourceResolver()); - transformer.transform(new StreamSource(xmiFile), new StreamResult( - new FileOutputStream(result))); - + FileOutputStream out = new FileOutputStream(result); + try { + transformer.transform(new StreamSource(xmiFile), new StreamResult(out)); + } finally { + out.close(); + } return result; } @@ -98,11 +101,14 @@ * @return object model */ protected ObjectModel loadModel(File modelFile) { - ObjectModelGenerator generator = new ObjectModelGenerator(); - generator.setOverwrite(true); - generator.generate(new File[] { modelFile }, new File("output")); - ObjectModel objectModel = generator.getModel(); - return objectModel; +// ObjectModelGenerator generator = new ObjectModelGenerator(); + ObjectModelReader reader = new ObjectModelReader(); + ObjectModel model = reader.read(modelFile); + return model; +// generator.applyTemplate(model); +// generator.generate(new File[] { modelFile }, new File("output")); +// ObjectModel objectModel = generator.getModel(); +// return objectModel; } /** Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java 2010-05-14 13:44:45 UTC (rev 905) @@ -91,8 +91,13 @@ String basePath = xmiFile.getParent(); transformer.setURIResolver(new ResourceResolver(basePath)); - transformer.transform(new StreamSource(xmiFile), new StreamResult( - new FileOutputStream(result))); + FileOutputStream out = new FileOutputStream(result); + try { + transformer.transform(new StreamSource(xmiFile), new StreamResult( + out)); + } finally { + out.close(); + } return result; } @@ -104,11 +109,13 @@ * @return object model */ protected ObjectModel loadModel(File modelFile) { - ObjectModelGenerator generator = new ObjectModelGenerator(); - generator.setOverwrite(true); - generator.generate(new File[] { modelFile }, new File("output")); - ObjectModel objectModel = generator.getModel(); - return objectModel; + ObjectModelReader reader = new ObjectModelReader(); + ObjectModel model = reader.read(modelFile); + return model; +// ObjectModelGenerator generator = new ObjectModelGenerator(); +// generator.generate(new File[] { modelFile }, new File("output")); +// ObjectModel objectModel = generator.getModel(); +// return objectModel; } /** Modified: trunk/maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java =================================================================== --- trunk/maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2010-05-14 13:44:45 UTC (rev 905) @@ -46,12 +46,12 @@ import java.util.List; import java.util.Set; import java.util.HashSet; -import org.apache.commons.lang.StringUtils; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.object.ObjectModelGenerator; import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.ImportsManager; +import org.nuiton.eugene.java.ImportsManager; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelClassifier; @@ -608,7 +608,7 @@ * @param attributes list of attributes for the generation (may be not empty) * @param imports the ImportsManager used to generate the header imports of the DTO * @return the same list of attributes in parameter with attributes from entities dependencies - * @see org.nuiton.eugene.ImportsManager + * @see org.nuiton.eugene.java.ImportsManager * @see org.nuiton.eugene.models.object.ObjectModelDependency */ private List<ObjectModelAttribute> setAttributesForDTO(ObjectModelClass clazz, 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 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java 2010-05-14 13:44:45 UTC (rev 905) @@ -33,6 +33,7 @@ import org.apache.maven.settings.Settings; import org.nuiton.eugene.ModelReader; import org.nuiton.eugene.Template; +import org.nuiton.eugene.TemplateConfiguration; import org.nuiton.eugene.models.Model; import org.nuiton.eugene.plugin.writer.BaseChainedFileWriter; import org.nuiton.eugene.plugin.writer.ModelChainedFileWriter; @@ -584,7 +585,22 @@ urls, urlsAsString ); + + addDirectoryToUrlsList( + new File(getProject().getBuild().getTestSourceDirectory()), + urls, + urlsAsString + ); + } else { + + addDirectoryToUrlsList( + new File(getProject().getBuild().getSourceDirectory()), + urls, + urlsAsString + ); } + + if (project.getProjectReferences() != null) { // this case is for multi-module when calling from a // parent module @@ -612,7 +628,7 @@ if (!project.getArtifacts().isEmpty()) { // this is a special case when artifacts were resolved // (for example in site phase) - if (verbose) { + if (isVerbose()) { getLog().info( "Use resolved artifacts to build class-path"); } @@ -629,7 +645,7 @@ } // we ask to add the directory in classloader loader = getClass().getClassLoader(); - if (getLog().isDebugEnabled()) { + if (isVerbose()) { getLog().info("original classloader " + loader); } if (loader instanceof URLClassLoader) { @@ -637,7 +653,7 @@ // car sinon on risque de ne pas retrouver les resources... for (URL u : ((URLClassLoader) loader).getURLs()) { addUrlToUrlsList(u, urls, urlsAsString); - if (getLog().isDebugEnabled()) { + if (isVerbose()) { getLog().debug("original cp entry: " + u); } } @@ -652,9 +668,9 @@ urls.toArray(new URL[urls.size()]), loader); } - if (getLog().isDebugEnabled()) { + if (isVerbose()) { for (URL u : urls) { - getLog().debug("cp entry: " + u); + getLog().info("cp entry: " + u); } } fixedClassLoader = loader; 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 2010-05-13 17:16:19 UTC (rev 904) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2010-05-14 13:44:45 UTC (rev 905) @@ -50,11 +50,17 @@ public class ModelChainedFileWriter extends BaseChainedFileWriter { public static final String PROP_GENERATED_PACKAGES = "generatedPackages"; + public static final String PROP_EXCLUDE_TEMPLATES = "excludetemplates"; + public static final String PROP_TEMPLATES = "templates"; + 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_READER = "reader"; public ModelChainedFileWriter() { @@ -205,21 +211,19 @@ // init templates - List<Template<Model>> templatesList = new ArrayList<Template<Model>>(); + List<Template<?>> templatesList = new ArrayList<Template<?>>(); String[] templatesNames = getTemplates().split(","); for (String templateName : templatesNames) { // remove trailing spaces templateName = templateName.trim(); - Template<Model> template; - - template = (Template<Model>) + Template<?> template = configuration.getModelTemplates().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( + template = (Template<?>) Class.forName( templateName, true, loader).newInstance(); } catch (Exception e) { throw new IllegalStateException( @@ -259,6 +263,10 @@ getLog().info("Generating from " + inputDirectory + " : " + includePattern); + if (configuration.isVerbose()) { + getLog().info("Will use classLoader "+configuration.getClassLoader()); + } + for (File srcDirGen : ioContext.getInputs()) { if (configuration.isVerbose()) { @@ -281,6 +289,8 @@ getLog().info("Apply " + template.getClass().getSimpleName() + " generator"); + template.setConfiguration(configuration); + // apply template template.applyTemplate(model, ioContext.getOutput());
participants (1)
-
tchemit@users.nuiton.org