Author: tchemit Date: 2009-10-16 14:36:06 +0200 (Fri, 16 Oct 2009) New Revision: 640 Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.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/Xmi2Model.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java Log: use AbstractPlugin api + improve javadoc in mojos (pre works better than code) Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2009-10-16 09:44:41 UTC (rev 639) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2009-10-16 12:36:06 UTC (rev 640) @@ -23,7 +23,6 @@ import java.io.IOException; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.logging.Log; import org.dom4j.DocumentException; import org.dom4j.Node; import org.dom4j.io.SAXReader; @@ -54,7 +53,7 @@ * <p/> * Par défaut on a les valeurs suivantes : * </p> - * <code> + * <pre> * <copyVersionResources> * </p> * <input>target/generated-sources/models</input> @@ -62,12 +61,12 @@ * <output>target/generated-sources/java</output> * </p> * </copyVersionResources> - * </code> + * </pre> * </p> * * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : * </p> - * <code> + * <pre> * <copyVersionResources> * </p> * <input>target/generated-sources/test-models</input> @@ -75,7 +74,7 @@ * <output>target/generated-sources/test-java</output> * </p> * </copyVersionResources> - * </code> + * </pre> * * @parameter * @since 1.0.0-rc-8 @@ -117,30 +116,21 @@ */ protected String modelNameFound = null; /** - * Maven logger - */ - protected Log logger; - /** * Dossier incluant le nom de la version */ protected File fVersionDir; @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void doAction() throws MojoExecutionException, MojoFailureException { - // get log - logger = getLog(); - - super.execute(); - // find version and model name findVersionAndModelName(); if (versionFound == null || !versionFound.matches("[0-9]+(\\.[0-9]+)*")) { versionFound = "0"; - logger.info("No version found in model files, setting version to '" + versionFound + "'"); + getLog().info("No version found in model files, setting version to '" + versionFound + "'"); } else { - logger.info("Version '" + versionFound + "' found in model description"); + getLog().info("Version '" + versionFound + "' found in model description"); } String destDir = copyVersionDir.replace("%MODELNAME%", modelNameFound) + File.separator + versionFound; @@ -162,11 +152,11 @@ @Override protected PluginIOContext initResources() { - File defaultIn = getFile("target", "generated-sources", "models"); - File defaultOut = getFile("target", "generated-sources", "java"); + File defaultIn = getFileFromBasedir("target", "generated-sources", "models"); + File defaultOut = getFileFromBasedir("target", "generated-sources", "java"); - File defaultTestIn = getFile("target", "generated-sources", "test-models"); - File defaultTestOut = getFile("target", "generated-sources", "test-java"); + File defaultTestIn = getFileFromBasedir("target", "generated-sources", "test-models"); + File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-java"); copyVersionResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); @@ -182,8 +172,8 @@ boolean exist = false; if (fVersionDir.exists() && fVersionDir.listFiles().length > 0) { - logger.warn("[COPY] Warning saved files for version '" + versionFound + "' and name '" + modelNameFound + "' already exists"); - logger.warn("[COPY] Copy won't be done unless copyOverwrite " + "parameter is set to 'true' or version is updated"); + getLog().warn("[COPY] Warning saved files for version '" + versionFound + "' and name '" + modelNameFound + "' already exists"); + getLog().warn("[COPY] Copy won't be done unless copyOverwrite " + "parameter is set to 'true' or version is updated"); exist = true; } @@ -248,7 +238,7 @@ modelNameFound = node.getStringValue(); } } catch (DocumentException e) { - logger.error("Can't read document", e); + getLog().error("Can't read document", e); } } } Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-10-16 09:44:41 UTC (rev 639) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-10-16 12:36:06 UTC (rev 640) @@ -2,15 +2,11 @@ import org.nuiton.plugin.PluginIOContext; import java.io.File; -import java.net.URL; import java.util.Arrays; -import java.util.List; -import java.util.Set; -import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Settings; +import org.nuiton.plugin.AbstractPlugin; /** * La classe de base pour definir des mojos dans eugene. @@ -18,7 +14,7 @@ * @author chemit * @since 1.0.0-rc-8 */ -public abstract class EugeneAbstractMojo extends AbstractMojo { +public abstract class EugeneAbstractMojo extends AbstractPlugin { /** * Maven project. @@ -87,21 +83,15 @@ */ protected abstract PluginIOContext initResources(); - @Override - public void execute() throws MojoExecutionException, MojoFailureException { - - PluginIOContext p = initResources(); - - if ((p.getInputs() == null || p.getInputs().length == 0)) { - throw new MojoExecutionException("no input defined"); - } - if (p.getOutput() == null) { - throw new MojoExecutionException("no output defined"); - } - - p.getOutput().mkdirs(); - } - + /** + * Build the {@link #getResources()} data. + * + * @param defaultIn the default input directory + * @param defaultOut the default output directory + * @param defaultTestIn the default test input directory + * @param defaultTestOut the default test output directory + * @return the new {@link PluginIOContext} to use in the goal + */ protected PluginIOContext initResources(File defaultIn, File defaultOut, File defaultTestIn, File defaultTestOut) { PluginIOContext resources = getResources(); @@ -135,39 +125,40 @@ return resources; } - /** - * Recupere le fichier donnée à partir de son chemin relatif sur le basedir - * du projet maven. - * - * @param paths les paths pour atteindre le fichier ou le répertoire - * - * @return le fichier de la destination - */ - protected File getFile(String... paths) { - File result = project.getBasedir(); - for (String path : paths) { - result = new File(result, path); + @Override + protected boolean init() throws Exception { + + // init goal io context + PluginIOContext p = initResources(); + + if ((p.getInputs() == null || p.getInputs().length == 0)) { + throw new MojoExecutionException("no input defined"); } - return result; + if (p.getOutput() == null) { + throw new MojoExecutionException("no output defined"); + } + + p.getOutput().mkdirs(); + return true; } - /** - * Ajout dans la liste des urls et l'ensemble des urls sous forme de string, l'url - * donné. - * - * Note : l'utilisation de l'ensemble des urls sous forme de String est utile - * sinon la comparaison entre url requiere des appels reseaux et cela n'est - * pas acceptable dans notre cas (mode offline ne marcherait plus...). - * - * @param url l'url a rajouter dans la liste - * @param urls la liste des urls - * @param urlsAsString l'ensemble des urls sous forme de String - */ - protected void addUrl(URL url, List<URL> urls, Set<String> urlsAsString) { - String toString = url.toString(); - if (!urlsAsString.contains(toString)) { - urlsAsString.add(toString); - urls.add(url); - } + @Override + public MavenProject getProject() { + return project; } + + @Override + public boolean isVerbose() { + return verbose; + } + + @Override + public void setProject(MavenProject project) { + this.project = project; + } + + @Override + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } } 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-10-16 09:44:41 UTC (rev 639) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-10-16 12:36:06 UTC (rev 640) @@ -63,7 +63,7 @@ * <p/> * Par défaut on a les valeurs suivantes : * </p> - * <code> + * <pre> * <generateResources> * </p> * <input>target/generated-sources/models</input> @@ -71,12 +71,12 @@ * <output>target/generated-sources/java</output> * </p> * </generateResources> - * </code> + * </pre> * </p> * * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : * </p> - * <code> + * <pre> * <generateResources> * </p> * <input>target/generated-sources/test-models</input> @@ -84,7 +84,7 @@ * <output>target/generated-sources/test-java</output> * </p> * </generateResources> - * </code> + * </pre> * * @parameter * @since 1.0.0-rc-8 @@ -137,14 +137,13 @@ protected String generatedPackages; @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void doAction() throws MojoExecutionException, MojoFailureException { getLog().info("Generating java sources from models"); getLog().info(" includes : " + includes); getLog().info(" using template : " + templates); getLog().info(" using defaultPackage : " + defaultPackage); - super.execute(); - + File[] modelFiles = getModelFiles(); if (modelFiles.length == 0) { // can skip @@ -191,11 +190,11 @@ @Override protected PluginIOContext initResources() { - File defaultIn = getFile("target", "generated-sources", "models"); - File defaultOut = getFile("target", "generated-sources", "java"); + File defaultIn = getFileFromBasedir("target", "generated-sources", "models"); + File defaultOut = getFileFromBasedir("target", "generated-sources", "java"); - File defaultTestIn = getFile("target", "generated-sources", "test-models"); - File defaultTestOut = getFile("target", "generated-sources", "test-java"); + File defaultTestIn = getFileFromBasedir("target", "generated-sources", "test-models"); + File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-java"); generateResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); @@ -232,7 +231,7 @@ } return modelFiles.toArray(new File[modelFiles.size()]); } - + // protected File[] getModelFiles() { // // get file to generate // // TODO improve this loop @@ -307,6 +306,7 @@ File destDirGen = generateResources.getOutput(); + //TODO-TC20091016 should use AbstractPlugin api if (testPhase) { if (!project.getTestCompileSourceRoots().contains( destDirGen.getPath())) { @@ -350,7 +350,7 @@ if (verbose) { getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory); } - urls.add(extraClassPathDirectory.toURI().toURL()); + addDirectoryToUrlsList(extraClassPathDirectory, urls, urlsAsString); } if (project.getProjectReferences() != null) { // this case is for multi-module when calling from a parent module @@ -361,7 +361,7 @@ getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'"); } //TODO il faudrait peut-etre aussi ajouter les dependances ? - addUrl(relatedProject.getArtifact().getFile().toURI().toURL(), urls, urlsAsString); + addDirectoryToUrlsList(relatedProject.getArtifact().getFile(), urls, urlsAsString); } } if (!project.getArtifacts().isEmpty()) { @@ -372,7 +372,7 @@ for (Object o : project.getArtifacts()) { Artifact a = (Artifact) o; if (!a.getScope().equals("provided")) { - addUrl(a.getFile().toURI().toURL(), urls, urlsAsString); + addDirectoryToUrlsList(a.getFile(), urls, urlsAsString); } } } Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-10-16 09:44:41 UTC (rev 639) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-10-16 12:36:06 UTC (rev 640) @@ -72,7 +72,7 @@ * <p/> * Par défaut on a les valeurs suivantes : * </p> - * <code> + * <pre> * <xmiResources> * </p> * <input>target/generated-sources/xmi<\input> @@ -80,13 +80,13 @@ * <output>target/generated-sources/models<\output> * </p> * </xmiResources> - * </code> + * </pre> * * </p> * * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : * </p> - * <code> + * <pre> * <xmiResources> * </p> * <input>target/generated-sources/xmi<\input> @@ -95,7 +95,7 @@ * </p> * </xmiResources> * </p> - * </code> + * </pre> * * @parameter * @since 1.0.0-rc-8 @@ -153,9 +153,8 @@ protected abstract String getStyleSheet(File model); @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void doAction() throws MojoExecutionException, MojoFailureException { long t0 = System.nanoTime(); - super.execute(); try { getLog().info("Processing XSL tranformation"); @@ -201,10 +200,10 @@ @Override protected PluginIOContext initResources() { - File defaultIn = getFile("target", "generated-sources", "xmi"); - File defaultOut = getFile("target", "generated-sources", "models"); - File defaultTestIn = getFile("target", "generated-sources", "test-xmi"); - File defaultTestOut = getFile("target", "generated-sources", "test-models"); + File defaultIn = getFileFromBasedir("target", "generated-sources", "xmi"); + File defaultOut = getFileFromBasedir("target", "generated-sources", "models"); + File defaultTestIn = getFileFromBasedir("target", "generated-sources", "test-xmi"); + File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-models"); xmiResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); @@ -349,7 +348,7 @@ if (verbose) { getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory); } - urls.add(extraClassPathDirectory.toURI().toURL()); + addDirectoryToUrlsList(extraClassPathDirectory,urls,urlsAsString); } if (project.getProjectReferences() != null) { // this case is for multi-module when calling from a parent module @@ -360,7 +359,7 @@ getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'"); } //TODO il faudrait peut-etre aussi ajouter les dependances ? - addUrl(relatedProject.getArtifact().getFile().toURI().toURL(), urls, urlsAsString); + addDirectoryToUrlsList(relatedProject.getArtifact().getFile(), urls, urlsAsString); } } if (!project.getArtifacts().isEmpty()) { @@ -371,7 +370,7 @@ for (Object o : project.getArtifacts()) { Artifact a = (Artifact) o; if (!a.getScope().equals("provided")) { - addUrl(a.getFile().toURI().toURL(), urls, urlsAsString); + addDirectoryToUrlsList(a.getFile(), urls, urlsAsString); } } } @@ -384,7 +383,7 @@ // on reinjecte les urls de loader de base // car sinon on risque de ne pas retrouver les resources... for (URL u : ((URLClassLoader) loader).getURLs()) { - addUrl(u, urls, urlsAsString); + addUrlToUrlsList(u, urls, urlsAsString); if (getLog().isDebugEnabled()) { getLog().debug("original cp entry: " + u); } Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java 2009-10-16 09:44:41 UTC (rev 639) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java 2009-10-16 12:36:06 UTC (rev 640) @@ -41,9 +41,9 @@ public class Xmi2ObjectModel extends Xmi2Model { @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void doAction() throws MojoExecutionException, MojoFailureException { getLog().info("Conversion of XMI files into ObjectModel"); - super.execute(); + super.doAction(); } @Override Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java 2009-10-16 09:44:41 UTC (rev 639) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java 2009-10-16 12:36:06 UTC (rev 640) @@ -29,9 +29,9 @@ public class Xmi2StateModel extends Xmi2Model { @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void doAction() throws MojoExecutionException, MojoFailureException { getLog().info("Conversion of XMI files into StateModel"); - super.execute(); + super.doAction(); } @Override Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2009-10-16 09:44:41 UTC (rev 639) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2009-10-16 12:36:06 UTC (rev 640) @@ -50,7 +50,7 @@ * <p/> * Par défaut on a les valeurs suivantes : * </p> - * <code> + * <pre> * <zargoResources> * </p> * <input>src/main/xmi</input> @@ -58,12 +58,12 @@ * <output>target/generated-sources/xmi</ouput> * </p> * </zargoResources> - * </code> + * </pre> * </p> * * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : * </p> - * <code> + * <pre> * <zargoResources> * </p> * <input>src/test/xmi</input> @@ -71,7 +71,7 @@ * <output>target/generated-sources/test-xmi</ouput> * </p> * <zargoResources> - * </code> + * </pre> * * @parameter * @since 1.0.0-rc-8 @@ -79,9 +79,8 @@ protected PluginIOContext zargoResources; @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void doAction() throws MojoExecutionException, MojoFailureException { getLog().info("Extract zipped XMI files from zargo archive and copy resources"); - super.execute(); getLog().info("Extract zipped XMI files"); try { @@ -107,11 +106,11 @@ @Override protected PluginIOContext initResources() { - File defaultIn = getFile("src", "main", "xmi"); - File defaultOut = getFile("target", "generated-sources", "xmi"); + File defaultIn = getFileFromBasedir("src", "main", "xmi"); + File defaultOut = getFileFromBasedir("target", "generated-sources", "xmi"); - File defaultTestIn = getFile("src", "test", "xmi"); - File defaultTestOut = getFile("target", "generated-sources", "test-xmi"); + File defaultTestIn = getFileFromBasedir("src", "test", "xmi"); + File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-xmi"); zargoResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut);