< 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 >