This is an automated email from the ASF dual-hosted git repository. apupier pushed a commit to branch CAMEL-22996-dropJava17 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 91169df5f6c1e66e35bd8b4f5c5c9b97c96cc733 Author: Aurélien Pupier <[email protected]> AuthorDate: Fri Oct 16 10:02:28 2026 +0200 CAMEL-22996: update camel-launcher to require Java 21 Co-authored-by: IBM Bob 2.2.1 --- .../camel-launcher/src/install/install.ps1 | 6 +-- .../camel-launcher/src/install/install.sh | 4 +- .../camel-cli/sdkman/release-notes.md | 4 +- .../src/main/resources/bin/camel.bat | 4 +- .../camel-launcher/src/main/resources/bin/camel.sh | 4 +- .../dsl/jbang/launcher/CamelBatDiscoveryTest.java | 58 +++++++++------------- .../dsl/jbang/launcher/CamelShDiscoveryTest.java | 47 +++++++++--------- .../camel/dsl/jbang/launcher/FakeJavaTest.java | 2 +- 8 files changed, 59 insertions(+), 70 deletions(-) diff --git a/dsl/camel-jbang/camel-launcher/src/install/install.ps1 b/dsl/camel-jbang/camel-launcher/src/install/install.ps1 index 552c426a9370..a653646af26d 100644 --- a/dsl/camel-jbang/camel-launcher/src/install/install.ps1 +++ b/dsl/camel-jbang/camel-launcher/src/install/install.ps1 @@ -226,17 +226,17 @@ function Test-ArchiveEntry { } } -# Runs the freshly staged upstream launcher; a nonzero exit (e.g. no Java 17+ available) aborts the +# Runs the freshly staged upstream launcher; a nonzero exit (e.g. no Java 21+ available) aborts the # install and leaves the previously active installation untouched. function Test-StagedLauncher { param([string] $LauncherPath) try { & $LauncherPath 'version' *> $null } catch { - Fail "staged launcher failed verification (Java 17+ required)" + Fail "staged launcher failed verification (Java 21+ required)" } if ($LASTEXITCODE -ne 0) { - Fail "staged launcher failed verification (Java 17+ required)" + Fail "staged launcher failed verification (Java 21+ required)" } } diff --git a/dsl/camel-jbang/camel-launcher/src/install/install.sh b/dsl/camel-jbang/camel-launcher/src/install/install.sh index 6057dd694a83..343ee4aa7d38 100755 --- a/dsl/camel-jbang/camel-launcher/src/install/install.sh +++ b/dsl/camel-jbang/camel-launcher/src/install/install.sh @@ -194,12 +194,12 @@ validate_tar() { grep -Fqx "$expected_root/bin/camel.sh" "$listing" || fail "archive is missing bin/camel.sh" } -# Runs the freshly staged upstream launcher; a nonzero exit (e.g. no Java 17+ available) aborts +# Runs the freshly staged upstream launcher; a nonzero exit (e.g. no Java 21+ available) aborts # the install and leaves the previously active installation untouched. verify_staged() { staged_sh="$1" chmod +x "$staged_sh" 2>/dev/null || true - "$staged_sh" version >/dev/null 2>&1 || fail "staged launcher failed verification (Java 17+ required)" + "$staged_sh" version >/dev/null 2>&1 || fail "staged launcher failed verification (Java 21+ required)" } activate() { diff --git a/dsl/camel-jbang/camel-launcher/src/jreleaser/distributions/camel-cli/sdkman/release-notes.md b/dsl/camel-jbang/camel-launcher/src/jreleaser/distributions/camel-cli/sdkman/release-notes.md index fea5d6177f7f..10a778b12ad7 100644 --- a/dsl/camel-jbang/camel-launcher/src/jreleaser/distributions/camel-cli/sdkman/release-notes.md +++ b/dsl/camel-jbang/camel-launcher/src/jreleaser/distributions/camel-cli/sdkman/release-notes.md @@ -23,8 +23,8 @@ `publish` implementation to include when composing the SDKMAN release announcement. --> -Apache Camel CLI requires Java 17 or newer. If you do not already have a +Apache Camel CLI requires Java 21 or newer. If you do not already have a compatible Java, "sdk install java" provides one and SDKMAN will export -JAVA_HOME for it; any other Java 17+ runtime works equally well. The bin/camel +JAVA_HOME for it; any other Java 21+ runtime works equally well. The bin/camel launcher discovers Java via JAVACMD, JAVA_HOME, PATH, then CAMEL_FALLBACK_JAVA, and prints a diagnostic listing these sources if none qualify. diff --git a/dsl/camel-jbang/camel-launcher/src/main/resources/bin/camel.bat b/dsl/camel-jbang/camel-launcher/src/main/resources/bin/camel.bat index 9d485f9a39f9..2df7eeaa70b5 100644 --- a/dsl/camel-jbang/camel-launcher/src/main/resources/bin/camel.bat +++ b/dsl/camel-jbang/camel-launcher/src/main/resources/bin/camel.bat @@ -28,9 +28,9 @@ set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set BASEDIR=%DIRNAME% -@REM --- Shared Java 17+ discovery contract --- +@REM --- Shared Java 21+ discovery contract --- @REM Candidates in order: JAVACMD, %JAVA_HOME%\bin\java.exe, java.exe on PATH, CAMEL_FALLBACK_JAVA. -set CAMEL_MIN_JAVA=17 +set CAMEL_MIN_JAVA=21 set "CAMEL_JAVACMD=" call :tryJava "%JAVACMD%" diff --git a/dsl/camel-jbang/camel-launcher/src/main/resources/bin/camel.sh b/dsl/camel-jbang/camel-launcher/src/main/resources/bin/camel.sh index 36a66c77efab..f38fa2edbe37 100644 --- a/dsl/camel-jbang/camel-launcher/src/main/resources/bin/camel.sh +++ b/dsl/camel-jbang/camel-launcher/src/main/resources/bin/camel.sh @@ -47,12 +47,12 @@ if $cygwin ; then [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"` fi -# --- Shared Java 17+ discovery contract --- +# --- Shared Java 21+ discovery contract --- # Candidates are tried in order: JAVACMD, $JAVA_HOME/bin/java, java on PATH, CAMEL_FALLBACK_JAVA. # ($JAVA_HOME is also how SDKMAN's java candidate exposes its runtime.) # Each must exist, be executable, and report a Java major version >= CAMEL_MIN_JAVA. # Probe output is captured and never printed during a normal invocation. -CAMEL_MIN_JAVA=17 +CAMEL_MIN_JAVA=21 # Echo the Java major version of the launcher in $1, or nothing if it cannot be determined. camel_java_major() { diff --git a/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/CamelBatDiscoveryTest.java b/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/CamelBatDiscoveryTest.java index 03883353c0eb..e78134ad0ddc 100644 --- a/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/CamelBatDiscoveryTest.java +++ b/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/CamelBatDiscoveryTest.java @@ -40,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; /** - * Windows equivalent of {@link CamelShDiscoveryTest}: verifies camel.bat implements the same shared Java 17+ discovery + * Windows equivalent of {@link CamelShDiscoveryTest}: verifies camel.bat implements the same shared Java 21+ discovery * contract with observably equivalent behavior. */ @EnabledOnOs(OS.WINDOWS) @@ -48,11 +48,12 @@ class CamelBatDiscoveryTest { private static final Path SCRIPT = Paths.get("src/main/resources/bin/camel.bat"); - private static final String JAVA17 = "openjdk version \"17.0.2\" 2022-01-18"; private static final String JAVA21 = "openjdk version \"21.0.3\" 2024-04-16"; + private static final String JAVA25 = "openjdk version \"25\" 2025-09-16"; + private static final String JAVA17 = "openjdk version \"17.0.2\" 2022-01-18"; + private static final String JAVA17_EA = "openjdk version \"17-ea\""; private static final String JAVA11 = "openjdk version \"11.0.20\" 2023-07-18"; private static final String JAVA8 = "java version \"1.8.0_202\""; - private static final String JAVA17_EA = "openjdk version \"17-ea\""; private static final String GARBAGE = "totally not a java banner"; private Path home(Path base) throws Exception { @@ -83,7 +84,7 @@ class CamelBatDiscoveryTest { Files.writeString(h.resolve("camel-launcher-zzz-sources.jar"), "sources"); Files.writeString(h.resolve("camel-launcher-9.9.9-javadoc.jar"), "javadoc"); Files.writeString(h.resolve("camel-launcher-zzz-javadoc.jar"), "javadoc"); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "JAVACMD"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "JAVACMD"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", java.toString()); @@ -96,9 +97,9 @@ class CamelBatDiscoveryTest { } @Test - void acceptsJava17ViaJavacmd(@TempDir Path base) throws Exception { + void acceptsJava21ViaJavacmd(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "JAVACMD"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "JAVACMD"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", java.toString()); @@ -110,23 +111,10 @@ class CamelBatDiscoveryTest { assertFalse(r.stderr().contains("openjdk version"), "probe banner leaked to stderr"); } - @Test - void acceptsJava21ViaJavacmd(@TempDir Path base) throws Exception { - Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "JAVA21"); - Map<String, String> env = isolatedEnvironment(); - env.put("JAVACMD", java.toString()); - - FakeJava.Result r = FakeJava.run(h.resolve("camel.bat"), env, "version"); - - assertEquals(0, r.exitCode(), r.stderr()); - assertTrue(r.stdout().contains("RAN=JAVA21"), r.stdout()); - } - @Test void precedenceJavacmdBeatsJavaHome(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "JAVACMD-FIRST"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "JAVACMD-FIRST"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", java.toString()); env.put("JAVA_HOME", currentJavaHome().toString()); @@ -216,7 +204,7 @@ class CamelBatDiscoveryTest { void precedenceNativePathBeatsCamelFallbackJava(@TempDir Path base) throws Exception { Path h = home(base); writeRealJavaMarkerJar(h); - Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA17, 0, "FALLBACK"); + Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA21, 0, "FALLBACK"); Map<String, String> env = isolatedEnvironment(); env.put("PATH", currentJavaHome().resolve("bin") + ";" + env.get("PATH")); env.put("CAMEL_FALLBACK_JAVA", fallback.toString()); @@ -232,7 +220,7 @@ class CamelBatDiscoveryTest { void skipsOldJavacmdFallsBackToFallback(@TempDir Path base) throws Exception { Path h = home(base); Path old = FakeJava.writeFakeJava(base.resolve("old"), "java", JAVA11, 0, "OLD"); - Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA17, 0, "FALLBACK"); + Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA21, 0, "FALLBACK"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", old.toString()); env.put("JAVA_HOME", base.resolve("invalid-java-home").toString()); @@ -255,7 +243,7 @@ class CamelBatDiscoveryTest { FakeJava.Result r = FakeJava.run(h.resolve("camel.bat"), env, "version"); assertEquals(1, r.exitCode()); - assertTrue(r.stderr().contains("17"), "diagnostic must state the Java 17 minimum: " + r.stderr()); + assertTrue(r.stderr().contains("21"), "diagnostic must state the Java 21 minimum: " + r.stderr()); assertTrue(r.stderr().toLowerCase().contains("java"), r.stderr()); } @@ -275,7 +263,7 @@ class CamelBatDiscoveryTest { void rejectsNonnumericMajorAndContinuesToFallback(@TempDir Path base) throws Exception { Path h = home(base); Path earlyAccess = FakeJava.writeFakeJava(base.resolve("early-access"), "java", JAVA17_EA, 0, "EARLY"); - Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA17, 0, "FALLBACK"); + Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA21, 0, "FALLBACK"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", earlyAccess.toString()); env.put("CAMEL_FALLBACK_JAVA", fallback.toString()); @@ -290,7 +278,7 @@ class CamelBatDiscoveryTest { @Test void handlesSpacesAndUnicodeInJavaPath(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base.resolve("spa ce/über"), "java", JAVA17, 0, "UNICODE"); + Path java = FakeJava.writeFakeJava(base.resolve("spa ce/über"), "java", JAVA21, 0, "UNICODE"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", java.toString()); @@ -303,7 +291,7 @@ class CamelBatDiscoveryTest { @Test void defaultsHeapWhenJavaOptsUnset(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "HEAP"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "HEAP"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", java.toString()); @@ -316,7 +304,7 @@ class CamelBatDiscoveryTest { @Test void preservesJavaOptsWhenSet(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "OPTS"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "OPTS"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", java.toString()); env.put("JAVA_OPTS", "-Dcamel.test=1 -Xmx256m"); @@ -334,7 +322,7 @@ class CamelBatDiscoveryTest { Path h = home(base); Path wrapper = writeBatch(base.resolve("wrapper"), "java", "if \"%~1\"==\"-version\" (", - " echo " + JAVA17 + " 1>&2", + " echo " + JAVA21 + " 1>&2", " exit /b 0", ")", "set ARG_COUNT=0", @@ -371,7 +359,7 @@ class CamelBatDiscoveryTest { void finalBatchWrapperReturnsToLauncherStatementAfterCall(@TempDir Path base) throws Exception { Path sentinel = base.resolve("launcher-resumed.txt"); Path h = instrumentBatchLaunchReturn(home(base), sentinel); - Path wrapper = FakeJava.writeFakeJava(base.resolve("wrapper"), "java", JAVA17, 41, "RETURN"); + Path wrapper = FakeJava.writeFakeJava(base.resolve("wrapper"), "java", JAVA21, 41, "RETURN"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", wrapper.toString()); @@ -386,7 +374,7 @@ class CamelBatDiscoveryTest { void fallbackBatchWrapperIsReachedAfterInvalidCandidatesAndPropagatesExit(@TempDir Path base) throws Exception { Path h = home(base); Path old = FakeJava.writeFakeJava(base.resolve("old"), "java", JAVA11, 0, "OLD"); - Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA17, 29, "FALLBACK-WRAPPER"); + Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA21, 29, "FALLBACK-WRAPPER"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", old.toString()); env.put("JAVA_HOME", base.resolve("missing-home").toString()); @@ -405,7 +393,7 @@ class CamelBatDiscoveryTest { Path java = writeBatch(base.resolve("wrapper"), "java", "if \"%~1\"==\"-version\" (", " echo %_PROBE% >\"" + probePathMarker + "\"", - " echo " + JAVA17 + " 1>&2", + " echo " + JAVA21 + " 1>&2", " exit /b 0", ")", "echo RAN=BASEDIR-PROBE", @@ -431,11 +419,11 @@ class CamelBatDiscoveryTest { Path h = home(base); Path rejected = writeBatch(base.resolve("rejected"), "java", "if \"%~1\"==\"-version\" (", - " echo " + JAVA17 + " 1>&2", + " echo " + JAVA21 + " 1>&2", " exit /b 7", ")", "echo RAN=REJECTED"); - Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA17, 0, "FALLBACK"); + Path fallback = FakeJava.writeFakeJava(base.resolve("fallback"), "java", JAVA21, 0, "FALLBACK"); Map<String, String> env = isolatedEnvironment(); env.put("JAVACMD", rejected.toString()); env.put("CAMEL_FALLBACK_JAVA", fallback.toString()); @@ -453,7 +441,7 @@ class CamelBatDiscoveryTest { Path java = writeBatch(base.resolve("banner"), "java", "if \"%~1\"==\"-version\" (", " echo wrapper version metadata 1>&2", - " echo " + JAVA17 + " 1>&2", + " echo " + JAVA21 + " 1>&2", " exit /b 0", ")", "echo RAN=VALID-BANNER", @@ -475,7 +463,7 @@ class CamelBatDiscoveryTest { Path java = writeBatch(base.resolve("stdin"), "java", "if \"%~1\"==\"-version\" (", " set /p \"ignored=\"", - " echo " + JAVA17 + " 1>&2", + " echo " + JAVA21 + " 1>&2", " exit /b 0", ")", "echo RAN=PROBE-STDIN", diff --git a/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/CamelShDiscoveryTest.java b/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/CamelShDiscoveryTest.java index 08fac4adf315..71f15c200677 100644 --- a/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/CamelShDiscoveryTest.java +++ b/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/CamelShDiscoveryTest.java @@ -32,7 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; /** - * Verifies the shared Java 17+ discovery contract implemented in camel.sh. POSIX only; the Windows batch equivalent + * Verifies the shared Java 21+ discovery contract implemented in camel.sh. POSIX only; the Windows batch equivalent * lives in {@link CamelBatDiscoveryTest}. */ @DisabledOnOs(OS.WINDOWS) @@ -40,8 +40,9 @@ class CamelShDiscoveryTest { private static final Path SCRIPT = Paths.get("src/main/resources/bin/camel.sh"); - private static final String JAVA17 = "openjdk version \"17.0.2\" 2022-01-18"; private static final String JAVA21 = "openjdk version \"21.0.3\" 2024-04-16"; + private static final String JAVA25 = "openjdk version \"25\" 2025-09-16"; + private static final String JAVA17 = "openjdk version \"17.0.2\" 2022-01-18"; private static final String JAVA11 = "openjdk version \"11.0.20\" 2023-07-18"; private static final String JAVA8 = "java version \"1.8.0_202\""; private static final String GARBAGE = "totally not a java banner"; @@ -63,7 +64,7 @@ class CamelShDiscoveryTest { Files.writeString(h.resolve("camel-launcher-zzz-sources.jar"), "sources"); Files.writeString(h.resolve("camel-launcher-9.9.9-javadoc.jar"), "javadoc"); Files.writeString(h.resolve("camel-launcher-zzz-javadoc.jar"), "javadoc"); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "JAVACMD"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "JAVACMD"); Map<String, String> env = new HashMap<>(); env.put("LC_ALL", "C"); env.put("JAVACMD", java.toString()); @@ -77,9 +78,9 @@ class CamelShDiscoveryTest { } @Test - void acceptsJava17ViaJavacmd(@TempDir Path base) throws Exception { + void acceptsJava21ViaJavacmd(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "JAVACMD"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "JAVACMD"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", java.toString()); @@ -108,7 +109,7 @@ class CamelShDiscoveryTest { @Test void precedenceJavacmdBeatsJavaHomeAndPath(@TempDir Path base) throws Exception { Path h = home(base); - Path first = FakeJava.writeFakeJava(base.resolve("j1"), "java", JAVA17, 0, "JAVACMD"); + Path first = FakeJava.writeFakeJava(base.resolve("j1"), "java", JAVA21, 0, "JAVACMD"); Path jhomeBin = base.resolve("jh/bin"); FakeJava.writeFakeJava(jhomeBin, "java", JAVA21, 0, "JAVAHOME"); Path pathDir = base.resolve("pd"); @@ -130,7 +131,7 @@ class CamelShDiscoveryTest { // SDKMAN provides Java by exporting JAVA_HOME (candidate #2) with no JAVACMD set. Path h = home(base); Path jhomeBin = base.resolve("jh/bin"); - FakeJava.writeFakeJava(jhomeBin, "java", JAVA17, 0, "JAVAHOME"); + FakeJava.writeFakeJava(jhomeBin, "java", JAVA21, 0, "JAVAHOME"); Map<String, String> env = new HashMap<>(); env.put("JAVA_HOME", base.resolve("jh").toString()); @@ -146,7 +147,7 @@ class CamelShDiscoveryTest { void skipsInvalidJavacmdFallsBackToJavaHome(@TempDir Path base) throws Exception { Path h = home(base); Path jhomeBin = base.resolve("jh/bin"); - FakeJava.writeFakeJava(jhomeBin, "java", JAVA17, 0, "JAVAHOME"); + FakeJava.writeFakeJava(jhomeBin, "java", JAVA21, 0, "JAVAHOME"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", base.resolve("does-not-exist").toString()); @@ -165,7 +166,7 @@ class CamelShDiscoveryTest { Files.writeString(nonExecutable, "#!/bin/sh\nexit 0\n"); assertFalse(Files.isExecutable(nonExecutable), "test candidate must not be executable"); Path jhomeBin = base.resolve("jh/bin"); - FakeJava.writeFakeJava(jhomeBin, "java", JAVA17, 0, "JAVAHOME"); + FakeJava.writeFakeJava(jhomeBin, "java", JAVA21, 0, "JAVAHOME"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", nonExecutable.toString()); @@ -183,7 +184,7 @@ class CamelShDiscoveryTest { Path jhomeBin = base.resolve("jh/bin"); FakeJava.writeFakeJava(jhomeBin, "java", JAVA11, 0, "JAVAHOME"); // too old Path pathDir = base.resolve("pd"); - FakeJava.writeFakeJava(pathDir, "java", JAVA17, 0, "PATH"); + FakeJava.writeFakeJava(pathDir, "java", JAVA21, 0, "PATH"); Map<String, String> env = new HashMap<>(); env.put("JAVA_HOME", base.resolve("jh").toString()); @@ -201,7 +202,7 @@ class CamelShDiscoveryTest { void precedenceJavaHomeBeatsPath(@TempDir Path base) throws Exception { Path h = home(base); Path jhomeBin = base.resolve("jh/bin"); - FakeJava.writeFakeJava(jhomeBin, "java", JAVA17, 0, "JAVAHOME"); + FakeJava.writeFakeJava(jhomeBin, "java", JAVA21, 0, "JAVAHOME"); Path pathDir = base.resolve("pd"); FakeJava.writeFakeJava(pathDir, "java", JAVA21, 0, "PATH"); @@ -219,7 +220,7 @@ class CamelShDiscoveryTest { void precedencePathBeatsCamelFallbackJava(@TempDir Path base) throws Exception { Path h = home(base); Path pathDir = base.resolve("pd"); - FakeJava.writeFakeJava(pathDir, "java", JAVA17, 0, "PATH"); + FakeJava.writeFakeJava(pathDir, "java", JAVA21, 0, "PATH"); Path fallback = FakeJava.writeFakeJava(base.resolve("fb"), "java", JAVA21, 0, "FALLBACK"); Map<String, String> env = new HashMap<>(); @@ -235,7 +236,7 @@ class CamelShDiscoveryTest { @Test void usesCamelFallbackJavaWhenNothingElseQualifies(@TempDir Path base) throws Exception { Path h = home(base); - Path fb = FakeJava.writeFakeJava(base.resolve("fb"), "java", JAVA17, 0, "FALLBACK"); + Path fb = FakeJava.writeFakeJava(base.resolve("fb"), "java", JAVA21, 0, "FALLBACK"); Map<String, String> env = new HashMap<>(); env.put("PATH", pathWithNonqualifyingJava(base)); @@ -259,7 +260,7 @@ class CamelShDiscoveryTest { FakeJava.Result r = FakeJava.run(h.resolve("camel.sh"), env, "version"); assertEquals(1, r.exitCode()); - assertTrue(r.stderr().contains("17"), "diagnostic must state the Java 17 minimum: " + r.stderr()); + assertTrue(r.stderr().contains("21"), "diagnostic must state the Java 21 minimum: " + r.stderr()); assertTrue(r.stderr().toLowerCase().contains("java"), r.stderr()); } @@ -282,7 +283,7 @@ class CamelShDiscoveryTest { Path h = home(base); Path garbage = FakeJava.writeFakeJava(base.resolve("g"), "java", GARBAGE, 0, "GARBAGE"); Path jhomeBin = base.resolve("jh/bin"); - FakeJava.writeFakeJava(jhomeBin, "java", JAVA17, 0, "JAVAHOME"); + FakeJava.writeFakeJava(jhomeBin, "java", JAVA21, 0, "JAVAHOME"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", garbage.toString()); @@ -315,7 +316,7 @@ class CamelShDiscoveryTest { void handlesSpacesAndUnicodeInJavaPath(@TempDir Path base) throws Exception { Path h = home(base); Path dir = base.resolve("spa ce/über"); - Path java = FakeJava.writeFakeJava(dir, "java", JAVA17, 0, "UNICODE"); + Path java = FakeJava.writeFakeJava(dir, "java", JAVA21, 0, "UNICODE"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", java.toString()); @@ -329,7 +330,7 @@ class CamelShDiscoveryTest { @Test void preservesArgumentsWithSpaces(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "ARGS"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "ARGS"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", java.toString()); @@ -342,7 +343,7 @@ class CamelShDiscoveryTest { @Test void defaultsHeapWhenJavaOptsUnset(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "HEAP"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "HEAP"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", java.toString()); @@ -354,7 +355,7 @@ class CamelShDiscoveryTest { @Test void preservesJavaOptsWhenSet(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "OPTS"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "OPTS"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", java.toString()); env.put("JAVA_OPTS", "-Dcamel.test=1 -Xmx256m"); @@ -369,7 +370,7 @@ class CamelShDiscoveryTest { @Test void preservesChildExitCode(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 42, "EXIT"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 42, "EXIT"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", java.toString()); @@ -381,7 +382,7 @@ class CamelShDiscoveryTest { @Test void preservesChildStdinStdoutAndStderr(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "STDIO"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "STDIO"); Map<String, String> env = new HashMap<>(); env.put("JAVACMD", java.toString()); @@ -396,11 +397,11 @@ class CamelShDiscoveryTest { @Test void probeCannotConsumeChildStdin(@TempDir Path base) throws Exception { Path h = home(base); - Path java = FakeJava.writeFakeJava(base, "java", JAVA17, 0, "PROBE-STDIN"); + Path java = FakeJava.writeFakeJava(base, "java", JAVA21, 0, "PROBE-STDIN"); Files.writeString(java, "#!/bin/sh\n" + "if [ \"$1\" = \"-version\" ]; then\n" + " IFS= read -r ignored\n" - + " echo '" + JAVA17 + "' 1>&2\n" + + " echo '" + JAVA21 + "' 1>&2\n" + " exit 0\n" + "fi\n" + "echo 'RAN=PROBE-STDIN'\n" diff --git a/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/FakeJavaTest.java b/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/FakeJavaTest.java index fb99336cc922..bc20bc80b538 100644 --- a/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/FakeJavaTest.java +++ b/dsl/camel-jbang/camel-launcher/src/test/java/org/apache/camel/dsl/jbang/launcher/FakeJavaTest.java @@ -51,7 +51,7 @@ class FakeJavaTest { @Test void fakeJavaPreservesInputAndNormalStderr() throws Exception { - Path java = FakeJava.writeFakeJava(tempDir, "java", "openjdk version \"17.0.2\"", 0, "STDIO"); + Path java = FakeJava.writeFakeJava(tempDir, "java", "openjdk version \"21.0.3\"", 0, "STDIO"); FakeJava.Result result = FakeJava.runWithInput(java, Map.of(), "route input\n", "version");
