diff --git a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/cmakebuilder/CompileMojo.java b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/cmakebuilder/CompileMojo.java index afb11cbdca..0196352816 100644 --- a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/cmakebuilder/CompileMojo.java +++ b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/cmakebuilder/CompileMojo.java @@ -14,6 +14,7 @@ package org.apache.hadoop.maven.plugin.cmakebuilder; +import java.util.Locale; import org.apache.hadoop.maven.plugin.util.Exec.OutputBufferThread; import org.apache.hadoop.maven.plugin.util.Exec; import org.apache.maven.plugin.AbstractMojo; @@ -83,7 +84,8 @@ public class CompileMojo extends AbstractMojo { // TODO: support Windows private static void validatePlatform() throws MojoExecutionException { - if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { + if (System.getProperty("os.name").toLowerCase(Locale.ENGLISH) + .startsWith("windows")) { throw new MojoExecutionException("CMakeBuilder does not yet support " + "the Windows platform."); } diff --git a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/cmakebuilder/TestMojo.java b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/cmakebuilder/TestMojo.java index e676efd166..95b6264ba6 100644 --- a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/cmakebuilder/TestMojo.java +++ b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/cmakebuilder/TestMojo.java @@ -14,6 +14,7 @@ package org.apache.hadoop.maven.plugin.cmakebuilder; +import java.util.Locale; import org.apache.hadoop.maven.plugin.util.Exec; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; @@ -117,7 +118,8 @@ public class TestMojo extends AbstractMojo { // TODO: support Windows private static void validatePlatform() throws MojoExecutionException { - if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { + if (System.getProperty("os.name").toLowerCase(Locale.ENGLISH) + .startsWith("windows")) { throw new MojoExecutionException("CMakeBuilder does not yet support " + "the Windows platform."); } diff --git a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java index 0dcac0e8e4..df479fd487 100644 --- a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java +++ b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java @@ -105,6 +105,10 @@ public boolean hasChanged(File file) throws IOException { private boolean hasDirectoryChanged(File directory) throws IOException { File[] listing = directory.listFiles(); boolean changed = false; + if (listing == null) { + // not changed. + return false; + } // Do not exit early, since we need to compute and save checksums // for each file within the directory. for (File f : listing) { diff --git a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java index decfca406f..528163103d 100644 --- a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java +++ b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java @@ -84,8 +84,10 @@ public int run(List command, List output, if (errors != null) { errors.addAll(stdErr.getOutput()); } - } catch (Exception ex) { - mojo.getLog().warn(command + " failed: " + ex.toString()); + } catch (IOException ioe) { + mojo.getLog().warn(command + " failed: " + ioe.toString()); + } catch (InterruptedException ie) { + mojo.getLog().warn(command + " failed: " + ie.toString()); } return retCode; } diff --git a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/versioninfo/VersionInfoMojo.java b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/versioninfo/VersionInfoMojo.java index b6a45ecfb8..cd2651bb8b 100644 --- a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/versioninfo/VersionInfoMojo.java +++ b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/versioninfo/VersionInfoMojo.java @@ -13,6 +13,7 @@ */ package org.apache.hadoop.maven.plugin.versioninfo; +import java.io.Serializable; import java.util.Locale; import org.apache.hadoop.maven.plugin.util.Exec; import org.apache.hadoop.maven.plugin.util.FileSetUtils; @@ -149,27 +150,23 @@ private SCM determineSCM() throws Exception { */ private String[] getSvnUriInfo(String str) { String[] res = new String[]{"Unknown", "Unknown"}; - try { - String path = str; - int index = path.indexOf("trunk"); + String path = str; + int index = path.indexOf("trunk"); + if (index > -1) { + res[0] = path.substring(0, index - 1); + res[1] = "trunk"; + } else { + index = path.indexOf("branches"); if (index > -1) { res[0] = path.substring(0, index - 1); - res[1] = "trunk"; - } else { - index = path.indexOf("branches"); + int branchIndex = index + "branches".length() + 1; + index = path.indexOf("/", branchIndex); if (index > -1) { - res[0] = path.substring(0, index - 1); - int branchIndex = index + "branches".length() + 1; - index = path.indexOf("/", branchIndex); - if (index > -1) { - res[1] = path.substring(branchIndex, index); - } else { - res[1] = path.substring(branchIndex); - } + res[1] = path.substring(branchIndex, index); + } else { + res[1] = path.substring(branchIndex); } } - } catch (Exception ex) { - getLog().warn("Could not determine URI & branch from SVN URI: " + str); } return res; } @@ -311,6 +308,20 @@ private String byteArrayToString(byte[] array) { return sb.toString(); } + static class MD5Comparator implements Comparator, Serializable { + private static final long serialVersionUID = 1L; + + @Override + public int compare(File lhs, File rhs) { + return normalizePath(lhs).compareTo(normalizePath(rhs)); + } + + private String normalizePath(File file) { + return file.getPath().toUpperCase(Locale.ENGLISH) + .replaceAll("\\\\", "/"); + } + } + /** * Computes and returns an MD5 checksum of the contents of all files in the * input Maven FileSet. @@ -323,17 +334,7 @@ private String computeMD5() throws Exception { // File order of MD5 calculation is significant. Sorting is done on // unix-format names, case-folded, in order to get a platform-independent // sort and calculate the same MD5 on all platforms. - Collections.sort(files, new Comparator() { - @Override - public int compare(File lhs, File rhs) { - return normalizePath(lhs).compareTo(normalizePath(rhs)); - } - - private String normalizePath(File file) { - return file.getPath().toUpperCase(Locale.ENGLISH) - .replaceAll("\\\\", "/"); - } - }); + Collections.sort(files, new MD5Comparator()); byte[] md5 = computeMD5(files); String md5str = byteArrayToString(md5); getLog().info("Computed MD5: " + md5str);