You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2017/11/03 17:33:37 UTC

[lang] [LANG-1365] Fix NullPointerException in isJavaVersionAtLeast on Java 10, add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10.

Repository: commons-lang
Updated Branches:
  refs/heads/master a26c66a8e -> a618b844c


[LANG-1365] Fix NullPointerException in isJavaVersionAtLeast on Java 10,
add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10.

Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/a618b844
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/a618b844
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/a618b844

Branch: refs/heads/master
Commit: a618b844c5a261ced37385ab3947de6e215d46f7
Parents: a26c66a
Author: Gary Gregory <gg...@apache.org>
Authored: Fri Nov 3 11:33:34 2017 -0600
Committer: Gary Gregory <gg...@apache.org>
Committed: Fri Nov 3 11:33:34 2017 -0600

----------------------------------------------------------------------
 src/changes/changes.xml                         |  3 +-
 .../org/apache/commons/lang3/JavaVersion.java   | 11 +++++++
 .../org/apache/commons/lang3/SystemUtils.java   | 12 +++++++
 .../apache/commons/lang3/JavaVersionTest.java   |  2 ++
 .../apache/commons/lang3/SystemUtilsTest.java   | 33 +++++++++++++++++++-
 5 files changed, 59 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a618b844/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index bea599d..cbc17a0 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -45,7 +45,8 @@ The <action> type attribute can be add,update,fix,remove.
   </properties>
   <body>
 
