< prev index next >

src/java.base/share/classes/java/lang/VersionProps.java.template

Print this page
rev 14912 : 8160564: TEST: Add a test to check the implementation of VersionProps.versionNumbers()
Reviewed-by: mchung, redestad

@@ -65,25 +65,41 @@
         System.setProperty("java.version", java_version);
         System.setProperty("java.runtime.version", java_runtime_version);
         System.setProperty("java.runtime.name", java_runtime_name);
     }
 
-    static List<Integer> versionNumbers() {
+    private static int parseVersionNumber(String versionNumber, int prevIndex, int index) {
+        if (index - prevIndex > 1 &&
+            Character.digit(versionNumber.charAt(prevIndex), 10) <= 0)
+            throw new IllegalArgumentException("Leading zeros not supported (" +
+                    versionNumber.substring(prevIndex, index) + ")");
+        return Integer.parseInt(versionNumber, prevIndex, index, 10);
+    }
+
+    // This method is reflectively used by regression tests.
+    static List<Integer> parseVersionNumbers(String versionNumber) {
         List<Integer> versionNumbers = new ArrayList<>(4);
         int prevIndex = 0;
-        int index = VERSION_NUMBER.indexOf('.');
+        int index = versionNumber.indexOf('.');
         while (index > 0) {
-            versionNumbers.add(
-                    Integer.parseInt(VERSION_NUMBER, prevIndex, index, 10));
+            versionNumbers.add(parseVersionNumber(versionNumber, prevIndex, index));
             prevIndex = index + 1; // Skip the period
-            index = VERSION_NUMBER.indexOf('.', prevIndex);
+            index = versionNumber.indexOf('.', prevIndex);
         }
-        versionNumbers.add(Integer.parseInt(VERSION_NUMBER,
-                prevIndex, VERSION_NUMBER.length(), 10));
+        versionNumbers.add(parseVersionNumber(versionNumber, prevIndex, versionNumber.length()));
+
+        if (versionNumbers.get(0) == 0 || versionNumbers.get(versionNumbers.size() - 1) == 0)
+            throw new IllegalArgumentException("Leading or trailing zeros not supported (" +
+                    versionNumbers + ")");
+
         return versionNumbers;
     }
 
+    static List<Integer> versionNumbers() {
+        return parseVersionNumbers(VERSION_NUMBER);
+    }
+
     static Optional<String> pre() {
         return optionalOf(VERSION_PRE);
     }
 
     static Optional<Integer> build() {
< prev index next >