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&region=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)

Reply via email to