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();

Reply via email to