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