You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Marco Carletti (Jira)" <ji...@apache.org> on 2026/07/06 07:26:00 UTC

[jira] [Created] (CAMEL-23914) camel-jbang export fails with TypeConversionException when kamelet has optional Long property

Marco Carletti created CAMEL-23914:
--------------------------------------

             Summary: 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


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)