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 c0d9b50998a3 Fix transformer name normalization for catalog lookup
during export (#23780)
c0d9b50998a3 is described below
commit c0d9b50998a3cbbc859341a242b487fb4bf5c4d5
Author: Salvatore Mongiardo <[email protected]>
AuthorDate: Fri Jun 5 17:28:48 2026 +0200
Fix transformer name normalization for catalog lookup during export (#23780)
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");
+ }
}