Author: sebb Date: Tue Jun 25 01:15:45 2013 New Revision: 1496326 URL: http://svn.apache.org/r1496326 Log: Maven layout conventions
Modified: maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java Modified: maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java?rev=1496326&r1=1496325&r2=1496326&view=diff ============================================================================== --- maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java (original) +++ maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/DigestMojo.java Tue Jun 25 01:15:45 2013 @@ -34,159 +34,217 @@ import org.apache.maven.project.MavenPro import org.codehaus.plexus.util.DirectoryScanner; /** - * Creates digests (MD5 and SHA1 by default) for files specified - * by the configured includes and excludes. - * Also allows specification of a list of files on the command line. + * Creates digests (MD5 and SHA1 by default) for files specified by the configured includes and excludes. Also allows + * specification of a list of files on the command line. */ -@Mojo( name = "digest") -public class DigestMojo extends AbstractMojo { +@Mojo( name = "digest" ) +public class DigestMojo + extends AbstractMojo +{ + + // ---------------------------------------------------------------------- + // Mojo components + // ---------------------------------------------------------------------- @Component private MavenProject project; + // ---------------------------------------------------------------------- + // Mojo parameters + // ---------------------------------------------------------------------- + /** - * List of files to include, default none. - * Standard Maven wildcard patterns apply. - * Patterns are assumed to be relative to the project base directory. + * List of files to include, default none. Standard Maven wildcard patterns apply. Patterns are assumed to be + * relative to the project base directory. */ @Parameter private Set<String> includes; /** - * List of files to exclude, default none. - * Standard Maven wildcard patterns apply. - * Patterns are assumed to be relative to the project base directory. + * List of files to exclude, default none. Standard Maven wildcard patterns apply. Patterns are assumed to be + * relative to the project base directory. */ @Parameter private Set<String> excludes; /** - * List of files to include, comma-separated (intended for command-line usage). - * Overrides includes and excludes; uses same syntax as for {@code <include>} - * Patterns are assumed to be relative to the project base directory. + * List of files to include, comma-separated (intended for command-line usage). Overrides includes and excludes; + * uses same syntax as for {@code <include>} Patterns are assumed to be relative to the project base directory. */ - @Parameter (property="maven.digest.files") + @Parameter( property = "maven.digest.files" ) private String files; /** - * List of digests (algorithms) to create, comma-separated (intended for command-line usage). - * Overrides algorithms; uses same syntax + * List of digests (algorithms) to create, comma-separated (intended for command-line usage). Overrides algorithms; + * uses same syntax */ - @Parameter (property="maven.digest.digests") + @Parameter( property = "maven.digest.digests" ) private String digests; /** - * The list of algorithm names with which to create digests. - * If none specified, the default is {@code MD5} and {@code SHA1}. - * By default the file extension is assumed to be the algorithm name - * converted to lower-case, and any "-" characters removed. - * The extension name can be provided by suffixing the algorithm name - * with ">" followed by the extension, for example: "SHA-1>sha". + * The list of algorithm names with which to create digests. If none specified, the default is {@code MD5} and + * {@code SHA1}. By default the file extension is assumed to be the algorithm name converted to lower-case, and any + * "-" characters removed. The extension name can be provided by suffixing the algorithm name with ">" followed by + * the extension, for example: "SHA-1>sha". */ @Parameter private Set<String> algorithms; + // ---------------------------------------------------------------------- + // Mojo options + // ---------------------------------------------------------------------- + /** * Whether to append ' *filename' to the hash in the generated file, default {@code false} */ @Parameter( property = "maven.digest.appendFilename", defaultValue = "false" ) private boolean appendFilename; - public void execute() throws MojoExecutionException { + // ---------------------------------------------------------------------- + // Public methods + // ---------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + public void execute() + throws MojoExecutionException + { String files[] = scanForSources(); Log log = getLog(); - if (files.length == 0) { - log.warn("No files found. Please configure at least one <include> item or use -Dmaven.digest.files"); - } else { - if (digests != null && digests.length() > 0) { - String [] digest = digests.split(","); - algorithms = new HashSet<String>(digest.length); - for (String d : digest) { - algorithms.add(d); + if ( files.length == 0 ) + { + log.warn( "No files found. Please configure at least one <include> item or use -Dmaven.digest.files" ); + } + else + { + if ( digests != null && digests.length() > 0 ) + { + String[] digest = digests.split( "," ); + algorithms = new HashSet<String>( digest.length ); + for ( String d : digest ) + { + algorithms.add( d ); } } - if (algorithms == null || algorithms.size() == 0) { - algorithms = new HashSet<String>(2); - algorithms.add("MD5"); - algorithms.add("SHA-1"); - } - try { - for(String file : files) { - for(String algorithm : algorithms) { - String[] parts = algorithm.split(">"); + if ( algorithms == null || algorithms.size() == 0 ) + { + algorithms = new HashSet<String>( 2 ); + algorithms.add( "MD5" ); + algorithms.add( "SHA-1" ); + } + try + { + for ( String file : files ) + { + for ( String algorithm : algorithms ) + { + String[] parts = algorithm.split( ">" ); String extension; - if (parts.length == 2) { + if ( parts.length == 2 ) + { algorithm = parts[0]; extension = parts[1]; - } else { - extension = getExtension(algorithm); } - createDigest(algorithm, extension, file); + else + { + extension = getExtension( algorithm ); + } + createDigest( algorithm, extension, file ); } } - } catch (Exception ex) { - throw new MojoExecutionException("Failed to create hash", ex); + } + catch ( Exception ex ) + { + throw new MojoExecutionException( "Failed to create hash", ex ); } } } + // ---------------------------------------------------------------------- + // Protected methods + // ---------------------------------------------------------------------- + + // ---------------------------------------------------------------------- + // Private methods + // ---------------------------------------------------------------------- + /** - * Creates the extension from the algortithm name, by converting to lower-case - * and dropping any "-" characters. The result is prefixed with ".". + * Creates the extension from the algortithm name, by converting to lower-case and dropping any "-" characters. The + * result is prefixed with ".". * * @param algorithm the algorithm name * @return the extension, e.g. ".md5", ".sha1" */ - private String getExtension(String algorithm) { - return "." + algorithm.toLowerCase(Locale.ENGLISH).replace("-", ""); + private String getExtension( String algorithm ) + { + return "." + algorithm.toLowerCase( Locale.ENGLISH ).replace( "-", "" ); } - private void createDigest(String algorithm, String extension, String file) throws Exception { + private void createDigest( String algorithm, String extension, String file ) + throws Exception + { // Unfortunately DigestUtils.getDigest is not public // Do this before opening file in case not found - MessageDigest digest = MessageDigest.getInstance(algorithm); - FileInputStream is = new FileInputStream(file); - PrintWriter pw = new PrintWriter(file+extension, "UTF-8"); - pw.print(digestHex(digest, is)); - if (appendFilename) { - pw.println(" *" + file); - } else { - pw.println(); + MessageDigest digest = MessageDigest.getInstance( algorithm ); + FileInputStream is = new FileInputStream( file ); + PrintWriter pw = new PrintWriter( file + extension, "UTF-8" ); + pw.print( digestHex( digest, is ) ); + if ( appendFilename ) + { + pw.println( " *" + file ); + } + else + { + pw.println(); } is.close(); pw.close(); } - private static String digestHex(MessageDigest digest, InputStream data) throws IOException { - return Hex.encodeHexString(digest(digest, data)); + private static String digestHex( MessageDigest digest, InputStream data ) + throws IOException + { + return Hex.encodeHexString( digest( digest, data ) ); } // Unfortunately, the Codec version is private - private static byte[] digest(MessageDigest digest, InputStream data) throws IOException { + private static byte[] digest( MessageDigest digest, InputStream data ) + throws IOException + { byte[] buffer = new byte[1024]; - int read = data.read(buffer); - while (read > -1) { - digest.update(buffer, 0, read); - read = data.read(buffer); + int read = data.read( buffer ); + while ( read > -1 ) + { + digest.update( buffer, 0, read ); + read = data.read( buffer ); } return digest.digest(); } - private String[] scanForSources() { + private String[] scanForSources() + { DirectoryScanner ds = new DirectoryScanner(); ds.setFollowSymlinks( true ); ds.setBasedir( project.getBasedir() ); // Cannot be omitted; implies that includes/excludes are relative String[] inc; - if (files != null) { // Overrides includes / excludes - getLog().debug("files="+files); - inc=files.split(","); - } else { - if ( includes == null || includes.isEmpty() ) { + if ( files != null ) + { // Overrides includes / excludes + getLog().debug( "files=" + files ); + inc = files.split( "," ); + } + else + { + if ( includes == null || includes.isEmpty() ) + { inc = new String[0]; // overrides default of ** - } else { + } + else + { inc = includes.toArray( new String[includes.size()] ); } - if (excludes != null) { + if ( excludes != null ) + { String[] excl = excludes.toArray( new String[excludes.size()] ); ds.setExcludes( excl ); } @@ -196,4 +254,8 @@ public class DigestMojo extends Abstract ds.scan(); return ds.getIncludedFiles(); } + + // ---------------------------------------------------------------------- + // Static methods + // ---------------------------------------------------------------------- } Modified: maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java?rev=1496326&r1=1496325&r2=1496326&view=diff ============================================================================== --- maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java (original) +++ maven/sandbox/trunk/plugins/maven-digest-plugin/src/main/java/org/apache/maven/plugins/digest/HelperMojo.java Tue Jun 25 01:15:45 2013 @@ -21,47 +21,82 @@ package org.apache.maven.plugins.digest; import java.lang.reflect.Field; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.help.DescribeMojo; import org.apache.maven.project.MavenProject; /** - * Helper Mojo that extends the standard Maven help plugin describe goal. - * This is needed because the generated help mojo + * Helper Mojo that extends the standard Maven help plugin describe goal. This is needed because the generated help mojo * does not handle annotation property names at present. */ -@Mojo (name = "helper") -public class HelperMojo extends DescribeMojo { +@Mojo( name = "helper" ) +public class HelperMojo + extends DescribeMojo +{ + + // ---------------------------------------------------------------------- + // Mojo components + // ---------------------------------------------------------------------- @Component private MavenProject myProject; // Must not use same name as DescribeMojo - /** - * @throws MojoExecutionException - * @throws MojoFailureException + // ---------------------------------------------------------------------- + // Mojo parameters + // ---------------------------------------------------------------------- + + // ---------------------------------------------------------------------- + // Mojo options + // ---------------------------------------------------------------------- + + // ---------------------------------------------------------------------- + // Public methods + // ---------------------------------------------------------------------- + + /** + * {@inheritDoc} */ @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void execute() + throws MojoExecutionException + { Field f = null; boolean isAccessible = true; // assume accessible - try { + try + { // Unfortunately the plugin field is private - f = DescribeMojo.class.getDeclaredField("plugin"); + f = DescribeMojo.class.getDeclaredField( "plugin" ); isAccessible = f.isAccessible(); - if (!isAccessible) { - f.setAccessible(true); + if ( !isAccessible ) + { + f.setAccessible( true ); } String plugin = myProject.getGroupId() + ":" + myProject.getArtifactId(); - f.set(this, plugin); - super.execute(); - } catch (Exception e) { - throw new MojoExecutionException("Could not set up plugin details"); - } finally { - if (f != null && !isAccessible) { - f.setAccessible(isAccessible); // reset accessibility (prob not needed) + f.set( this, plugin ); + super.execute(); + } + catch ( Exception e ) + { + throw new MojoExecutionException( "Could not set up plugin details" ); + } + finally + { + if ( f != null && !isAccessible ) + { + f.setAccessible( isAccessible ); // reset accessibility (prob not needed) } } } + // ---------------------------------------------------------------------- + // Protected methods + // ---------------------------------------------------------------------- + + // ---------------------------------------------------------------------- + // Private methods + // ---------------------------------------------------------------------- + + // ---------------------------------------------------------------------- + // Static methods + // ---------------------------------------------------------------------- }