From a405944a24698e0920670c2477484a61df593762 Mon Sep 17 00:00:00 2001 From: John Blum Date: Sat, 24 Jun 2023 20:14:45 -0700 Subject: [PATCH] Fix bug in JavaVersion, determineCurrentJavaVersion() method when parsing Java versions such as '1.8.0_361'. Resolves #650 --- .../data/gemfire/util/JavaVersion.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/JavaVersion.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/JavaVersion.java index 3e500e33..9be831b8 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/JavaVersion.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/JavaVersion.java @@ -60,15 +60,15 @@ public abstract class JavaVersion implements Comparable { private static final AtomicReference CURRENT = new AtomicReference<>(null); - protected static JavaVersion of(int major, int minor, int patch) { - return new JavaVersion(major, minor, patch) { }; - } - public static JavaVersion current() { return CURRENT.updateAndGet(currentJavaVersion -> currentJavaVersion != null ? currentJavaVersion : determineCurrentJavaVersion()); } + protected static JavaVersion of(int major, int minor, int patch) { + return new JavaVersion(major, minor, patch) { }; + } + private static JavaVersion determineCurrentJavaVersion() { String javaVersion = String.valueOf(System.getProperty(JAVA_VERSION_SYSTEM_PROPERTY)); @@ -84,7 +84,11 @@ public abstract class JavaVersion implements Comparable { if (javaVersionArray.length > 1) { minor = parseInt(javaVersionArray[1]); if (javaVersionArray.length > 2) { - patch = parseInt(javaVersionArray[2]); + String tempPatch = javaVersionArray[2]; + tempPatch = tempPatch.contains("_") + ? tempPatch.substring(0, tempPatch.indexOf("_")) + : tempPatch; + patch = parseInt(tempPatch); } } } @@ -145,7 +149,8 @@ public abstract class JavaVersion implements Comparable { } public boolean isJava8() { - return EIGHT.getMajor().equals(getMajor()); + return EIGHT.getMajor().equals(getMajor()) + && EIGHT.getMinor().equals(getMinor()); } public boolean isJava11() {