Repository: commons-lang Updated Branches: refs/heads/master c36895534 -> e21cb463c
[LANG-1427] Add API org.apache.commons.lang3.SystemUtils.isJavaVersionAtMost(JavaVersion) Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/a410aab6 Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/a410aab6 Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/a410aab6 Branch: refs/heads/master Commit: a410aab6515931489dc2594d4e0f0ecac2c66071 Parents: aae1a0a Author: Gary Gregory <garydgreg...@gmail.com> Authored: Mon Dec 10 17:48:06 2018 -0700 Committer: Gary Gregory <garydgreg...@gmail.com> Committed: Mon Dec 10 17:48:06 2018 -0700 ---------------------------------------------------------------------- src/changes/changes.xml | 1 + .../org/apache/commons/lang3/JavaVersion.java | 15 +++++ .../org/apache/commons/lang3/SystemUtils.java | 22 +++++-- .../apache/commons/lang3/SystemUtilsTest.java | 67 ++++++++++++++++---- 4 files changed, 86 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a410aab6/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index ec5555d..b1e02e6 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -51,6 +51,7 @@ The <action> type attribute can be add,update,fix,remove. <action issue="LANG-1415" type="update" dev="britter">Update Java Language requirement to 1.8</action> <action issue="LANG-1411" type="add" dev="britter" due-to="Alexander Tsvetkov">Add isEmpty method to ObjectUtils</action> <action issue="LANG-1422" type="add" dev="ggregory">Add null-safe StringUtils.valueOf(char[]) to delegate to String.valueOf(char[])</action> + <action issue="LANG-1427" type="add" dev="ggregory">Add API org.apache.commons.lang3.SystemUtils.isJavaVersionAtMost(JavaVersion)</action> </release> <release version="3.8.1" date="2018-09-19" description="This release is a bugfix for Restoring Bundle-SymbolicName in the MANIFEST.mf file."> http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a410aab6/src/main/java/org/apache/commons/lang3/JavaVersion.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/lang3/JavaVersion.java b/src/main/java/org/apache/commons/lang3/JavaVersion.java index 148c99e..aacd3a1 100644 --- a/src/main/java/org/apache/commons/lang3/JavaVersion.java +++ b/src/main/java/org/apache/commons/lang3/JavaVersion.java @@ -141,6 +141,21 @@ public enum JavaVersion { return this.value >= requiredVersion.value; } + //----------------------------------------------------------------------- + /** + * <p>Whether this version of Java is at most the version of Java passed in.</p> + * + * <p>For example:<br> + * {@code myVersion.atMost(JavaVersion.JAVA_1_4)}<p> + * + * @param requiredVersion the version to check against, not null + * @return true if this version is equal to or greater than the specified version + * @since 3.9 + */ + public boolean atMost(final JavaVersion requiredVersion) { + return this.value <= requiredVersion.value; + } + /** * Transforms the given string with a Java version number to the * corresponding constant of this enumeration class. This method is used http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a410aab6/src/main/java/org/apache/commons/lang3/SystemUtils.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/lang3/SystemUtils.java b/src/main/java/org/apache/commons/lang3/SystemUtils.java index a37229b..cc51f11 100644 --- a/src/main/java/org/apache/commons/lang3/SystemUtils.java +++ b/src/main/java/org/apache/commons/lang3/SystemUtils.java @@ -1679,12 +1679,6 @@ public class SystemUtils { * Is the Java version at least the requested version. * </p> * <p> - * Example input: - * </p> - * <ul> - * <li>{@code 1.2f} to test for Java 1.2</li> - * <li>{@code 1.31f} to test for Java 1.3.1</li> - * </ul> * * @param requiredVersion the required version, for example 1.31f * @return {@code true} if the actual version is equal or greater than the required version @@ -1695,6 +1689,22 @@ public class SystemUtils { /** * <p> + * Is the Java version at most the requested version. + * </p> + * <p> + * Example input: + * </p> + * + * @param requiredVersion the required version, for example 1.31f + * @return {@code true} if the actual version is equal or greater than the required version + * @since 3.9 + */ + public static boolean isJavaVersionAtMost(final JavaVersion requiredVersion) { + return JAVA_SPECIFICATION_VERSION_AS_ENUM.atMost(requiredVersion); + } + + /** + * <p> * Decides if the Java version matches. * </p> * <p> http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a410aab6/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java index e56d1b0..82dcd14 100644 --- a/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java @@ -421,19 +421,7 @@ public class SystemUtilsTest { @Test public void testIsJavaVersionAtLeast() { - if (SystemUtils.IS_JAVA_1_7) { - assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1)); - assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2)); - assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3)); - assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_4)); - assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_5)); - assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_6)); - assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7)); - assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_1_8)); - assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_9)); - assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_10)); - assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_11)); - } else if (SystemUtils.IS_JAVA_1_8) { + if (SystemUtils.IS_JAVA_1_8) { assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1)); assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2)); assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_3)); @@ -485,6 +473,59 @@ public class SystemUtilsTest { } @Test + public void testIsJavaVersionAtMost() { + if (SystemUtils.IS_JAVA_1_8) { + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_1_8)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_9)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11)); + } else if (SystemUtils.IS_JAVA_9) { + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_9)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11)); + } else if (SystemUtils.IS_JAVA_10) { + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_9)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_10)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11)); + } else if (SystemUtils.IS_JAVA_11) { + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_1)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_2)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_3)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_4)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_5)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_6)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_7)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_1_8)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_9)); + assertFalse(SystemUtils.isJavaVersionAtMost(JAVA_10)); + assertTrue(SystemUtils.isJavaVersionAtMost(JAVA_11)); + } + } + + @Test public void testOSMatchesName() { String osName = null; assertFalse(SystemUtils.isOSNameMatch(osName, "Windows"));