< 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


  50 
  51     private static final String VERSION_BUILD =
  52         "@@VERSION_BUILD@@";
  53 
  54     private static final String VERSION_PRE =
  55         "@@VERSION_PRE@@";
  56 
  57     private static final String VERSION_OPT =
  58         "@@VERSION_OPT@@";
  59 
  60     static {
  61         init();
  62     }
  63 
  64     public static void init() {
  65         System.setProperty("java.version", java_version);
  66         System.setProperty("java.runtime.version", java_runtime_version);
  67         System.setProperty("java.runtime.name", java_runtime_name);
  68     }
  69 
  70     static List<Integer> versionNumbers() {










  71         List<Integer> versionNumbers = new ArrayList<>(4);
  72         int prevIndex = 0;
  73         int index = VERSION_NUMBER.indexOf('.');
  74         while (index > 0) {

  75             versionNumbers.add(
  76                     Integer.parseInt(VERSION_NUMBER, prevIndex, index, 10));
  77             prevIndex = index + 1; // Skip the period
  78             index = VERSION_NUMBER.indexOf('.', prevIndex);
  79         }
  80         versionNumbers.add(Integer.parseInt(VERSION_NUMBER,
  81                 prevIndex, VERSION_NUMBER.length(), 10));






  82         return versionNumbers;




  83     }
  84 
  85     static Optional<String> pre() {
  86         return optionalOf(VERSION_PRE);
  87     }
  88 
  89     static Optional<Integer> build() {
  90         return VERSION_BUILD.isEmpty() ?
  91                 Optional.empty() :
  92                 Optional.of(Integer.parseInt(VERSION_BUILD));
  93     }
  94 
  95     static Optional<String> optional() {
  96         return optionalOf(VERSION_OPT);
  97     }
  98 
  99     // Treat empty strings as value not being present
 100     private static Optional<String> optionalOf(String value) {
 101         if (!value.isEmpty()) {
 102             return Optional.of(value);




  50 
  51     private static final String VERSION_BUILD =
  52         "@@VERSION_BUILD@@";
  53 
  54     private static final String VERSION_PRE =
  55         "@@VERSION_PRE@@";
  56 
  57     private static final String VERSION_OPT =
  58         "@@VERSION_OPT@@";
  59 
  60     static {
  61         init();
  62     }
  63 
  64     public static void init() {
  65         System.setProperty("java.version", java_version);
  66         System.setProperty("java.runtime.version", java_runtime_version);
  67         System.setProperty("java.runtime.name", java_runtime_name);
  68     }
  69 
  70     private static void check(String s, int prevIndex, int index) {
  71         if (index - prevIndex > 1 &&
  72             Character.digit(s.charAt(prevIndex), 10) <= 0)
  73             throw new IllegalArgumentException("Leading zeros not supported (" +
  74                     s.substring(prevIndex, index) + ")");
  75     }
  76 
  77     // This method is reflectively regression tested from
  78     // test/java/lang/Runtime/Version/VersionProps.java
  79     // If you rename or remove this method, please update the test accordingly.
  80     static List<Integer> parseVersionNumbers(String versionNumber) {
  81         List<Integer> versionNumbers = new ArrayList<>(4);
  82         int prevIndex = 0;
  83         int index = versionNumber.indexOf('.');
  84         while (index > 0) {
  85             check(versionNumber, prevIndex, index);
  86             versionNumbers.add(
  87                     Integer.parseInt(versionNumber, prevIndex, index, 10));
  88             prevIndex = index + 1; // Skip the period
  89             index = versionNumber.indexOf('.', prevIndex);
  90         }
  91         check(versionNumber, prevIndex, versionNumber.length());
  92         versionNumbers.add(Integer.parseInt(versionNumber,
  93                 prevIndex, versionNumber.length(), 10));
  94 
  95         if (versionNumbers.get(0) == 0 || versionNumbers.get(versionNumbers.size() - 1) == 0)
  96             throw new IllegalArgumentException("Leading or trailing zeros not supported (" +
  97                     versionNumbers + ")");
  98 
  99         return versionNumbers;
 100     }
 101 
 102     static List<Integer> versionNumbers() {
 103         return parseVersionNumbers(VERSION_NUMBER);
 104     }
 105 
 106     static Optional<String> pre() {
 107         return optionalOf(VERSION_PRE);
 108     }
 109 
 110     static Optional<Integer> build() {
 111         return VERSION_BUILD.isEmpty() ?
 112                 Optional.empty() :
 113                 Optional.of(Integer.parseInt(VERSION_BUILD));
 114     }
 115 
 116     static Optional<String> optional() {
 117         return optionalOf(VERSION_OPT);
 118     }
 119 
 120     // Treat empty strings as value not being present
 121     private static Optional<String> optionalOf(String value) {
 122         if (!value.isEmpty()) {
 123             return Optional.of(value);


< prev index next >