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

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


The following commit(s) were added to refs/heads/camel-4.18.x by this push:
     new cd5af1113f34 Fix transformer name normalization for catalog lookup 
during export (#23782)
cd5af1113f34 is described below

commit cd5af1113f34e6045688a8c19cedee7a555871c4
Author: Salvatore Mongiardo <[email protected]>
AuthorDate: Fri Jun 5 17:29:13 2026 +0200

    Fix transformer name normalization for catalog lookup during export (#23782)
    
    Transformer names use colon-separated format (e.g., 
aws2-ddb:application-json)
    but the catalog stores them in dash-separated format 
(aws2-ddb-application-json).
    Normalize the name before catalog lookup using the existing normalize() 
method.
    
    This fixes camel export failing with "Cannot find transformer with name:
    aws2-ddb:application-json. Did you mean: aws2-ddb-application-json" when
    exporting routes that use kamelets with data type transformers.
---
 .../DependencyDownloaderTransformerResolver.java       |  6 ++++--
 .../DependencyDownloaderTransformerResolverTest.java   | 18 ++++++++++++++++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderTransformerResolver.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderTransformerResolver.java
index 52a413c68913..23483adc8ad2 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderTransformerResolver.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderTransformerResolver.java
@@ -48,7 +48,9 @@ public final class DependencyDownloaderTransformerResolver 
extends DefaultTransf
     @Override
     public Transformer resolve(TransformerKey key, CamelContext context) {
         String name = key.toString();
-        TransformerModel model = catalog.transformerModel(name);
+        // catalog stores transformer names in normalized (dash-separated) 
format
+        String normalizedName = normalize(key);
+        TransformerModel model = catalog.transformerModel(normalizedName);
         if (model != null) {
             downloadLoader(model.getGroupId(), model.getArtifactId(), 
model.getVersion());
         }
@@ -63,7 +65,7 @@ public final class DependencyDownloaderTransformerResolver 
extends DefaultTransf
         }
 
         if (answer == null) {
-            List<String> suggestion = 
SuggestSimilarHelper.didYouMean(catalog.findTransformerNames(), name);
+            List<String> suggestion = 
SuggestSimilarHelper.didYouMean(catalog.findTransformerNames(), normalizedName);
             if (suggestion != null && !suggestion.isEmpty()) {
                 String s = String.join(", ", suggestion);
                 throw new IllegalArgumentException("Cannot find transformer 
with name: " + name + ". Did you mean: " + s);
diff --git 
a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/download/DependencyDownloaderTransformerResolverTest.java
 
b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/download/DependencyDownloaderTransformerResolverTest.java
index 37fd76c1f88e..97f08a3cd03d 100644
--- 
a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/download/DependencyDownloaderTransformerResolverTest.java
+++ 
b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/download/DependencyDownloaderTransformerResolverTest.java
@@ -16,9 +16,11 @@
  */
 package org.apache.camel.main.download;
 
+import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.impl.engine.SimpleCamelContext;
 import org.apache.camel.spi.Transformer;
 import org.apache.camel.spi.TransformerKey;
+import org.apache.camel.tooling.model.TransformerModel;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -44,4 +46,20 @@ public class DependencyDownloaderTransformerResolverTest {
         TransformerKey resultKey = TransformerKey.createFrom(transformer);
         assertNotNull(resultKey);
     }
+
+    @Test
+    void catalogLookupShouldNormalizeColonSeparatedNames() {
+        DefaultCamelCatalog catalog = new DefaultCamelCatalog();
+        DependencyDownloaderTransformerResolver resolver
+                = new DependencyDownloaderTransformerResolver(new 
SimpleCamelContext(), "*", true);
+
+        // transformer names use colon format (e.g., aws2-ddb:application-json)
+        // but the catalog stores them in dash format 
(aws2-ddb-application-json)
+        String colonName = "aws2-ddb:application-json";
+        String normalizedName = resolver.normalize(new 
TransformerKey(colonName));
+
+        TransformerModel model = catalog.transformerModel(normalizedName);
+        assertNotNull(model, "Catalog should find transformer using normalized 
name: " + normalizedName);
+        assertNotNull(model.getArtifactId(), "Transformer model should have 
artifactId");
+    }
 }

Reply via email to