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

Claus Ibsen resolved CAMEL-23914.
---------------------------------
    Resolution: Fixed

> camel-jbang export fails with TypeConversionException when kamelet has 
> optional Long property
> ---------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-23914
>                 URL: https://issues.apache.org/jira/browse/CAMEL-23914
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jbang
>    Affects Versions: 4.21.0
>            Reporter: Marco Carletti
>            Assignee: Marco Carletti
>            Priority: Major
>             Fix For: 4.18.4, 4.22.0
>
>
> When exporting an integration that uses a kamelet with an optional property 
> of type Long (e.g. salesforce-source kamelet with replayId), the 
> camel-launcher export fails with a {_}TypeConversionException{_}.
> During export, unresolved optional properties ({_}{{?replayId}}{_}) are 
> replaced with _@@CamelMagicValue@@_ by {_}ExportPropertiesParser{_}. The 
> _ExportTypeConverter_ registered in _KameletMain.setupExport()_ should handle 
> this placeholder, but in the
> camel-launcher fat JAR the core _CamelBaseBulkConverterLoader_ overwrites it 
> via _CoreTypeConverterRegistry.addConverter()_ — which does a raw 
> _converters.put()_ bypassing the _TypeConverterExists.Override_ policy. The 
> core converter then
> attempts _Long.valueOf("@@CamelMagicValue@@")_ and throws 
> {_}NumberFormatException{_}.
> This does not happen with standalone camel-jbang because components are 
> downloaded lazily and fewer _BulkTypeConverterLoader_ implementations are 
> scanned at startup.
> The fix is to handle _@@CamelMagicValue@@_ directly in 
> _PropertyConfigurerSupport.property()_ for all primitive/wrapper types before 
> calling {_}mandatoryConvertTo(){_}, returning type-safe defaults without 
> relying on the type converter registry.
> Reproducer:
> {code:yaml}
> # salesforce-minimal.yaml
> - route:
>     from:
>       uri: 'kamelet:salesforce-source'
>       parameters:
>         password: 'password'
>         clientId: 'client'
>         loginUrl: 'https://login.salesforce.com'
>         query: 'query'
>         notifyForOperationCreate: true
>         topicName: 'topic'
>         clientSecret: 'secret'
>         userName: 'user'
>       steps:
>         - log: '${body}' {code}
> {code:bash}
> java -jar camel-launcher.jar export salesforce-minimal.yaml \
> --runtime quarkus --gav com.test:example:1.0 --dir .
> {code}
> Stack trace:
> {code:java}
> Caused by: org.apache.camel.TypeConversionException: Error during type 
> conversion
> from type: java.lang.String to the required type: java.lang.Long
> with value @@CamelMagicValue@@
> due to java.lang.NumberFormatException: For input string: 
> "@@CamelMagicValue@@"
> {code}
> Affects any kamelet with optional properties of type long, int, double, 
> float, short, or byte.



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

Reply via email to