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

davsclaus pushed a commit to branch camel-4.10.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.10.x by this push:
     new a6df3e35442 Handle Camel Spring Boot versions that are not equal to 
Camel (#18945)
a6df3e35442 is described below

commit a6df3e3544232fe88ec016bebe39846139b407c3
Author: Tom Cunningham <[email protected]>
AuthorDate: Wed Aug 20 06:52:49 2025 -0400

    Handle Camel Spring Boot versions that are not equal to Camel (#18945)
    
    Co-authored-by: Croway <[email protected]>
---
 .../camel/dsl/jbang/core/commands/Export.java      |  4 +++-
 .../dsl/jbang/core/commands/ExportSpringBoot.java  |  2 ++
 .../apache/camel/dsl/jbang/core/commands/Run.java  |  3 ++-
 .../camel/dsl/jbang/core/common/CatalogLoader.java |  4 +++-
 .../camel/dsl/jbang/core/common/VersionHelper.java | 28 ++++++++++++++++++++++
 5 files changed, 38 insertions(+), 3 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index e109a9ea7a1..d93345b555c 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -27,6 +27,7 @@ import java.util.Properties;
 import org.apache.camel.dsl.jbang.core.common.RuntimeType;
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
 import org.apache.camel.dsl.jbang.core.common.SourceScheme;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.tooling.maven.MavenGav;
 import org.apache.camel.util.CamelCaseOrderedProperties;
 import org.apache.camel.util.FileUtil;
@@ -113,7 +114,8 @@ public class Export extends ExportBaseCommand {
             this.quarkusGroupId = 
props.getProperty("camel.jbang.quarkusGroupId", this.quarkusGroupId);
             this.quarkusArtifactId = 
props.getProperty("camel.jbang.quarkusArtifactId", this.quarkusArtifactId);
             this.quarkusVersion = 
props.getProperty("camel.jbang.quarkusVersion", this.quarkusVersion);
-            this.camelSpringBootVersion = 
props.getProperty("camel.jbang.camelSpringBootVersion", 
this.camelSpringBootVersion);
+            this.camelSpringBootVersion = VersionHelper.getSpringBootVersion(
+                    () -> 
props.getProperty("camel.jbang.camelSpringBootVersion", 
this.camelSpringBootVersion));
             this.springBootVersion = 
props.getProperty("camel.jbang.springBootVersion", this.springBootVersion);
             this.mavenWrapper
                     = 
"true".equals(props.getProperty("camel.jbang.mavenWrapper", this.mavenWrapper ? 
"true" : "false"));
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index f3f754e2f58..45dea590806 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -51,6 +51,8 @@ class ExportSpringBoot extends Export {
 
     @Override
     public Integer export() throws Exception {
+        this.camelSpringBootVersion = VersionHelper.getSpringBootVersion(null);
+
         String[] ids = gav.split(":");
         if (ids.length != 3) {
             printer().printErr("--gav must be in syntax: 
groupId:artifactId:version");
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index a77946623f2..b72ed75b690 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -1029,7 +1029,8 @@ public class Run extends CamelCommand {
         eq.gradleWrapper = false;
         eq.springBootVersion = this.springBootVersion;
         eq.camelVersion = this.camelVersion;
-        eq.camelSpringBootVersion = this.camelSpringBootVersion != null ? 
this.camelSpringBootVersion : this.camelVersion;
+        eq.camelSpringBootVersion = VersionHelper.getSpringBootVersion(
+                () -> this.camelSpringBootVersion != null ? 
this.camelSpringBootVersion : this.camelVersion);
         eq.kameletsVersion = this.kameletsVersion;
         eq.exportDir = runDir.toString();
         eq.localKameletDir = this.localKameletDir;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CatalogLoader.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CatalogLoader.java
index 8aac715a2cd..5526bc17e9f 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CatalogLoader.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CatalogLoader.java
@@ -115,7 +115,9 @@ public final class CatalogLoader {
                 throw new IOException("Cannot download 
org.apache.camel:camel-catalog:" + camelCatalogVersion);
             }
 
-            ma = downloader.downloadArtifact("org.apache.camel.springboot", 
"camel-catalog-provider-springboot", version);
+            final String camelVersion = version;
+            ma = downloader.downloadArtifact("org.apache.camel.springboot", 
"camel-catalog-provider-springboot",
+                    VersionHelper.getSpringBootVersion(() -> camelVersion));
             if (ma != null) {
                 cl.addFile(ma.getFile());
             } else {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
index 19c0e0086d2..f563c1181ad 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
@@ -18,6 +18,7 @@ package org.apache.camel.dsl.jbang.core.common;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.util.function.Supplier;
 
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StringHelper;
@@ -27,6 +28,33 @@ public final class VersionHelper {
     private VersionHelper() {
     }
 
+    /**
+     * Retrieves the Spring Boot version to use, with support for overriding 
via system property. This is particularly
+     * useful when the Camel version differs from the Camel Spring Boot 
version, allowing for explicit version control
+     * in JBang scenarios.
+     *
+     * <p>
+     * The method follows this precedence order:
+     * <ol>
+     * <li>System property {@code camel.jbang.camelSpringBootVersion} if 
set</li>
+     * <li>Value from the provided supplier if not null</li>
+     * <li>Returns null if neither option is available</li>
+     * </ol>
+     *
+     * @param  supplier a supplier that provides the default Spring Boot 
version when no system property override is
+     *                  present. May be null.
+     * @return          the Spring Boot version string, or null if no version 
can be determined
+     */
+    public static String getSpringBootVersion(Supplier<String> supplier) {
+        if (System.getProperty("camel.jbang.camelSpringBootVersion") != null) {
+            return System.getProperty("camel.jbang.camelSpringBootVersion");
+        } else if (supplier != null) {
+            return supplier.get();
+        }
+
+        return null;
+    }
+
     public static String getJBangVersion() {
         try {
             // find actual version in JBANG_HOME

Reply via email to