r1650 - in trunk: . src/main/java/org/nuiton/license/header/generator src/main/java/org/nuiton/license/header/generator/impl src/main/java/org/nuiton/license/header/plugin
Author: tchemit Date: 2009-09-26 05:56:02 +0200 (Sat, 26 Sep 2009) New Revision: 1650 Modified: trunk/pom.xml trunk/src/main/java/org/nuiton/license/header/generator/HeaderGenerator.java trunk/src/main/java/org/nuiton/license/header/generator/HeaderGeneratorUtil.java trunk/src/main/java/org/nuiton/license/header/generator/impl/JavaHeaderGenerator.java trunk/src/main/java/org/nuiton/license/header/generator/impl/PropertiesHeaderGenerator.java trunk/src/main/java/org/nuiton/license/header/generator/impl/XmlHeaderGenerator.java trunk/src/main/java/org/nuiton/license/header/plugin/GeneratorListPlugin.java trunk/src/main/java/org/nuiton/license/header/plugin/UpdateHeaderPlugin.java Log: - [EVOLUTION #64] : ajout des propri?\195?\169t?\195?\169s dryRun et skipUpdateHeader sur le mojo update-header - improve header generator discovering with plexus instead of ServiceLoader Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2009-09-26 02:53:12 UTC (rev 1649) +++ trunk/pom.xml 2009-09-26 03:56:02 UTC (rev 1650) @@ -159,7 +159,7 @@ <artifactId>commons-httpclient</artifactId> </exclusion> - <exclusion> + <exclusion> <groupId>plexus</groupId> <artifactId>plexus-mail-sender-simple</artifactId> </exclusion> @@ -270,7 +270,21 @@ <plugins> + <!-- expose new plexus components --> <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-metadata</artifactId> + <version>1.2.0</version> + <executions> + <execution> + <goals> + <goal>generate-metadata</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> <artifactId>maven-plugin-plugin</artifactId> <executions> <execution> Modified: trunk/src/main/java/org/nuiton/license/header/generator/HeaderGenerator.java =================================================================== --- trunk/src/main/java/org/nuiton/license/header/generator/HeaderGenerator.java 2009-09-26 02:53:12 UTC (rev 1649) +++ trunk/src/main/java/org/nuiton/license/header/generator/HeaderGenerator.java 2009-09-26 03:56:02 UTC (rev 1650) @@ -31,6 +31,11 @@ public interface HeaderGenerator { /** + * Plexus role name + */ + String ROLE_NAME = HeaderGenerator.class.getName(); + + /** * * @return the name of the generator */ Modified: trunk/src/main/java/org/nuiton/license/header/generator/HeaderGeneratorUtil.java =================================================================== --- trunk/src/main/java/org/nuiton/license/header/generator/HeaderGeneratorUtil.java 2009-09-26 02:53:12 UTC (rev 1649) +++ trunk/src/main/java/org/nuiton/license/header/generator/HeaderGeneratorUtil.java 2009-09-26 03:56:02 UTC (rev 1650) @@ -29,7 +29,10 @@ * * @author chemit * @since 1.0.1 + * @deprecated since 1.0.2, prefer use a plexus component inspection, rather + * than java {@link ServiceLoader} mecanism. */ +@Deprecated public class HeaderGeneratorUtil { /** Modified: trunk/src/main/java/org/nuiton/license/header/generator/impl/JavaHeaderGenerator.java =================================================================== --- trunk/src/main/java/org/nuiton/license/header/generator/impl/JavaHeaderGenerator.java 2009-09-26 02:53:12 UTC (rev 1649) +++ trunk/src/main/java/org/nuiton/license/header/generator/impl/JavaHeaderGenerator.java 2009-09-26 03:56:02 UTC (rev 1650) @@ -28,6 +28,8 @@ * * @author chemit * @since 1.0.1 + * + * @plexus.component role-hint="license-java" */ public class JavaHeaderGenerator extends AbstractLicenseHeaderGenerator { Modified: trunk/src/main/java/org/nuiton/license/header/generator/impl/PropertiesHeaderGenerator.java =================================================================== --- trunk/src/main/java/org/nuiton/license/header/generator/impl/PropertiesHeaderGenerator.java 2009-09-26 02:53:12 UTC (rev 1649) +++ trunk/src/main/java/org/nuiton/license/header/generator/impl/PropertiesHeaderGenerator.java 2009-09-26 03:56:02 UTC (rev 1650) @@ -28,6 +28,8 @@ * * @author chemit * @since 1.0.1 + * + * @plexus.component role-hint="license-properties" */ public class PropertiesHeaderGenerator extends AbstractLicenseHeaderGenerator { Modified: trunk/src/main/java/org/nuiton/license/header/generator/impl/XmlHeaderGenerator.java =================================================================== --- trunk/src/main/java/org/nuiton/license/header/generator/impl/XmlHeaderGenerator.java 2009-09-26 02:53:12 UTC (rev 1649) +++ trunk/src/main/java/org/nuiton/license/header/generator/impl/XmlHeaderGenerator.java 2009-09-26 03:56:02 UTC (rev 1650) @@ -28,6 +28,8 @@ * * @author chemit * @since 1.0.1 + * + * @plexus.component role-hint="license-xml" */ public class XmlHeaderGenerator extends AbstractLicenseHeaderGenerator { Modified: trunk/src/main/java/org/nuiton/license/header/plugin/GeneratorListPlugin.java =================================================================== --- trunk/src/main/java/org/nuiton/license/header/plugin/GeneratorListPlugin.java 2009-09-26 02:53:12 UTC (rev 1649) +++ trunk/src/main/java/org/nuiton/license/header/plugin/GeneratorListPlugin.java 2009-09-26 03:56:02 UTC (rev 1650) @@ -20,13 +20,13 @@ */ package org.nuiton.license.header.plugin; +import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.nuiton.license.header.generator.HeaderGenerator; -import org.nuiton.license.header.generator.HeaderGeneratorUtil; /** * The goal display all the knwon generators. @@ -49,24 +49,34 @@ * @since 1.0.1 */ protected boolean detail; + /** + * All available generators + * + * @component role="org.nuiton.license.header.generator.HeaderGenerator" + */ + protected Map<String, HeaderGenerator> _generators; @Override public void execute() throws MojoExecutionException, MojoFailureException { - // obtain all available generators - Map<String, HeaderGenerator> generators = HeaderGeneratorUtil.getGenerators(getClass().getClassLoader()); - // display it StringBuilder buffer = new StringBuilder('\n'); buffer.append("\n\n-------------------------------------------------------------------------------\n"); buffer.append(" maven-license-plugin\n"); buffer.append("-------------------------------------------------------------------------------\n\n"); - buffer.append("List of available generators :\n\n"); - for (Entry<String, HeaderGenerator> e : generators.entrySet()) { - buffer.append(" - ").append(e.getKey()).append(" : ").append(e.getValue().getDescription()); - buffer.append("\n"); - if (detail) { - buffer.append("\n example : \n").append(e.getValue().getHeader("content ")).append('\n'); + if (_generators == null || _generators.isEmpty()) { + buffer.append("No generator found.\n\n"); + } else { + buffer.append("List of available generators :\n\n"); + Iterator<Entry<String, HeaderGenerator>> itr = _generators.entrySet().iterator(); + while (itr.hasNext()) { + Entry<String, HeaderGenerator> e = itr.next(); + HeaderGenerator generator = e.getValue(); + buffer.append(" - ").append(e.getKey()).append(" : ").append(generator.getDescription()); + buffer.append("\n"); + if (detail) { + buffer.append("\n example : \n").append(generator.getHeader("content ")).append('\n'); + } } } getLog().info(buffer.toString()); Modified: trunk/src/main/java/org/nuiton/license/header/plugin/UpdateHeaderPlugin.java =================================================================== --- trunk/src/main/java/org/nuiton/license/header/plugin/UpdateHeaderPlugin.java 2009-09-26 02:53:12 UTC (rev 1649) +++ trunk/src/main/java/org/nuiton/license/header/plugin/UpdateHeaderPlugin.java 2009-09-26 03:56:02 UTC (rev 1650) @@ -21,13 +21,13 @@ package org.nuiton.license.header.plugin; import org.nuiton.processor.LicenseProcessor; -import org.apache.maven.plugin.MojoExecutionException; import java.io.File; import java.io.StringWriter; import java.util.Calendar; import java.util.Date; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -40,7 +40,6 @@ import org.nuiton.license.License; import org.nuiton.license.LicenseFactory; import org.nuiton.license.header.generator.HeaderGenerator; -import org.nuiton.license.header.generator.HeaderGeneratorUtil; import org.nuiton.plugin.AbstractPlugin; import org.nuiton.util.PluginHelper; @@ -196,12 +195,32 @@ */ protected boolean verbose; /** + * A flag to skip the goal. + * + * @parameter expression="${skipUpdateHeader}" default-value="false" + * @since 1.0.3 + */ + private boolean skipUpdateHeader; + /** + * A flag to test plugin but modify no file. + * + * @parameter expression="${dryRun}" default-value="false" + * @since 1.0.3 + */ + protected boolean dryRun; + /** * Velocity Component. * * @component roleHint="maven-license-plugin" * @since 2.0.0 */ protected VelocityComponent velocity; + /** + * All available generators + * + * @component role="org.nuiton.license.header.generator.HeaderGenerator" + */ + protected Map<String, HeaderGenerator> _generators; /** le header a ajouter dans chaque fichier source java */ protected String licenseHeaderContent; /** le header complet (avec les balises de commentaires) */ @@ -243,17 +262,29 @@ @Override public boolean init() throws Exception { + if (skipUpdateHeader) { + return true; + } timestamp = System.nanoTime(); - HeaderGenerator generator; + if (_generators == null) { + // should never happen... + getLog().warn("no header generator found"); + return false; + } + if (verbose) { + Iterator<Entry<String, HeaderGenerator>> itr = _generators.entrySet().iterator(); + while (itr.hasNext()) { + Entry<String, HeaderGenerator> next = itr.next(); + getLog().info("config - available generator : " + next.getKey()); + } + } - // obtain the header generator - try { - generator = HeaderGeneratorUtil.getGenerator(getClass().getClassLoader(), generatorName, true); - } catch (IllegalArgumentException e) { - // generator non trouve - throw new MojoExecutionException("the generator named '" + generatorName + "' is unknown (use generator-list goal to see all of them)"); + if (!_generators.containsKey(generatorName.trim())) { + getLog().warn("the generator named '" + generatorName + "' is unknown (use generator-list goal to see all of them)"); + return false; } + HeaderGenerator generator = _generators.get(generatorName); // obtain all files to be treated @@ -265,6 +296,7 @@ boolean doGenerate = !filesToTreate.isEmpty(); + if (doGenerate) { File templateFile = new File(template); @@ -297,6 +329,11 @@ @Override protected void doAction() throws Exception { + if (skipUpdateHeader) { + getLog().info("skip flag is on, the goal is skip."); + return; + } + // create a licence processor with given header LicenseProcessor p = new LicenseProcessor(licenseHeaderContent); @@ -324,19 +361,26 @@ getLog().info("adding license header on file " + file); String content = PluginHelper.readAsString(file, encoding); content = boxedLicenseHeaderContent + content; - writeFile(processFile, content, encoding); + if (!dryRun) { + writeFile(processFile, content, encoding); + } } } - if (keepBackup) { + if (keepBackup && !dryRun) { File backupFile = new File(file.getAbsolutePath() + "~"); if (verbose) { getLog().debug("backup original file " + file); } file.renameTo(backupFile); } - processFile.renameTo(file); + if (dryRun) { + processFile.delete(); + } else { + processFile.renameTo(file); + } + } catch (Exception e) { getLog().warn("skip file " + file + " (could not process for reason : " + e.getMessage() + ")"); processFile.delete();
participants (1)
-
tchemit@users.nuiton.org