]> source.dussan.org Git - aspectj.git/commitdiff
LangUtil: improve Java version major/minor parsing
authorAlexander Kriegisch <Alexander@Kriegisch.name>
Wed, 5 Oct 2022 08:11:54 +0000 (10:11 +0200)
committerAlexander Kriegisch <Alexander@Kriegisch.name>
Wed, 5 Oct 2022 08:11:54 +0000 (10:11 +0200)
- Ignore everything including and after '+' in versions like '19+36-2238'
- Add minor '.0' to Java versions like '19', '19+36-2238'

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
util/src/main/java/org/aspectj/util/LangUtil.java

index 02aa7d94b3cc1259d9791a370d3829c0b27e67b5..7151c092b423e753fe6edaa96a0cb0143c0c5eec 100644 (file)
@@ -96,16 +96,17 @@ public class LangUtil {
        private static List<Integer> getJavaMajorMinor(String vm) {
                List<Integer> result = new ArrayList<>();
                // Can be something like '1.5', '11.0.16.1', '19+36-2238'
-               StringTokenizer st = new StringTokenizer(vm,".-_+");
+               StringTokenizer st = new StringTokenizer(vm.replaceFirst("[+].*", ""), ".-_");
                try {
                        result.add(Integer.parseInt(st.nextToken()));
-                       // FIXME: The minor will be wrong for version strings like '19+36-2238'.
-                       // The minor is only relevant for Java <= 1.8. Even so, this is super ugly.
                        result.add(Integer.parseInt(st.nextToken()));
                } catch (Exception e) {
                        // NoSuchElementException if no more tokens
                        // NumberFormatException if not a number
                }
+               // Always add a default minor, just in case a caller expects it
+               if (result.size() == 1)
+                       result.add(0);
                return result;
        }