You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/11/15 12:32:08 UTC

[commons-bcel] branch master updated: Use default Eclipse Adoptium and Oracle locations if present for test fixtures

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git


The following commit(s) were added to refs/heads/master by this push:
     new 69a51004 Use default Eclipse Adoptium and Oracle locations if present for test fixtures
69a51004 is described below

commit 69a51004e0a08a935cb0f8f647e00272bb1188c3
Author: Gary David Gregory (Code signing key) <gg...@apache.org>
AuthorDate: Tue Nov 15 07:32:04 2022 -0500

    Use default Eclipse Adoptium and Oracle locations if present for test
    fixtures
---
 .../java/org/apache/bcel/generic/JavaHome.java     | 23 ++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/test/java/org/apache/bcel/generic/JavaHome.java b/src/test/java/org/apache/bcel/generic/JavaHome.java
index c7558f4c..cdb24809 100644
--- a/src/test/java/org/apache/bcel/generic/JavaHome.java
+++ b/src/test/java/org/apache/bcel/generic/JavaHome.java
@@ -48,7 +48,17 @@ public class JavaHome {
 
     private static final String EXTRA_JAVA_HOMES = "ExtraJavaHomes";
 
+    /** A folder containing Java homes, for example, on Windows "C:/Program Files/Eclipse Adoptium/" */
     private static final String EXTRA_JAVA_ROOT = "ExtraJavaRoot";
+
+    /** The default home for Java installs on Windows for Eclipse Adoptium. */
+    private static final String ADOPTIUM_WINDOWS = "C:/Program Files/Eclipse Adoptium/";
+
+    /** The default home for Java installs on Windows for Eclipse Oracle. */
+    private static final String ORACLE_WINDOWS = "C:/Program Files/Java/";
+
+    private static final String EXTRA_JAVA_ROOT_DEFAULT = ADOPTIUM_WINDOWS + File.pathSeparator + ORACLE_WINDOWS;
+
     private static final String KEY_JDK = "SOFTWARE\\JavaSoft\\Java Development Kit";
     private static final String KEY_JDK_9 = "SOFTWARE\\JavaSoft\\JDK";
     private static final String KEY_JRE = "SOFTWARE\\JavaSoft\\Java Runtime Environment";
@@ -75,12 +85,13 @@ public class JavaHome {
         return Stream.empty();
     }
 
-    private static Stream<String> streamFromCustomKey(final String key) {
-        return streamPropertyAndEnvVarValues(key).flatMap(s -> find(Paths.get(s), 1, (p, a) -> Files.isDirectory(p)).map(Path::toString));
+    private static Stream<String> streamFromCustomKey(final String key, final String defaultValue) {
+        return streamPropertyAndEnvVarValues(key, defaultValue).flatMap(s -> find(Paths.get(s), 1, (p, a) -> Files.isDirectory(p)).map(Path::toString));
     }
 
     private static Stream<String> streamFromCustomKeys() {
-        return Stream.concat(streamPropertyAndEnvVarValues(EXTRA_JAVA_HOMES), streamFromCustomKey(EXTRA_JAVA_ROOT));
+        final String defaultRoot = SystemUtils.IS_OS_WINDOWS ? EXTRA_JAVA_ROOT_DEFAULT : null;
+        return Stream.concat(streamPropertyAndEnvVarValues(EXTRA_JAVA_HOMES, null), streamFromCustomKey(EXTRA_JAVA_ROOT, defaultRoot));
     }
 
     /**
@@ -149,8 +160,8 @@ public class JavaHome {
         return streamJavaHome().flatMap(JavaHome::streamModuleByExt);
     }
 
-    private static Stream<String> streamPropertyAndEnvVarValues(final String key) {
-        return Stream.concat(toPathStringStream(System.getProperty(key)), toPathStringStream(System.getenv(key)));
+    private static Stream<String> streamPropertyAndEnvVarValues(final String key, final String defaultValue) {
+        return Stream.concat(toPathStringStream(System.getProperty(key, defaultValue)), toPathStringStream(System.getenv(key)));
     }
 
     private static Stream<String> streamWindowsJavaHomes(final String keyJavaHome, final String[] keys) {
@@ -168,7 +179,7 @@ public class JavaHome {
 
     private static Stream<String> streamWindowsStrings() {
         return Stream.concat(Stream.of(KEY_JRE, KEY_JRE_9, KEY_JDK, KEY_JDK_9).flatMap(JavaHome::streamAllWindowsJavaHomes),
-                streamPropertyAndEnvVarValues(EXTRA_JAVA_HOMES)).distinct();
+                streamPropertyAndEnvVarValues(EXTRA_JAVA_HOMES, null)).distinct();
     }
 
     private static Stream<String> toPathStringStream(final String path) {