Marco Carletti created CAMEL-23384:
--------------------------------------
Summary: camel-kamelet-main: camel export fails with
IllegalArgumentException on kamelets using transformDataType EIP
Key: CAMEL-23384
URL: https://issues.apache.org/jira/browse/CAMEL-23384
Project: Camel
Issue Type: Bug
Components: camel-kamelet-main
Affects Versions: 4.19.0, 4.18.2
Reporter: Marco Carletti
camel export crashes with "IllegalArgumentException: toType must be specified
and not empty" when exporting a route that references a kamelet containing a
transformDataType step (e.g. aws-ddb-sink).
During camel export, Run.java sets stubPattern="*" which stubs all
components/transformers. DependencyDownloaderTransformerResolver.resolve()
returns a new StubTransformer() without setting its name. When
DefaultTransformerRegistry.resolveTransformer() calls
TransformerKey.createFrom(answer), the stub has null name/from/to, so
createFrom() falls to new TransformerKey(answer.getName()) where getName() is
null, causing the crash.
Stack Trace
org.apache.camel.FailedToStartRouteException: Failed to start route:
aws-ddb-sink-1 (source: aws-ddb-sink.kamelet.yaml:142) because: toType must be
specified and not empty
Caused by: java.lang.IllegalArgumentException: toType must be specified and
not empty
at org.apache.camel.util.StringHelper.notEmpty(StringHelper.java:375)
at org.apache.camel.spi.TransformerKey.<init>(TransformerKey.java:33)
at org.apache.camel.spi.TransformerKey.createFrom(TransformerKey.java:67)
at
org.apache.camel.impl.engine.DefaultTransformerRegistry.resolveTransformer(DefaultTransformerRegistry.java:119)
at
org.apache.camel.processor.transformer.DataTypeProcessor.doInit(DataTypeProcessor.java:73)
Steps to Reproduce
1. Create a route file (`TimerWithBodyRouteBuilder.java`):
```java
import org.apache.camel.builder.RouteBuilder;
public class TimerWithBodyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:x?repeatCount=1")
.setBody(constant("\{\"key\": {\"id\": {\"S\": \"1\"}}}"))
.to("kamelet:aws-ddb-sink?table=test®ion=us-east-1&accessKey=x&secretKey=x");
}
}
```
2. Run camel export:
```
camel export --runtime=spring-boot --gav=com.test:test:1.0 --dir=target
TimerWithBodyRouteBuilder.java
```
--
This message was sent by Atlassian Jira
(v8.20.10#820010)