This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new a875bea8b54c CAMEL-20455: camel-jbang - Download kamelets only when in
use (#19795)
a875bea8b54c is described below
commit a875bea8b54c55a0d7c2a021d4578fbed4f82352
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Nov 6 19:20:24 2025 +0100
CAMEL-20455: camel-jbang - Download kamelets only when in use (#19795)
* CAMEL-20455: camel-jbang - Download kamelets only when in use
* CAMEL-20455: camel-jbang - Download kamelets only when in use. Add back
DEPS until we have 4.17.0 released
---
.../apache/camel/support/RouteTemplateHelper.java | 11 +++++++++--
.../ROOT/pages/camel-4x-upgrade-guide-4_17.adoc | 11 ++++++++++-
.../modules/ROOT/pages/camel-4x-upgrade-guide.adoc | 1 +
.../camel/dsl/jbang/core/common/RuntimeType.java | 1 +
.../dsl/jbang/core/commands/ExportBaseCommand.java | 12 +++++++----
.../apache/camel/dsl/jbang/core/commands/Run.java | 20 ++++++++++++++++++-
.../jbang/core/commands/catalog/CatalogDoc.java | 5 +++--
.../core/commands/catalog/CatalogKamelet.java | 6 ++++--
.../camel/dsl/jbang/core/commands/ExportTest.java | 10 ++++++++++
.../src/test/resources/use-source-route.yaml | 23 ++++++++++++++++++++++
.../src/test/resources/user-source.kamelet.yaml | 1 +
dsl/camel-kamelet-main/pom.xml | 12 +++++++++++
.../src/main/docs/kamelet-main.adoc | 22 +--------------------
.../camel/main/util/KameletCatalogHelper.java | 23 ++++++++++++++++++++++
.../java/org/apache/camel/main/KameletMain.java | 2 +-
.../main/download/DependencyDownloaderKamelet.java | 10 ++++++++++
.../download/KnownKameletRoutesBuilderLoader.java | 20 +++++++++++++------
.../org/apache/camel/main/util/VersionHelper.java | 3 +--
18 files changed, 151 insertions(+), 42 deletions(-)
diff --git
a/core/camel-support/src/main/java/org/apache/camel/support/RouteTemplateHelper.java
b/core/camel-support/src/main/java/org/apache/camel/support/RouteTemplateHelper.java
index 8fb14497ba57..6744f782d1d3 100644
---
a/core/camel-support/src/main/java/org/apache/camel/support/RouteTemplateHelper.java
+++
b/core/camel-support/src/main/java/org/apache/camel/support/RouteTemplateHelper.java
@@ -102,8 +102,15 @@ public final class RouteTemplateHelper {
path += "/";
}
String target = path + templateId + ".kamelet.yaml";
- PluginHelper.getRoutesLoader(camelContext).loadRoutes(
- resourceLoader.resolveResource(target));
+ Resource res = resourceLoader.resolveResource(target);
+ try {
+ if (listener != null) {
+ listener.loadRouteTemplate(res);
+ }
+ } catch (Exception e) {
+ LOG.warn("RouteTemplateLoaderListener error due to {}. This
exception is ignored", e.getMessage(), e);
+ }
+ PluginHelper.getRoutesLoader(camelContext).loadRoutes(res);
}
}
}
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_17.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_17.adoc
index 03e5dd2ba617..ea63708867c0 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_17.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_17.adoc
@@ -13,6 +13,15 @@ See the xref:camel-upgrade-recipes-tool.adoc[documentation]
page for details.
== Upgrading Camel 4.16 to 4.17
+=== camel-jbang
+
+The `camel-kamelets-catalog` JAR is now downloaded on-demand.
+The version of the Kamelets is now specified via `--kamelets-version` option
(or via maven dependencies).
+The following option is no longer in use `-Dcamel-kamelets.version`.
+
+Removed automatic fallback to download Kamelet YAML files from GitHub.
Instead, kamelets are
+now only loaded from embedded `camel-kamelets` JAR.
+
=== Component deprecation
-The component stomp is deprecated. The protocol and the used implementation
has not received updates in the last ten years and tests started to fail with
Artemis 2.43.
+The `camel-stomp` component is deprecated.
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide.adoc
index 84932f87dce5..6ae540da19ca 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide.adoc
@@ -25,6 +25,7 @@ You can find the upgrade guide for each release in the
following pages:
- xref:camel-4x-upgrade-guide-4_14.adoc[Upgrade guide 4.13 -> 4.14]
- xref:camel-4x-upgrade-guide-4_15.adoc[Upgrade guide 4.14 -> 4.15]
- xref:camel-4x-upgrade-guide-4_16.adoc[Upgrade guide 4.15 -> 4.16]
+- xref:camel-4x-upgrade-guide-4_17.adoc[Upgrade guide 4.16 -> 4.17]
[NOTE]
====
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java-templates/org/apache/camel/dsl/jbang/core/common/RuntimeType.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java-templates/org/apache/camel/dsl/jbang/core/common/RuntimeType.java
index 27ada0687dd4..e30ed9954495 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java-templates/org/apache/camel/dsl/jbang/core/common/RuntimeType.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java-templates/org/apache/camel/dsl/jbang/core/common/RuntimeType.java
@@ -28,6 +28,7 @@ public enum RuntimeType {
public static final String QUARKUS_VERSION = "${quarkus-version}";
public static final String SPRING_BOOT_VERSION = "${spring-boot-version}";
+ public static final String KAMELETS_VERSION =
"${camel-kamelets-catalog-version}";
public static RuntimeType fromValue(String value) {
value = value.toLowerCase(Locale.ROOT);
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index dff88d944584..840e8d717adf 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -165,8 +165,9 @@ public abstract class ExportBaseCommand extends
CamelCommand {
protected String camelVersion;
@CommandLine.Option(names = {
- "--kamelets-version" }, description = "Apache Camel Kamelets
version")
- protected String kameletsVersion;
+ "--kamelets-version" }, description = "Apache Camel Kamelets
version",
+ defaultValue = RuntimeType.KAMELETS_VERSION)
+ protected String kameletsVersion = RuntimeType.KAMELETS_VERSION;
@CommandLine.Option(names = { "--profile" }, scope =
CommandLine.ScopeType.INHERIT,
description = "Profile to export (dev, test, or
prod).")
@@ -472,12 +473,14 @@ public abstract class ExportBaseCommand extends
CamelCommand {
boolean skip = v == null ||
v.contains("org.apache.camel:camel-core-languages")
|| v.contains("org.apache.camel:camel-java-joor-dsl")
|| v.contains("camel-endpointdsl")
+ ||
(v.contains("org.apache.camel.kamelets:camel-kamelets"))
|| !(kamelets) &&
v.contains("org.apache.camel:camel-kamelet");
if (!skip) {
answer.add(v);
}
if (kamelets && v != null &&
v.contains("org.apache.camel:camel-kamelet")) {
- // kamelets need yaml-dsl
+ // kamelets also need yaml-dsl
+ answer.add("camel:kamelet");
answer.add("camel:yaml-dsl");
if (asfKamelets) {
// include JARs for official ASF kamelets
@@ -493,7 +496,8 @@ public abstract class ExportBaseCommand extends
CamelCommand {
for (String d : deps.split(",")) {
answer.add(d.trim());
if (kamelets &&
d.contains("org.apache.camel:camel-kamelet")) {
- // kamelets need yaml-dsl
+ // kamelets also need yaml-dsl
+ answer.add("camel:kamelet");
answer.add("camel:yaml-dsl");
if (asfKamelets) {
// include JARs for official ASF kamelets
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 8e6330f37322..2a13a518833f 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
@@ -1431,6 +1431,9 @@ public class Run extends CamelCommand {
if (camelVersion != null) {
cmds.remove("--camel-version=" + camelVersion);
}
+ if (kameletsVersion != null) {
+ cmds.remove("--kamelets-version=" + kameletsVersion);
+ }
// need to use jbang command to specify camel version
List<String> jbangArgs = new ArrayList<>();
jbangArgs.add("jbang");
@@ -1439,7 +1442,11 @@ public class Run extends CamelCommand {
jbangArgs.add("-Dcamel.jbang.version=" + camelVersion);
}
if (kameletsVersion != null) {
- jbangArgs.add("-Dcamel-kamelets.version=" + kameletsVersion);
+ if (camelVersion != null && VersionHelper.isLE(camelVersion,
"4.16.0")) {
+ jbangArgs.add("-Dcamel-kamelets.version=" + camelVersion);
+ } else {
+ cmds.add("--kamelets-version=" + kameletsVersion);
+ }
}
// tooling may signal to run JMX debugger in suspended mode via JVM
system property
// which we must include in args as well
@@ -1461,6 +1468,10 @@ public class Run extends CamelCommand {
ProcessBuilder pb = new ProcessBuilder();
pb.command(jbangArgs);
+ if (verbose) {
+ printer().println(String.join(" ", jbangArgs));
+ }
+
if (background) {
return runBackgroundProcess(pb, "Camel Main");
} else {
@@ -1495,6 +1506,9 @@ public class Run extends CamelCommand {
ProcessBuilder pb = new ProcessBuilder();
pb.command(cmds);
+ if (verbose) {
+ printer().println(String.join(" ", cmds));
+ }
return runBackgroundProcess(pb, "Camel Main");
}
@@ -1642,6 +1656,10 @@ public class Run extends CamelCommand {
jbangArgs.addAll(cmds);
+ if (verbose) {
+ printer().println(String.join(" ", jbangArgs));
+ }
+
ProcessBuilder pb = new ProcessBuilder();
pb.command(jbangArgs);
if (background) {
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
index 2188c5941b3c..41d76d4f76a2 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
@@ -103,8 +103,9 @@ public class CatalogDoc extends CamelCommand {
boolean headers;
@CommandLine.Option(names = {
- "--kamelets-version" }, description = "Apache Camel Kamelets
version", defaultValue = "4.15.0")
- String kameletsVersion;
+ "--kamelets-version" }, description = "Apache Camel Kamelets
version",
+ defaultValue = RuntimeType.KAMELETS_VERSION)
+ String kameletsVersion = RuntimeType.KAMELETS_VERSION;
CamelCatalog catalog;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
index 8635abf0ee6e..cccc22f80bb9 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
@@ -29,6 +29,7 @@ import com.github.freva.asciitable.Column;
import com.github.freva.asciitable.HorizontalAlign;
import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
import org.apache.camel.dsl.jbang.core.common.VersionHelper;
import org.apache.camel.main.download.DependencyDownloaderClassLoader;
import org.apache.camel.main.download.MavenDependencyDownloader;
@@ -53,8 +54,9 @@ public class CatalogKamelet extends CamelCommand {
String filterName;
@CommandLine.Option(names = {
- "--kamelets-version" }, description = "Apache Camel Kamelets
version")
- String kameletsVersion;
+ "--kamelets-version" }, description = "Apache Camel Kamelets
version",
+ defaultValue = RuntimeType.KAMELETS_VERSION)
+ String kameletsVersion = RuntimeType.KAMELETS_VERSION;
public CatalogKamelet(CamelJBangMain main) {
super(main);
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
index 511d7311e3aa..8bf84d7bfb87 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
@@ -217,18 +217,28 @@ class ExportTest {
if (rt == RuntimeType.main) {
Assertions.assertTrue(containsDependency(model.getDependencies(),
"org.apache.camel", "camel-kamelet", null));
+ Assertions.assertTrue(containsDependency(model.getDependencies(),
"org.apache.camel", "camel-http", null));
+ Assertions.assertTrue(containsDependency(model.getDependencies(),
"org.apache.camel", "camel-sql", null));
Assertions
.assertFalse(
containsDependency(model.getDependencies(),
"org.apache.camel.kamelets", "camel-kamelets", null));
} else if (rt == RuntimeType.springBoot) {
Assertions.assertTrue(
containsDependency(model.getDependencies(),
"org.apache.camel.springboot", "camel-kamelet-starter", null));
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(),
"org.apache.camel.springboot", "camel-http-starter", null));
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(),
"org.apache.camel.springboot", "camel-sql-starter", null));
Assertions
.assertFalse(
containsDependency(model.getDependencies(),
"org.apache.camel.kamelets", "camel-kamelets", null));
} else if (rt == RuntimeType.quarkus) {
Assertions.assertTrue(
containsDependency(model.getDependencies(),
"org.apache.camel.quarkus", "camel-quarkus-kamelet", null));
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(),
"org.apache.camel.quarkus", "camel-quarkus-http", null));
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(),
"org.apache.camel.quarkus", "camel-quarkus-sql", null));
Assertions
.assertFalse(
containsDependency(model.getDependencies(),
"org.apache.camel.kamelets", "camel-kamelets", null));
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/test/resources/use-source-route.yaml
b/dsl/camel-jbang/camel-jbang-core/src/test/resources/use-source-route.yaml
new file mode 100644
index 000000000000..0d4e2e0f84c1
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/test/resources/use-source-route.yaml
@@ -0,0 +1,23 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+- from:
+ uri: kamelet:user-source
+ steps:
+ - setBody:
+ constant: Hello Camel !!!
+ - to: log:info
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/test/resources/user-source.kamelet.yaml
b/dsl/camel-jbang/camel-jbang-core/src/test/resources/user-source.kamelet.yaml
index 7cbbb6df9bb7..de8aa1f5aea2 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/test/resources/user-source.kamelet.yaml
+++
b/dsl/camel-jbang/camel-jbang-core/src/test/resources/user-source.kamelet.yaml
@@ -45,6 +45,7 @@ spec:
- "camel:timer"
- "camel:http"
- "camel:kamelet"
+ - "camel:sql"
template:
from:
uri: "timer:user"
diff --git a/dsl/camel-kamelet-main/pom.xml b/dsl/camel-kamelet-main/pom.xml
index 711c0bb54cee..b719f91edbbb 100644
--- a/dsl/camel-kamelet-main/pom.xml
+++ b/dsl/camel-kamelet-main/pom.xml
@@ -216,6 +216,18 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>templating-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>filter-src</id>
+ <goals>
+ <goal>filter-sources</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
diff --git a/dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc
b/dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc
index 3cac474929d4..67dda062e625 100644
--- a/dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc
+++ b/dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc
@@ -20,7 +20,7 @@ The `KameletMain` is pre-configured with the following
properties:
[source,properties]
----
-camel.component.kamelet.location =
classpath:kamelets,github:apache:camel-kamelets/kamelets
+camel.component.kamelet.location = classpath:kamelets
camel.component.rest.consumerComponentName = platform-http
camel.component.rest.producerComponentName = vertx-http
camel.main.jmxUpdateRouteEnabled = true
@@ -28,25 +28,5 @@ camel.main.jmxUpdateRouteEnabled = true
These settings can be overridden by configuration in `application.properties`.
-== Automatic dependencies downloading
-
-The Kamelet Main can automatically download Kamelet YAML files from a remote
location over http/https, and from github as well.
-
-The official Kamelets from the Apache Camel Kamelet Catalog is stored on
github and they can be used out of the box as-is.
-
-For example a Camel route can be _coded_ in YAML which uses the Earthquake
Kamelet from the catalog, as shown below:
-
-[source,yaml]
-----
-- route:
- from: "kamelet:earthquake-source"
- steps:
- - unmarshal:
- json: {}
- - log: "Earthquake with magnitude ${body[properties][mag]} at
${body[properties][place]}"
-----
-
-In this use-case the earthquake kamelet will be downloaded from github, and as
well its required dependencies.
-
You can find an example with this at
https://github.com/apache/camel-examples/tree/main/kamelet-main[kamelet-main].
diff --git
a/dsl/camel-kamelet-main/src/main/java-templates/org/apache/camel/main/util/KameletCatalogHelper.java
b/dsl/camel-kamelet-main/src/main/java-templates/org/apache/camel/main/util/KameletCatalogHelper.java
new file mode 100644
index 000000000000..291de6467410
--- /dev/null
+++
b/dsl/camel-kamelet-main/src/main/java-templates/org/apache/camel/main/util/KameletCatalogHelper.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.main.util;
+
+public class KameletCatalogHelper {
+
+ public static final String KAMELETS_VERSION =
"${camel-kamelets-catalog-version}";
+
+}
diff --git
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
index 32de5172de4b..af15d05e9c44 100644
---
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
+++
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
@@ -118,7 +118,7 @@ import org.apache.camel.tooling.maven.MavenGav;
*/
public class KameletMain extends MainCommandLineSupport {
- public static final String DEFAULT_KAMELETS_LOCATION =
"classpath:kamelets,github:apache:camel-kamelets/kamelets";
+ public static final String DEFAULT_KAMELETS_LOCATION =
"classpath:kamelets";
private final String instanceType;
protected final MainRegistry registry = new MainRegistry();
diff --git
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
index 3955166ed44f..b7ef150526d4 100644
---
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
+++
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
@@ -129,6 +129,16 @@ public final class DependencyDownloaderKamelet extends
ServiceSupport
this.kameletsVersion = kameletsVersion;
}
+ @Override
+ protected void doInit() throws Exception {
+ super.doInit();
+
+ MavenDependencyDownloader downloader =
getCamelContext().hasService(MavenDependencyDownloader.class);
+ if (!downloader.alreadyOnClasspath("org.apache.camel.kamelets",
"camel-kamelets", kameletsVersion)) {
+ downloader.downloadDependency("org.apache.camel.kamelets",
"camel-kamelets", kameletsVersion, false);
+ }
+ }
+
@Override
protected RouteBuilder builder(YamlDeserializationContext ctx, Node
node) {
Node name = nodeAt(node, "/metadata/name");
diff --git
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownKameletRoutesBuilderLoader.java
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownKameletRoutesBuilderLoader.java
index 549784b55c96..f2dc291ada70 100644
---
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownKameletRoutesBuilderLoader.java
+++
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownKameletRoutesBuilderLoader.java
@@ -37,6 +37,20 @@ public class KnownKameletRoutesBuilderLoader extends
KameletRoutesBuilderLoader
this.kameletsVersion = kameletsVersion;
}
+ @Override
+ protected void doInit() throws Exception {
+ super.doInit();
+
+ // download kamelet catalog for the correct version
+ if (kameletsVersion == null || kameletsVersion.isBlank()) {
+ kameletsVersion = VersionHelper.extractKameletsVersion();
+ }
+ MavenDependencyDownloader downloader =
getCamelContext().hasService(MavenDependencyDownloader.class);
+ if (!downloader.alreadyOnClasspath("org.apache.camel.kamelets",
"camel-kamelets", kameletsVersion)) {
+ downloader.downloadDependency("org.apache.camel.kamelets",
"camel-kamelets", kameletsVersion, false);
+ }
+ }
+
@Override
public RouteBuilder doLoadRouteBuilder(Resource resource) throws Exception
{
if (!resource.exists()) {
@@ -54,13 +68,7 @@ public class KnownKameletRoutesBuilderLoader extends
KameletRoutesBuilderLoader
}
private List<String> findKameletNames() {
- // download kamelet catalog for the correct version
- if (kameletsVersion == null || kameletsVersion.isBlank()) {
- kameletsVersion = VersionHelper.extractKameletsVersion();
- }
-
try {
- // dynamic download kamelets-catalog that has the known names
MavenDependencyDownloader downloader =
getCamelContext().hasService(MavenDependencyDownloader.class);
if (!downloader.alreadyOnClasspath("org.apache.camel.kamelets",
"camel-kamelets-catalog", kameletsVersion)) {
downloader.downloadDependency("org.apache.camel.kamelets",
"camel-kamelets-catalog", kameletsVersion);
diff --git
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/VersionHelper.java
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/VersionHelper.java
index 6dc137d2d99f..86245b9d95fd 100644
---
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/VersionHelper.java
+++
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/VersionHelper.java
@@ -28,7 +28,6 @@ public final class VersionHelper {
private static String camelVersion;
- private static final String KAMELETS_DEFAULT_VERSION = "4.14.1";
private static final Pattern KAMELETS_LIBRARY =
Pattern.compile("camel-kamelets-(\\d[\\w\\d.-]*).jar", Pattern.DOTALL);
private static final Pattern CAMEL_BASE_ENGINE_LIBRARY
= Pattern.compile("camel-base-engine-(\\d[\\w\\d.-]*).jar",
Pattern.DOTALL);
@@ -125,7 +124,7 @@ public final class VersionHelper {
}
}
- return KAMELETS_DEFAULT_VERSION;
+ return KameletCatalogHelper.KAMELETS_VERSION;
}
public static String extractCamelVersion() {