diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/JavaVersion.java b/jetty-util/src/main/java/org/eclipse/jetty/util/JavaVersion.java index ae9201906c3..69117e6ddae 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/JavaVersion.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/JavaVersion.java @@ -34,23 +34,20 @@ public class JavaVersion public static final String JAVA_TARGET_PLATFORM = "org.eclipse.jetty.javaTargetPlatform"; /** Regex for Java version numbers */ - private static final String VNUM = "(?[1-9][0-9]*(?:(?:\\.0)*\\.[0-9]+)*)"; - private static final String UPDATE = "(?:(?_)(?[0-9]+))?"; - private static final String PRE = "(?:-(?
[a-zA-Z0-9]+))?";
-    private static final String BUILD = "(?:(?\\+)(?[0-9]+))?";
-    private static final String OPT = "(?:-(?[-a-zA-Z0-9.~]+))?";
-
-    private static final String VSTR_FORMAT = VNUM + UPDATE + PRE + BUILD + OPT;
+    private static final String VSTR_FORMAT = "(?[1-9][0-9]*(?:(?:\\.0)*\\.[0-9]+)*).*";
 
     static final Pattern VSTR_PATTERN = Pattern.compile(VSTR_FORMAT);
     
-    public static final JavaVersion VERSION = parse(System.getProperty("java.runtime.version",System.getProperty("java.version")));
-
+    public static final JavaVersion VERSION = parse(System.getProperty("java.runtime.version",System.getProperty("java.version","1.8")));
+    
     public static JavaVersion parse(String v) 
     {
         Matcher m = VSTR_PATTERN.matcher(v);
-        if (!m.matches())
-            throw new IllegalArgumentException("Invalid version string: '" + v + "'");
+        if (!m.matches() || m.group("VNUM")==null)
+        {
+            System.err.println("ERROR: Invalid version string: '" + v + "'");
+            return new JavaVersion(v+"-UNKNOWN",8,1,8,0);
+        }
         
         // $VNUM is a dot-separated list of integers of arbitrary length
         String[] split = m.group("VNUM").split("\\.");
@@ -58,72 +55,12 @@ public class JavaVersion
         for (int i = 0; i < split.length; i++)
             version[i] = Integer.parseInt(split[i]);
 
-        if (m.group("UNDERSCORE")!=null)
-        {
-            return new JavaVersion(
-                    v,
-                    (version[0]>=9 || version.length==1)?version[0]:version[1],
-                    version[0],
-                    version.length>1?version[1]:0,
-                    version.length>2?version[2]:0,
-                    Integer.parseInt(m.group("UPDATE")),
-                    suffix(version,m.group("PRE"),m.group("OPT"))
-                    );
-        }
-        
-        if (m.group("PLUS")!=null)
-        {
-            return new JavaVersion(
-                    v,
-                    (version[0]>=9 || version.length==1)?version[0]:version[1],
-                    version[0],
-                    version.length>1?version[1]:0,
-                    version.length>2?version[2]:0,
-                    Integer.parseInt(m.group("BUILD")),
-                    suffix(version,m.group("PRE"),m.group("OPT"))
-                    );
-        }
-
         return new JavaVersion(
                 v,
                 (version[0]>=9 || version.length==1)?version[0]:version[1],
                 version[0],
                 version.length>1?version[1]:0,
-                version.length>2?version[2]:0,
-                0,
-                suffix(version,m.group("PRE"),m.group("OPT"))
-                );
-        
-    }
-
-    private static String suffix(int[] version, String pre, String opt)
-    {
-        StringBuilder buf = new StringBuilder();
-        for (int i=3;i3)
-                buf.append(".");
-            buf.append(version[i]);
-        }
-               
-        if (pre!=null)
-        {
-            if (buf.length()>0)
-                buf.append('-');
-            buf.append(pre);
-        }
-        
-        if (opt!=null)
-        {
-            if (buf.length()>0)
-                buf.append('-');
-            buf.append(opt);
-        }
-        
-        if (buf.length()==0)
-            return null;
-        
-        return buf.toString();
+                version.length>2?version[2]:0);
     }
     
     private final String version;
@@ -131,18 +68,14 @@ public class JavaVersion
     private final int major;
     private final int minor;
     private final int micro;
-    private final int update;
-    private final String suffix;
 
-    private JavaVersion(String version, int platform, int major, int minor, int micro, int update, String suffix)
+    private JavaVersion(String version, int platform, int major, int minor, int micro)
     {
         this.version = version;
         this.platform = platform;
         this.major = major;
         this.minor = minor;
         this.micro = micro;
-        this.update = update;
-        this.suffix = suffix;
     }
 
     /**
@@ -198,9 +131,10 @@ public class JavaVersion
      *
      * @return the update number version
      */
+    @Deprecated
     public int getUpdate()
     {
-        return update;
+        return 0;
     }
 
     /**
@@ -209,9 +143,10 @@ public class JavaVersion
      *
      * @return the remaining string after the version numbers
      */
+    @Deprecated
     public String getSuffix()
     {
-        return suffix;
+        return null;
     }
 
     @Override
diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/JavaVersionTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/JavaVersionTest.java
index 3c47bf4a353..bf1640c812e 100644
--- a/jetty-util/src/test/java/org/eclipse/jetty/util/JavaVersionTest.java
+++ b/jetty-util/src/test/java/org/eclipse/jetty/util/JavaVersionTest.java
@@ -19,7 +19,6 @@
 package org.eclipse.jetty.util;
 
 import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
 import static org.junit.Assert.assertThat;
 
 import org.junit.Test;
