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

acosentino pushed a commit to branch jdk17
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git

commit 67a5df1f75d71b442318eb86b64ece9fa5ac72fb
Author: Andrea Cosentino <[email protected]>
AuthorDate: Thu Mar 19 09:10:01 2026 +0100

    Downgrade minimum JDK requirement from 21 to 17
    
    Lower the compiler source/target/release to JDK 17 across Maven,
    GitHub Actions, and Jenkins pipelines. CI PR builds now test both
    JDK 17 and 21. CamelVirtualThreadsTest uses reflection for the
    Thread.isVirtual() call so it compiles on JDK 17 and is skipped
    on runtimes below 21.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .github/workflows/automatic-sync-main.yml             |  2 +-
 .github/workflows/generate-sbom-main.yml              |  2 +-
 .github/workflows/pr-build-main.yml                   |  2 +-
 Jenkinsfile.sb                                        |  2 +-
 Jenkinsfile.sb.deploy                                 |  2 +-
 Jenkinsfile.sb.ppc64le                                |  2 +-
 .../camel/spring/boot/CamelVirtualThreadsTest.java    | 19 ++++++++++++++++---
 pom.xml                                               |  6 +++---
 8 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/.github/workflows/automatic-sync-main.yml 
b/.github/workflows/automatic-sync-main.yml
index abad8d1ca7b..595e3e04c68 100644
--- a/.github/workflows/automatic-sync-main.yml
+++ b/.github/workflows/automatic-sync-main.yml
@@ -38,7 +38,7 @@ jobs:
         uses: actions/setup-java@v5
         with:
           distribution: 'temurin'
-          java-version: 21
+          java-version: 17
           cache: 'maven'
       - name: Build Camel Project
         run: ./mvnw -V --no-transfer-progress -Dquickly clean install
diff --git a/.github/workflows/generate-sbom-main.yml 
b/.github/workflows/generate-sbom-main.yml
index dfdc779336c..de553ee6302 100644
--- a/.github/workflows/generate-sbom-main.yml
+++ b/.github/workflows/generate-sbom-main.yml
@@ -40,7 +40,7 @@ jobs:
         uses: actions/setup-java@v5
         with:
           distribution: 'temurin'
-          java-version: 21
+          java-version: 17
           cache: 'maven'
       - name: Build Camel Project
         run: ./mvnw -B -V --no-transfer-progress -Dquickly install
diff --git a/.github/workflows/pr-build-main.yml 
b/.github/workflows/pr-build-main.yml
index d3af89aabc5..798367f86a2 100644
--- a/.github/workflows/pr-build-main.yml
+++ b/.github/workflows/pr-build-main.yml
@@ -37,7 +37,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        java: ['21']
+        java: ['17', '21']
     steps:
     - uses: actions/checkout@v6
       with:
diff --git a/Jenkinsfile.sb b/Jenkinsfile.sb
index 36ace78e5a8..ec891b8b952 100644
--- a/Jenkinsfile.sb
+++ b/Jenkinsfile.sb
@@ -19,7 +19,7 @@
 
 def LOCAL_REPOSITORY = env.LOCAL_REPOSITORY ?: 
'/home/jenkins/jenkins-slave/maven-repositories/0'
 def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
-def JDK_NAME = env.JDK_NAME ?: 'jdk_21_latest'
+def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest'
 
 def MAVEN_PARAMS = '-U -B -e -fae -V 
-Dmaven.repo.local=/home/jenkins/.m2/repository -Dmaven.compiler.fork=true'
 
diff --git a/Jenkinsfile.sb.deploy b/Jenkinsfile.sb.deploy
index 3b18bbf29c1..79f76d59584 100644
--- a/Jenkinsfile.sb.deploy
+++ b/Jenkinsfile.sb.deploy
@@ -19,7 +19,7 @@
 
 def LOCAL_REPOSITORY = env.LOCAL_REPOSITORY ?: 
'/home/jenkins/jenkins-slave/maven-repositories/0'
 def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
-def JDK_NAME = env.JDK_NAME ?: 'jdk_21_latest'
+def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest'
 
 def MAVEN_PARAMS = "-U -B -e -fae -V -Dnoassembly -Dmaven.compiler.fork=true "
 