-  <release version="3.7" date="2017-MM-DD" description="New features and bug fixes. Requires Java 7.">
+  <release version="3.7" date="2017-MM-DD" description="New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.">
+    <action issue="LANG-1365" type="fix" dev="ggregory" due-to="Gary Gregory">Fix NullPointerException in isJavaVersionAtLeast on Java 10, add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10</action>
     <action issue="LANG-1358" type="update" dev="pschumacher" due-to="Stephane Landelle">Improve StringUtils#replace throughput</action>
     <action issue="LANG-1355" type="add" dev="ggregory" due-to="Chas Honton">TimeZone.getTimeZone() in FastDateParser causes resource contention (PR #296.)</action>
     <action issue="LANG-1348" type="fix" dev="pschumacher" due-to="mbusso">StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf</action>

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a618b844/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 e464043..666624d 100644
--- a/src/main/java/org/apache/commons/lang3/JavaVersion.java
+++ b/src/main/java/org/apache/commons/lang3/JavaVersion.java
@@ -82,10 +82,19 @@ public enum JavaVersion {
 
     /**
      * Java 9
+     * 
+     * @since 3.5
      */
     JAVA_9(9.0f, "9"),
 
     /**
+     * Java 10
+     * 
+     * @since 3.7
+     */
+    JAVA_10(10.0f, "10"),
+
+    /**
      * The most recent java version. Mainly introduced to avoid to break when a new version of Java is used.
      */
     JAVA_RECENT(maxVersion(), Float.toString(maxVersion()));
@@ -168,6 +177,8 @@ public enum JavaVersion {
             return JAVA_1_8;
         } else if ("9".equals(nom)) {
             return JAVA_9;
+        } else if ("10".equals(nom)) {
+            return JAVA_10;
         }
         if (nom == null) {
             return null;

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a618b844/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 50d260b..74a90fc 100644
--- a/src/main/java/org/apache/commons/lang3/SystemUtils.java
+++ b/src/main/java/org/apache/commons/lang3/SystemUtils.java
@@ -973,6 +973,18 @@ public class SystemUtils {
      */
     public static final boolean IS_JAVA_9 = getJavaVersionMatches("9");
 
+    /**
+     * <p>
+     * Is {@code true} if this is Java version 10 (also 10.x versions).
+     * </p>
+     * <p>
+     * The field will return {@code false} if {@link #JAVA_VERSION} is {@code null}.
+     * </p>
+     *
+     * @since 3.7
+     */
+    public static final boolean IS_JAVA_10 = getJavaVersionMatches("10");
+
     // Operating system checks
     // -----------------------------------------------------------------------
     // These MUST be declared after those above as they depend on the

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a618b844/src/test/java/org/apache/commons/lang3/JavaVersionTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/JavaVersionTest.java b/src/test/java/org/apache/commons/lang3/JavaVersionTest.java
index 2e8c2d5..4d4202c 100644
--- a/src/test/java/org/apache/commons/lang3/JavaVersionTest.java
+++ b/src/test/java/org/apache/commons/lang3/JavaVersionTest.java
@@ -34,6 +34,7 @@ import static org.apache.commons.lang3.JavaVersion.JAVA_1_6;
 import static org.apache.commons.lang3.JavaVersion.JAVA_1_7;
 import static org.apache.commons.lang3.JavaVersion.JAVA_1_8;
 import static org.apache.commons.lang3.JavaVersion.JAVA_9;
+import static org.apache.commons.lang3.JavaVersion.JAVA_10;
 import static org.apache.commons.lang3.JavaVersion.get;
 import static org.apache.commons.lang3.JavaVersion.getJavaVersion;
 
@@ -54,6 +55,7 @@ public class JavaVersionTest {
         assertEquals("1.7 failed", JAVA_1_7, get("1.7"));
         assertEquals("1.8 failed", JAVA_1_8, get("1.8"));
         assertEquals("9 failed", JAVA_9, get("9"));
+        assertEquals("10 failed", JAVA_10, get("10"));
         assertEquals("1.10 failed", JAVA_RECENT, get("1.10"));
         // assertNull("2.10 unexpectedly worked", get("2.10"));
         assertEquals("Wrapper method failed", get("1.5"), getJavaVersion("1.5"));

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a618b844/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 05ae457..b97cb81 100644
--- a/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/SystemUtilsTest.java
@@ -28,6 +28,7 @@ import static org.apache.commons.lang3.JavaVersion.JAVA_1_6;
 import static org.apache.commons.lang3.JavaVersion.JAVA_1_7;
 import static org.apache.commons.lang3.JavaVersion.JAVA_1_8;
 import static org.apache.commons.lang3.JavaVersion.JAVA_9;
+import static org.apache.commons.lang3.JavaVersion.JAVA_10;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -119,6 +120,7 @@ public class SystemUtilsTest {
             assertFalse(SystemUtils.IS_JAVA_1_8);
             assertFalse(SystemUtils.IS_JAVA_1_9);
             assertFalse(SystemUtils.IS_JAVA_9);
+            assertFalse(SystemUtils.IS_JAVA_10);
         } else if (javaVersion.startsWith("1.7")) {
             assertFalse(SystemUtils.IS_JAVA_1_1);
             assertFalse(SystemUtils.IS_JAVA_1_2);
@@ -130,6 +132,7 @@ public class SystemUtilsTest {
             assertFalse(SystemUtils.IS_JAVA_1_8);
             assertFalse(SystemUtils.IS_JAVA_1_9);
             assertFalse(SystemUtils.IS_JAVA_9);
+            assertFalse(SystemUtils.IS_JAVA_10);
         } else if (javaVersion.startsWith("1.8")) {
             assertFalse(SystemUtils.IS_JAVA_1_1);
             assertFalse(SystemUtils.IS_JAVA_1_2);
@@ -141,6 +144,7 @@ public class SystemUtilsTest {
             assertTrue(SystemUtils.IS_JAVA_1_8);
             assertFalse(SystemUtils.IS_JAVA_1_9);
             assertFalse(SystemUtils.IS_JAVA_9);
+            assertFalse(SystemUtils.IS_JAVA_10);
         } else if (javaVersion.startsWith("9")) {
             assertFalse(SystemUtils.IS_JAVA_1_1);
             assertFalse(SystemUtils.IS_JAVA_1_2);
@@ -152,8 +156,21 @@ public class SystemUtilsTest {
             assertFalse(SystemUtils.IS_JAVA_1_8);
             assertTrue(SystemUtils.IS_JAVA_1_9);
             assertTrue(SystemUtils.IS_JAVA_9);
+            assertFalse(SystemUtils.IS_JAVA_10);
+        } else if (javaVersion.startsWith("10")) {
+            assertFalse(SystemUtils.IS_JAVA_1_1);
+            assertFalse(SystemUtils.IS_JAVA_1_2);
+            assertFalse(SystemUtils.IS_JAVA_1_3);
+            assertFalse(SystemUtils.IS_JAVA_1_4);
+            assertFalse(SystemUtils.IS_JAVA_1_5);
+            assertFalse(SystemUtils.IS_JAVA_1_6);
+            assertFalse(SystemUtils.IS_JAVA_1_7);
+            assertFalse(SystemUtils.IS_JAVA_1_8);
+            assertFalse(SystemUtils.IS_JAVA_1_9);
+            assertFalse(SystemUtils.IS_JAVA_9);
+            assertTrue(SystemUtils.IS_JAVA_10);
         } else {
-            System.out.println("Can't test IS_JAVA value: "+javaVersion);
+            System.out.println("Can't test IS_JAVA value: " + javaVersion);
         }
     }
 
@@ -390,6 +407,7 @@ public class SystemUtilsTest {
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_9));
+            assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_10));
         } else if (SystemUtils.IS_JAVA_1_8) {
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
@@ -400,6 +418,7 @@ public class SystemUtilsTest {
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
             assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_9));
+            assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_10));
         } else if (SystemUtils.IS_JAVA_9) {
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_1));
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_2));
@@ -410,6 +429,18 @@ public class SystemUtilsTest {
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_7));
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
             assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_9));
+            assertFalse(SystemUtils.isJavaVersionAtLeast(JAVA_10));
+        } else if (SystemUtils.IS_JAVA_10) {
+            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));
+            assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_1_8));
+            assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_9));
+            assertTrue(SystemUtils.isJavaVersionAtLeast(JAVA_10));
         }
     }