@@ -33,132 +32,120 @@ public class JavaVersionTest
     public void test9()
     {
         JavaVersion version = JavaVersion.parse("9.0.1");
+        assertThat(version.toString(),is("9.0.1"));
         assertThat(version.getPlatform(),is(9));
         assertThat(version.getMajor(),is(9));
         assertThat(version.getMinor(),is(0));
         assertThat(version.getMicro(),is(1));
-        assertThat(version.getUpdate(),is(0));
-        assertThat(version.getSuffix(),nullValue());
     }
     
     @Test
     public void test9nano()
     {
         JavaVersion version = JavaVersion.parse("9.0.1.3");
+        assertThat(version.toString(),is("9.0.1.3"));
         assertThat(version.getPlatform(),is(9));
         assertThat(version.getMajor(),is(9));
         assertThat(version.getMinor(),is(0));
         assertThat(version.getMicro(),is(1));
-        assertThat(version.getUpdate(),is(0));
-        assertThat(version.getSuffix(),is("3"));
     }
     
     @Test
     public void test9build()
     {
         JavaVersion version = JavaVersion.parse("9.0.1+11");
+        assertThat(version.toString(),is("9.0.1+11"));
         assertThat(version.getPlatform(),is(9));
         assertThat(version.getMajor(),is(9));
         assertThat(version.getMinor(),is(0));
         assertThat(version.getMicro(),is(1));
-        assertThat(version.getUpdate(),is(11));
-        assertThat(version.getSuffix(),nullValue());
     }
     
     @Test
     public void test9all()
     {
         JavaVersion version = JavaVersion.parse("9.0.1-ea+11-b01");
+        assertThat(version.toString(),is("9.0.1-ea+11-b01"));
         assertThat(version.getPlatform(),is(9));
         assertThat(version.getMajor(),is(9));
         assertThat(version.getMinor(),is(0));
         assertThat(version.getMicro(),is(1));
-        assertThat(version.getUpdate(),is(11));
-        assertThat(version.getSuffix(),is("ea-b01"));
     }
     
     @Test
     public void test9yuck()
     {
         JavaVersion version = JavaVersion.parse("9.0.1.2.3-ea+11-b01");
+        assertThat(version.toString(),is("9.0.1.2.3-ea+11-b01"));
         assertThat(version.getPlatform(),is(9));
         assertThat(version.getMajor(),is(9));
         assertThat(version.getMinor(),is(0));
         assertThat(version.getMicro(),is(1));
-        assertThat(version.getUpdate(),is(11));
-        assertThat(version.getSuffix(),is("2.3-ea-b01"));
     }
     
     @Test
     public void test10ea()
     {
         JavaVersion version = JavaVersion.parse("10-ea");
+        assertThat(version.toString(),is("10-ea"));
         assertThat(version.getPlatform(),is(10));
         assertThat(version.getMajor(),is(10));
         assertThat(version.getMinor(),is(0));
         assertThat(version.getMicro(),is(0));
-        assertThat(version.getUpdate(),is(0));
-        assertThat(version.getSuffix(),is("ea"));
     }
     
     @Test
     public void test8()
     {
         JavaVersion version = JavaVersion.parse("1.8.0_152");
+        assertThat(version.toString(),is("1.8.0_152"));
         assertThat(version.getPlatform(),is(8));
         assertThat(version.getMajor(),is(1));
         assertThat(version.getMinor(),is(8));
         assertThat(version.getMicro(),is(0));
-        assertThat(version.getUpdate(),is(152));
-        assertThat(version.getSuffix(),nullValue()); 
     }
 
     @Test
     public void test8ea()
     {
         JavaVersion version = JavaVersion.parse("1.8.1_03-ea");
+        assertThat(version.toString(),is("1.8.1_03-ea"));
         assertThat(version.getPlatform(),is(8));
         assertThat(version.getMajor(),is(1));
         assertThat(version.getMinor(),is(8));
         assertThat(version.getMicro(),is(1));
-        assertThat(version.getUpdate(),is(3));
-        assertThat(version.getSuffix(),is("ea")); 
     }
     
     @Test
     public void test3eaBuild()
     {
         JavaVersion version = JavaVersion.parse("1.3.1_05-ea-b01");
+        assertThat(version.toString(),is("1.3.1_05-ea-b01"));
         assertThat(version.getPlatform(),is(3));
         assertThat(version.getMajor(),is(1));
         assertThat(version.getMinor(),is(3));
         assertThat(version.getMicro(),is(1));
-        assertThat(version.getUpdate(),is(5));
-        assertThat(version.getSuffix(),is("ea-b01")); 
     }
     
     @Test
     public void testUbuntu()
     {
         JavaVersion version = JavaVersion.parse("9-Ubuntu+0-9b181-4");
+        assertThat(version.toString(),is("9-Ubuntu+0-9b181-4"));
         assertThat(version.getPlatform(),is(9));
         assertThat(version.getMajor(),is(9));
         assertThat(version.getMinor(),is(0));
         assertThat(version.getMicro(),is(0));
-        assertThat(version.getUpdate(),is(0));
-        assertThat(version.getSuffix(),is("Ubuntu-9b181-4")); 
     }
     
     @Test
     public void testUbuntu8()
     {
-        JavaVersion version = JavaVersion.parse("1.8.0_151-8u151-b12-1~deb9u1-b12");
+        JavaVersion version = JavaVersion.parse("1.8.0_151-8u151-b12-1~deb9u1-b12");assertThat(version.toString(),is("1.8.0_151-8u151-b12-1~deb9u1-b12"));
         assertThat(version.getPlatform(),is(8));
         assertThat(version.getMajor(),is(1));
         assertThat(version.getMinor(),is(8));
         assertThat(version.getMicro(),is(0));
-        assertThat(version.getUpdate(),is(151));
-        assertThat(version.getSuffix(),is("8u151-b12-1~deb9u1-b12")); 
     }
     
 }