From edbf5486c2c49b3d7496d43523affc3e951f0e02 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 17 May 2018 22:05:11 -0700 Subject: [PATCH 1/3] Packaging: Move java version checker back to its own jar The java version checker requires being written with java 7 APIs. In order to use java 8 apis in other launcher utilities, this commit moves the java version checker back to its own jar. --- distribution/build.gradle | 1 + distribution/src/bin/elasticsearch-env | 2 +- distribution/src/bin/elasticsearch-env.bat | 2 +- .../tools/java-version-checker/build.gradle | 16 +++++++++++++++ .../tools/versionchecker}/JavaVersion.java | 8 ++++---- .../versionchecker}/JavaVersionChecker.java | 12 +++++++---- .../versionchecker}/SuppressForbidden.java | 5 +++-- distribution/tools/launchers/build.gradle | 20 ++++++------------- .../tools/launchers/JvmOptionsParser.java | 2 ++ .../tools/launchers/Launchers.java | 2 ++ settings.gradle | 1 + 11 files changed, 45 insertions(+), 26 deletions(-) create mode 100644 distribution/tools/java-version-checker/build.gradle rename distribution/tools/{launchers/src/main/java/org/elasticsearch/tools/launchers => java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker}/JavaVersion.java (88%) rename distribution/tools/{launchers/src/main/java/org/elasticsearch/tools/launchers => java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker}/JavaVersionChecker.java (87%) rename distribution/tools/{launchers/src/main/java/org/elasticsearch/tools/launchers => java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker}/SuppressForbidden.java (93%) diff --git a/distribution/build.gradle b/distribution/build.gradle index d2e2810bc7eec..b2686335bc6c0 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -232,6 +232,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) { from { project(':server').configurations.runtime } from { project(':libs:plugin-classloader').jar } // delay add tools using closures, since they have not yet been configured, so no jar task exists yet + from { project(':distribution:tools:java-version-checker').jar } from { project(':distribution:tools:launchers').jar } from { project(':distribution:tools:plugin-cli').jar } } diff --git a/distribution/src/bin/elasticsearch-env b/distribution/src/bin/elasticsearch-env index 9d58d88e7aaf1..2ca63bf4bfc02 100644 --- a/distribution/src/bin/elasticsearch-env +++ b/distribution/src/bin/elasticsearch-env @@ -63,7 +63,7 @@ if [ ! -z "$JAVA_OPTS" ]; then fi # check the Java version -"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JavaVersionChecker +"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.versionchecker.JavaVersionChecker export HOSTNAME=$HOSTNAME diff --git a/distribution/src/bin/elasticsearch-env.bat b/distribution/src/bin/elasticsearch-env.bat index 8bd5f24864e44..0a04c90bc3e9d 100644 --- a/distribution/src/bin/elasticsearch-env.bat +++ b/distribution/src/bin/elasticsearch-env.bat @@ -42,7 +42,7 @@ if defined JAVA_OPTS ( ) rem check the Java version -%JAVA% -cp "%ES_CLASSPATH%" "org.elasticsearch.tools.launchers.JavaVersionChecker" || exit /b 1 +%JAVA% -cp "%ES_CLASSPATH%" "org.elasticsearch.tools.versionchecker.JavaVersionChecker" || exit /b 1 set HOSTNAME=%COMPUTERNAME% diff --git a/distribution/tools/java-version-checker/build.gradle b/distribution/tools/java-version-checker/build.gradle new file mode 100644 index 0000000000000..b59fc38d16fb7 --- /dev/null +++ b/distribution/tools/java-version-checker/build.gradle @@ -0,0 +1,16 @@ +import org.elasticsearch.gradle.precommit.PrecommitTasks +import org.gradle.api.JavaVersion + +apply plugin: 'elasticsearch.build' + +targetCompatibility = JavaVersion.VERSION_1_7 + +// versionchecker do not depend on core so only JDK signatures should be checked +List jdkSignatures = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')] +forbiddenApisMain.signaturesURLs = jdkSignatures + +test.enabled = false +namingConventions.enabled = false +javadoc.enabled = false +loggerUsageCheck.enabled = false +jarHell.enabled = false diff --git a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JavaVersion.java b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersion.java similarity index 88% rename from distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JavaVersion.java rename to distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersion.java index 30ca7a4a2a7d0..aa991a691cc7c 100644 --- a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JavaVersion.java +++ b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersion.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.tools.launchers; +package org.elasticsearch.tools.versionchecker; import java.util.ArrayList; import java.util.List; @@ -25,8 +25,8 @@ public class JavaVersion { - static final List CURRENT = parse(System.getProperty("java.specification.version")); - static final List JAVA_8 = parse("1.8"); + public static final List CURRENT = parse(System.getProperty("java.specification.version")); + public static final List JAVA_8 = parse("1.8"); static List parse(final String value) { if (!value.matches("^0*[0-9]+(\\.[0-9]+)*$")) { @@ -41,7 +41,7 @@ static List parse(final String value) { return version; } - static int majorVersion(final List javaVersion) { + public static int majorVersion(final List javaVersion) { Objects.requireNonNull(javaVersion); if (javaVersion.get(0) > 1) { return javaVersion.get(0); diff --git a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JavaVersionChecker.java b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersionChecker.java similarity index 87% rename from distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JavaVersionChecker.java rename to distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersionChecker.java index ed632d060a577..2fe6f28cfef99 100644 --- a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JavaVersionChecker.java +++ b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersionChecker.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.tools.launchers; +package org.elasticsearch.tools.versionchecker; import java.util.Arrays; import java.util.Locale; @@ -45,10 +45,14 @@ public static void main(final String[] args) { Locale.ROOT, "the minimum required Java version is 8; your Java version from [%s] does not meet this requirement", System.getProperty("java.home")); - Launchers.errPrintln(message); - Launchers.exit(1); + fail(message); } - Launchers.exit(0); + } + + @SuppressForbidden(reason = "need to print error and exit") + private static void fail(String message) { + System.err.println(message); + System.exit(1); } } diff --git a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/SuppressForbidden.java b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/SuppressForbidden.java similarity index 93% rename from distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/SuppressForbidden.java rename to distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/SuppressForbidden.java index 9e44c1497b781..61acff436552e 100644 --- a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/SuppressForbidden.java +++ b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/SuppressForbidden.java @@ -17,17 +17,18 @@ * under the License. */ -package org.elasticsearch.tools.launchers; +package org.elasticsearch.tools.versionchecker; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; + /** * Annotation to suppress forbidden-apis errors inside a whole class, a method, or a field. */ @Retention(RetentionPolicy.CLASS) @Target({ ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD, ElementType.TYPE }) -@interface SuppressForbidden { +public @interface SuppressForbidden { String reason(); } diff --git a/distribution/tools/launchers/build.gradle b/distribution/tools/launchers/build.gradle index 27e8712ffcbe2..ba93ff23f592c 100644 --- a/distribution/tools/launchers/build.gradle +++ b/distribution/tools/launchers/build.gradle @@ -21,14 +21,9 @@ import org.elasticsearch.gradle.precommit.PrecommitTasks import org.gradle.api.JavaVersion apply plugin: 'elasticsearch.build' -apply plugin: 'ru.vyarus.animalsniffer' - -sourceCompatibility = JavaVersion.VERSION_1_7 -targetCompatibility = JavaVersion.VERSION_1_7 dependencies { - signature "org.codehaus.mojo.signature:java17:1.0@signature" - + compile parent.project('java-version-checker') testCompile "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${versions.randomizedrunner}" testCompile "junit:junit:${versions.junit}" testCompile "org.hamcrest:hamcrest-all:${versions.hamcrest}" @@ -36,13 +31,10 @@ dependencies { archivesBaseName = 'elasticsearch-launchers' -// launchers do not depend on core so only JDK signatures should be checked -forbiddenApisMain { - signaturesURLs = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')] -} -forbiddenApisTest { - signaturesURLs = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')] -} +// versionchecker do not depend on core so only JDK signatures should be checked +List jdkSignatures = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')] +forbiddenApisMain.signaturesURLs = jdkSignatures +forbiddenApisTest.signaturesURLs = jdkSignatures namingConventions { testClass = 'org.elasticsearch.tools.launchers.LaunchersTestCase' @@ -51,4 +43,4 @@ namingConventions { javadoc.enabled = false loggerUsageCheck.enabled = false -jarHell.enabled=false +jarHell.enabled = false diff --git a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JvmOptionsParser.java b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JvmOptionsParser.java index 8cd401e53229d..b7c914f6e69f9 100644 --- a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JvmOptionsParser.java +++ b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JvmOptionsParser.java @@ -38,6 +38,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.elasticsearch.tools.versionchecker.JavaVersion; + /** * Parses JVM options from a file and prints a single line with all JVM options to standard output. */ diff --git a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/Launchers.java b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/Launchers.java index 349227c2b6d1b..896ef431dca2a 100644 --- a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/Launchers.java +++ b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/Launchers.java @@ -19,6 +19,8 @@ package org.elasticsearch.tools.launchers; +import org.elasticsearch.tools.versionchecker.SuppressForbidden; + /** * Utility methods for launchers. */ diff --git a/settings.gradle b/settings.gradle index ee88f9bd0ed37..cfb0c99ef1fdf 100644 --- a/settings.gradle +++ b/settings.gradle @@ -28,6 +28,7 @@ List projects = [ 'distribution:bwc:staged-minor-snapshot', 'distribution:bwc:next-bugfix-snapshot', 'distribution:bwc:maintenance-bugfix-snapshot', + 'distribution:tools:java-version-checker', 'distribution:tools:launchers', 'distribution:tools:plugin-cli', 'server', From 47d28903187ead32609f3bb866015f4ad4f37696 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Sun, 10 Jun 2018 15:26:09 -0400 Subject: [PATCH 2/3] Naming --- distribution/src/bin/elasticsearch-env | 2 +- distribution/src/bin/elasticsearch-env.bat | 2 +- distribution/tools/java-version-checker/build.gradle | 2 +- .../{versionchecker => java_version_checker}/JavaVersion.java | 2 +- .../JavaVersionChecker.java | 2 +- .../SuppressForbidden.java | 2 +- distribution/tools/launchers/build.gradle | 2 +- .../org/elasticsearch/tools/launchers/JvmOptionsParser.java | 2 +- .../main/java/org/elasticsearch/tools/launchers/Launchers.java | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) rename distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/{versionchecker => java_version_checker}/JavaVersion.java (97%) rename distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/{versionchecker => java_version_checker}/JavaVersionChecker.java (97%) rename distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/{versionchecker => java_version_checker}/SuppressForbidden.java (95%) diff --git a/distribution/src/bin/elasticsearch-env b/distribution/src/bin/elasticsearch-env index 2ca63bf4bfc02..cc16f710345e4 100644 --- a/distribution/src/bin/elasticsearch-env +++ b/distribution/src/bin/elasticsearch-env @@ -63,7 +63,7 @@ if [ ! -z "$JAVA_OPTS" ]; then fi # check the Java version -"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.versionchecker.JavaVersionChecker +"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.java_version_checker.JavaVersionChecker export HOSTNAME=$HOSTNAME diff --git a/distribution/src/bin/elasticsearch-env.bat b/distribution/src/bin/elasticsearch-env.bat index 0a04c90bc3e9d..b990767092092 100644 --- a/distribution/src/bin/elasticsearch-env.bat +++ b/distribution/src/bin/elasticsearch-env.bat @@ -42,7 +42,7 @@ if defined JAVA_OPTS ( ) rem check the Java version -%JAVA% -cp "%ES_CLASSPATH%" "org.elasticsearch.tools.versionchecker.JavaVersionChecker" || exit /b 1 +%JAVA% -cp "%ES_CLASSPATH%" "org.elasticsearch.tools.java_version_checker.JavaVersionChecker" || exit /b 1 set HOSTNAME=%COMPUTERNAME% diff --git a/distribution/tools/java-version-checker/build.gradle b/distribution/tools/java-version-checker/build.gradle index b59fc38d16fb7..85a3c49f3a176 100644 --- a/distribution/tools/java-version-checker/build.gradle +++ b/distribution/tools/java-version-checker/build.gradle @@ -5,7 +5,7 @@ apply plugin: 'elasticsearch.build' targetCompatibility = JavaVersion.VERSION_1_7 -// versionchecker do not depend on core so only JDK signatures should be checked +// java_version_checker do not depend on core so only JDK signatures should be checked List jdkSignatures = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')] forbiddenApisMain.signaturesURLs = jdkSignatures diff --git a/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersion.java b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersion.java similarity index 97% rename from distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersion.java rename to distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersion.java index aa991a691cc7c..a06579d84254a 100644 --- a/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersion.java +++ b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersion.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.tools.versionchecker; +package org.elasticsearch.tools.java_version_checker; import java.util.ArrayList; import java.util.List; diff --git a/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersionChecker.java b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java similarity index 97% rename from distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersionChecker.java rename to distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java index 2fe6f28cfef99..19c943a3a9086 100644 --- a/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/JavaVersionChecker.java +++ b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.tools.versionchecker; +package org.elasticsearch.tools.java_version_checker; import java.util.Arrays; import java.util.Locale; diff --git a/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/SuppressForbidden.java b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/SuppressForbidden.java similarity index 95% rename from distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/SuppressForbidden.java rename to distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/SuppressForbidden.java index 61acff436552e..d1299cbff9511 100644 --- a/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/versionchecker/SuppressForbidden.java +++ b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/SuppressForbidden.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.tools.versionchecker; +package org.elasticsearch.tools.java_version_checker; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/distribution/tools/launchers/build.gradle b/distribution/tools/launchers/build.gradle index ba93ff23f592c..a774691b2eb17 100644 --- a/distribution/tools/launchers/build.gradle +++ b/distribution/tools/launchers/build.gradle @@ -31,7 +31,7 @@ dependencies { archivesBaseName = 'elasticsearch-launchers' -// versionchecker do not depend on core so only JDK signatures should be checked +// java_version_checker do not depend on core so only JDK signatures should be checked List jdkSignatures = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')] forbiddenApisMain.signaturesURLs = jdkSignatures forbiddenApisTest.signaturesURLs = jdkSignatures diff --git a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JvmOptionsParser.java b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JvmOptionsParser.java index b7c914f6e69f9..7f612132d8c59 100644 --- a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JvmOptionsParser.java +++ b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/JvmOptionsParser.java @@ -38,7 +38,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.elasticsearch.tools.versionchecker.JavaVersion; +import org.elasticsearch.tools.java_version_checker.JavaVersion; /** * Parses JVM options from a file and prints a single line with all JVM options to standard output. diff --git a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/Launchers.java b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/Launchers.java index 896ef431dca2a..6c9a1ef9473c3 100644 --- a/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/Launchers.java +++ b/distribution/tools/launchers/src/main/java/org/elasticsearch/tools/launchers/Launchers.java @@ -19,7 +19,7 @@ package org.elasticsearch.tools.launchers; -import org.elasticsearch.tools.versionchecker.SuppressForbidden; +import org.elasticsearch.tools.java_version_checker.SuppressForbidden; /** * Utility methods for launchers. From cb077c1c2cf8b13e52fea86d814efc3185780f39 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Sun, 10 Jun 2018 15:29:44 -0400 Subject: [PATCH 3/3] Nit --- .../tools/java-version-checker/build.gradle | 4 +--- .../JavaVersionChecker.java | 24 +++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/distribution/tools/java-version-checker/build.gradle b/distribution/tools/java-version-checker/build.gradle index 85a3c49f3a176..ad9b56fec0502 100644 --- a/distribution/tools/java-version-checker/build.gradle +++ b/distribution/tools/java-version-checker/build.gradle @@ -1,13 +1,11 @@ import org.elasticsearch.gradle.precommit.PrecommitTasks -import org.gradle.api.JavaVersion apply plugin: 'elasticsearch.build' targetCompatibility = JavaVersion.VERSION_1_7 // java_version_checker do not depend on core so only JDK signatures should be checked -List jdkSignatures = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')] -forbiddenApisMain.signaturesURLs = jdkSignatures +forbiddenApisMain.signaturesURLs = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')] test.enabled = false namingConventions.enabled = false diff --git a/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java index 19c943a3a9086..b61c5856084ff 100644 --- a/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java +++ b/distribution/tools/java-version-checker/src/main/java/org/elasticsearch/tools/java_version_checker/JavaVersionChecker.java @@ -45,14 +45,30 @@ public static void main(final String[] args) { Locale.ROOT, "the minimum required Java version is 8; your Java version from [%s] does not meet this requirement", System.getProperty("java.home")); - fail(message); + errPrintln(message); + exit(1); } + exit(0); } - @SuppressForbidden(reason = "need to print error and exit") - private static void fail(String message) { + /** + * Prints a string and terminates the line on standard error. + * + * @param message the message to print + */ + @SuppressForbidden(reason = "System#err") + static void errPrintln(final String message) { System.err.println(message); - System.exit(1); + } + + /** + * Exit the VM with the specified status. + * + * @param status the status + */ + @SuppressForbidden(reason = "System#exit") + static void exit(final int status) { + System.exit(status); } }