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 a77ed26624fc CAMEL-26912: camel-jbang - camel export loads the Kamelet
catalog only for an integration that uses Kamelets (#29817)
a77ed26624fc is described below
commit a77ed26624fc6b2cbb2adaaae8efaac50dc88411
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Nov 13 16:41:15 2026 +0100
CAMEL-26912: camel-jbang - camel export loads the Kamelet catalog only for
an integration that uses Kamelets (#29817)
Every export downloaded and loaded the Kamelets catalog (38 MB with its
dependencies on a first export), and failed without it, also for a route
that uses no Kamelets.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Claus Ibsen <[email protected]>
---
.../org/apache/camel/dsl/jbang/run/export/Exporter.java | 9 +++++++--
.../camel/dsl/jbang/run/export/ProjectExporterTest.java | 16 ++++++++++++++++
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git
a/dsl/camel-jbang/camel-jbang-run/src/main/java/org/apache/camel/dsl/jbang/run/export/Exporter.java
b/dsl/camel-jbang/camel-jbang-run/src/main/java/org/apache/camel/dsl/jbang/run/export/Exporter.java
index 8e652bd111ed..a20af4603aaa 100644
---
a/dsl/camel-jbang/camel-jbang-run/src/main/java/org/apache/camel/dsl/jbang/run/export/Exporter.java
+++
b/dsl/camel-jbang/camel-jbang-run/src/main/java/org/apache/camel/dsl/jbang/run/export/Exporter.java
@@ -340,13 +340,18 @@ abstract class Exporter {
List<String> lines = RuntimeUtil.loadPropertiesLines(settings);
// check if we use custom and/or official ASF kamelets
- List<String> officialKamelets
- =
KameletCatalogHelper.findKameletNames(request.kameletsVersion,
request.mavenResolver.repos());
+ List<String> officialKamelets = null;
boolean kamelets = false;
boolean asfKamelets = false;
for (String line : lines) {
if (line.startsWith("kamelet=")) {
kamelets = true;
+ if (officialKamelets == null) {
+ // the Kamelet catalog is downloaded only for an
integration that uses Kamelets: it is about 38 MB
+ // with its dependencies on a first export (CAMEL-26912)
+ officialKamelets =
KameletCatalogHelper.findKameletNames(request.kameletsVersion,
+ request.mavenResolver.repos());
+ }
String name = StringHelper.after(line, "kamelet=");
if (officialKamelets.contains(name)) {
asfKamelets = true;
diff --git
a/dsl/camel-jbang/camel-jbang-run/src/test/java/org/apache/camel/dsl/jbang/run/export/ProjectExporterTest.java
b/dsl/camel-jbang/camel-jbang-run/src/test/java/org/apache/camel/dsl/jbang/run/export/ProjectExporterTest.java
index b6e12035e9a1..7d6d02463f0c 100644
---
a/dsl/camel-jbang/camel-jbang-run/src/test/java/org/apache/camel/dsl/jbang/run/export/ProjectExporterTest.java
+++
b/dsl/camel-jbang/camel-jbang-run/src/test/java/org/apache/camel/dsl/jbang/run/export/ProjectExporterTest.java
@@ -294,6 +294,22 @@ class ProjectExporterTest {
return file;
}
+ @Test
+ void doesNotLoadTheKameletCatalogForAnIntegrationWithoutKamelets() throws
Exception {
+ Path route = writeRoute("hello");
+ Path exportDir = dir.resolve("export");
+ ExportRequest request = request(route, exportDir);
+ // a catalog that cannot be downloaded: the export would fail to load
it
+ request.kameletsVersion = "0.0.0-no-such-version";
+
+ StringPrinter printer = new StringPrinter();
+ int exit = new ProjectExporter(new
ExportContext().withPrinter(printer).withDependencyResolver(resolver))
+ .export(request);
+
+ assertThat(exit).as(printer.getOutput()).isZero();
+ assertThat(exportDir.resolve("pom.xml")).exists();
+ }
+
@Test
void requiresRuntime() throws Exception {
ExportRequest request = new ExportRequest();