From 5bfdfac931f1364010be9317f5c7f15e3034b058 Mon Sep 17 00:00:00 2001 From: Mark Robert Miller Date: Sat, 19 Oct 2013 17:20:20 +0000 Subject: [PATCH] LUCENE-5295: Allow the license checker to optionally avoid check sum comparisons. git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1533791 13f79535-47bb-0310-9956-ffa450edef68 --- lucene/tools/custom-tasks.xml | 2 +- .../lucene/validation/LicenseCheckTask.java | 93 +++++++++++-------- 2 files changed, 56 insertions(+), 39 deletions(-) diff --git a/lucene/tools/custom-tasks.xml b/lucene/tools/custom-tasks.xml index 4fc1645beae..8c5c9fbaf6b 100644 --- a/lucene/tools/custom-tasks.xml +++ b/lucene/tools/custom-tasks.xml @@ -59,7 +59,7 @@ License check under: @{dir} - + diff --git a/lucene/tools/src/java/org/apache/lucene/validation/LicenseCheckTask.java b/lucene/tools/src/java/org/apache/lucene/validation/LicenseCheckTask.java index 36ca94bcdd5..21494ded771 100644 --- a/lucene/tools/src/java/org/apache/lucene/validation/LicenseCheckTask.java +++ b/lucene/tools/src/java/org/apache/lucene/validation/LicenseCheckTask.java @@ -55,6 +55,7 @@ public class LicenseCheckTask extends Task { private static final int CHECKSUM_BYTE_MASK = 0xFF; private boolean skipSnapshotsChecksum; + private boolean skipChecksum; /** * All JAR files to check. @@ -109,6 +110,10 @@ public class LicenseCheckTask extends Task { public void setSkipSnapshotsChecksum(boolean skipSnapshotsChecksum) { this.skipSnapshotsChecksum = skipSnapshotsChecksum; } + + public void setSkipChecksum(boolean skipChecksum) { + this.skipChecksum = skipChecksum; + } /** * Execute the task. @@ -119,7 +124,12 @@ public class LicenseCheckTask extends Task { throw new BuildException("Expected an embedded ."); } - if (skipSnapshotsChecksum) log("Skipping checksum for SNAPSHOT dependencies", Project.MSG_INFO); + if (skipChecksum) { + log("Skipping checksum verification for dependencies", Project.MSG_INFO); + } else if (skipSnapshotsChecksum) { + log("Skipping checksum for SNAPSHOT dependencies", Project.MSG_INFO); + } + jarResources.setProject(getProject()); processJars(); @@ -168,53 +178,60 @@ public class LicenseCheckTask extends Task { private boolean checkJarFile(File jarFile) { log("Scanning: " + jarFile.getPath(), verboseLevel); - if (!skipSnapshotsChecksum || !jarFile.getName().contains("-SNAPSHOT")) { - // validate the jar matches against our expected hash - final File checksumFile = new File(licenseDirectory, - jarFile.getName() + "." + CHECKSUM_TYPE); - if (! (checksumFile.exists() && checksumFile.canRead()) ) { - log("MISSING " +CHECKSUM_TYPE+ " checksum file for: " + jarFile.getPath(), Project.MSG_ERR); - log("EXPECTED " +CHECKSUM_TYPE+ " checksum file : " + checksumFile.getPath(), Project.MSG_ERR); - this.failures = true; - return false; - } else { - final String expectedChecksum = readChecksumFile(checksumFile); - try { - final MessageDigest md = MessageDigest.getInstance(CHECKSUM_TYPE); - byte[] buf = new byte[CHECKSUM_BUFFER_SIZE]; + if (!skipChecksum) { + if (!skipSnapshotsChecksum || !jarFile.getName().contains("-SNAPSHOT")) { + // validate the jar matches against our expected hash + final File checksumFile = new File(licenseDirectory, jarFile.getName() + + "." + CHECKSUM_TYPE); + if (!(checksumFile.exists() && checksumFile.canRead())) { + log("MISSING " + CHECKSUM_TYPE + " checksum file for: " + + jarFile.getPath(), Project.MSG_ERR); + log("EXPECTED " + CHECKSUM_TYPE + " checksum file : " + + checksumFile.getPath(), Project.MSG_ERR); + this.failures = true; + return false; + } else { + final String expectedChecksum = readChecksumFile(checksumFile); try { - FileInputStream fis = new FileInputStream(jarFile); + final MessageDigest md = MessageDigest.getInstance(CHECKSUM_TYPE); + byte[] buf = new byte[CHECKSUM_BUFFER_SIZE]; try { - DigestInputStream dis = new DigestInputStream(fis, md); + FileInputStream fis = new FileInputStream(jarFile); try { - while (dis.read(buf, 0, CHECKSUM_BUFFER_SIZE) != -1) { - // NOOP + DigestInputStream dis = new DigestInputStream(fis, md); + try { + while (dis.read(buf, 0, CHECKSUM_BUFFER_SIZE) != -1) { + // NOOP + } + } finally { + dis.close(); } } finally { - dis.close(); + fis.close(); } - } finally { - fis.close(); + } catch (IOException ioe) { + throw new BuildException("IO error computing checksum of file: " + + jarFile, ioe); } - } catch (IOException ioe) { - throw new BuildException("IO error computing checksum of file: " + jarFile, ioe); + final byte[] checksumBytes = md.digest(); + final String checksum = createChecksumString(checksumBytes); + if (!checksum.equals(expectedChecksum)) { + log("CHECKSUM FAILED for " + jarFile.getPath() + " (expected: \"" + + expectedChecksum + "\" was: \"" + checksum + "\")", + Project.MSG_ERR); + this.failures = true; + return false; + } + + } catch (NoSuchAlgorithmException ae) { + throw new BuildException("Digest type " + CHECKSUM_TYPE + + " not supported by your JVM", ae); } - final byte[] checksumBytes = md.digest(); - final String checksum = createChecksumString(checksumBytes); - if ( ! checksum.equals(expectedChecksum) ) { - log("CHECKSUM FAILED for " + jarFile.getPath() + - " (expected: \"" + expectedChecksum + "\" was: \"" + checksum + "\")", - Project.MSG_ERR); - this.failures = true; - return false; - } - - } catch (NoSuchAlgorithmException ae) { - throw new BuildException("Digest type " + CHECKSUM_TYPE + " not supported by your JVM", ae); } + } else if (skipSnapshotsChecksum) { + log("Skipping jar because it is a SNAPSHOT : " + + jarFile.getAbsolutePath(), Project.MSG_INFO); } - } else if (skipSnapshotsChecksum) { - log("Skipping jar because it is a SNAPSHOT : " + jarFile.getAbsolutePath(), Project.MSG_INFO); } // Get the expected license path base from the mapper and search for license files.