diff --git a/Jenkinsfile.sb.ppc64le b/Jenkinsfile.sb.ppc64le
index 0a791730800..e16c6f019b8 100644
--- a/Jenkinsfile.sb.ppc64le
+++ b/Jenkinsfile.sb.ppc64le
@@ -19,7 +19,7 @@
 
 def LOCAL_REPOSITORY = env.LOCAL_REPOSITORY ?: 
'/home/jenkins/jenkins-slave/maven-repositories/0'
 def AGENT_LABEL = env.AGENT_LABEL ?: 'power-for-camel'
-def JDK_NAME = env.JDK_NAME ?: 'jdk_21_latest'
+def JDK_NAME = env.JDK_NAME ?: 'jdk_17_latest'
 
 def MAVEN_PARAMS = '-U -B -e -fae -V 
-Dmaven.repo.local=/home/jenkins/.m2/repository -Dmaven.compiler.fork=true'
 
diff --git 
a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelVirtualThreadsTest.java
 
b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelVirtualThreadsTest.java
index d0f1ec52db2..7ceb9c480c9 100644
--- 
a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelVirtualThreadsTest.java
+++ 
b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/CamelVirtualThreadsTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.spring.boot;
 
+import java.lang.reflect.Method;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
@@ -25,6 +26,8 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.spring.junit6.CamelSpringBootTest;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -60,8 +63,8 @@ public class CamelVirtualThreadsTest {
                             // Capture the current thread information
                             Thread currentThread = Thread.currentThread();
                             String threadName = currentThread.getName();
-                            boolean isVirtual = currentThread.isVirtual();
-                            
+                            boolean isVirtual = isVirtualThread(currentThread);
+
                             // Store thread information in exchange properties 
for assertion
                             exchange.setProperty("threadName", threadName);
                             exchange.setProperty("isVirtual", isVirtual);
@@ -73,6 +76,15 @@ public class CamelVirtualThreadsTest {
         }
     }
 
+    private static boolean isVirtualThread(Thread thread) {
+        try {
+            Method isVirtual = Thread.class.getMethod("isVirtual");
+            return (boolean) isVirtual.invoke(thread);
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
     @Test
     public void testCamelVirtualThreadPropertyIsSet() throws Exception {
         // Verify that the environment post processor set the 
camel.threads.virtual.enabled property
@@ -83,6 +95,7 @@ public class CamelVirtualThreadsTest {
     }
 
     @Test
+    @EnabledForJreRange(min = JRE.JAVA_21)
     public void testRouteExecutesOnVirtualThread() throws Exception {
         CountDownLatch latch = new CountDownLatch(1);
         AtomicReference<Boolean> isVirtualThread = new 
AtomicReference<>(false);
@@ -96,7 +109,7 @@ public class CamelVirtualThreadsTest {
                     .routeId("virtualTestRoute")
                     .process(exchange -> {
                         Thread currentThread = Thread.currentThread();
-                        isVirtualThread.set(currentThread.isVirtual());
+                        isVirtualThread.set(isVirtualThread(currentThread));
                         threadName.set(currentThread.getName());
                         latch.countDown();
                     });
diff --git a/pom.xml b/pom.xml
index 2b1660984ed..74e9791789f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -104,7 +104,7 @@
         
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
         
<site-repo-url>scpexe://people.apache.org/www/camel.apache.org/maven/</site-repo-url>
-        <jdk.version>21</jdk.version>
+        <jdk.version>17</jdk.version>
         <!-- These two are here only to prevent the versions for the Apache 
parent pom from leaking-->
         <maven.compiler.source>${jdk.version}</maven.compiler.source>
         <maven.compiler.target>${jdk.version}</maven.compiler.target>
@@ -178,7 +178,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-javadoc-plugin</artifactId>
                 <configuration>
-                    <source>21</source>
+                    <source>17</source>
                     <additionalOptions>${javadoc.opts}</additionalOptions>
                     <doclint>none</doclint>
                 </configuration>
@@ -676,7 +676,7 @@
                                     <goal>jar</goal>
                                 </goals>
                                 <configuration>
-                                    <source>21</source>
+                                    <source>17</source>
                                     <doclint>none</doclint>
                                 </configuration>
                             </execution>

Reply via email to