[
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)