[ 
https://issues.apache.org/jira/browse/CAMEL-23384?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marco Carletti resolved CAMEL-23384.
------------------------------------
    Resolution: Fixed

> 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.18.2, 4.20.0
>            Reporter: Marco Carletti
>            Assignee: Marco Carletti
>            Priority: Minor
>             Fix For: 4.18.3, 4.21.0
>
>
> 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
> {code:java}
> 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)
>           {code}
>                                                                               
>                                                   
> Steps to Reproduce
> 1. Create a route file (`TimerWithBodyRouteBuilder.java`):
> {code: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");
>     }
> }{code}
>  
> 2. Run camel export:
> {code:java}
> camel export --runtime=spring-boot --gav=com.test:test:1.0 --dir=target 
> TimerWithBodyRouteBuilder.java{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to