[
https://issues.apache.org/jira/browse/CAMEL-26439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18135929#comment-18135929
]
Claus Ibsen commented on CAMEL-26439:
-------------------------------------
Fixed via https://github.com/apache/camel/pull/28775
_Claude Code on behalf of Claus Ibsen_
> Generated property configurers lower-case option names with the JVM default
> locale, so options with a capital I fail with "Unknown parameters" under a
> Turkish locale
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26439
> URL: https://issues.apache.org/jira/browse/CAMEL-26439
> Project: Camel
> Issue Type: Bug
> Components: camel-package-maven-plugin
> Affects Versions: 4.23.0
> Reporter: Serdar Gökay
> Priority: Minor
> Fix For: 4.24.0
>
>
> The velocity template {{property-configurer.vm}} in
> {{camel-package-maven-plugin}} generates
> {code:java}
> switch (ignoreCase ? name.toLowerCase() : name) {
> {code}
> without a locale. {{DefaultComponent.setProperties}} binds endpoint options
> with {{withIgnoreCase(true)}}, so the configurer lower-cases every option
> name with the default locale. Under {{tr}} (and {{az}}) the capital {{I}}
> becomes the dotless {{ı}}: {{clientId}} becomes {{clientıd}}, matches no case
> label, and the configurer returns false.
> The same template also lower-cases the case labels at build time ({{case
> "${option.name.toLowerCase()}"}}), so the generated sources depend on the
> locale of the machine that builds Camel; {{invoke-on-header.vm}} has the same
> pattern. 14 calls in the velocity templates are affected.
> Reproducer (Camel JBang 4.23.0, no broker needed):
> {code:yaml}
> - route:
> from:
> uri: timer:tick?repeatCount=1
> steps:
> - to: paho-mqtt5:demo?clientId=demo1&brokerUrl=tcp://127.0.0.1:1
> {code}
> * {{JAVA_TOOL_OPTIONS="-Duser.language=tr -Duser.country=TR" camel run
> paho.yaml}} fails at route creation: {{ResolveEndpointFailedException ...
> There are 1 parameters that couldn't be set on the endpoint}} ({{clientId}}).
> * With {{-Duser.language=en -Duser.country=US}} the endpoint is created and
> the route fails later, as expected, with {{Connection refused}}.
> Not every option is affected: {{log:demo?showExchangeId=true}} works under
> {{tr}}, presumably because the reflection fallback in
> {{PropertyBindingSupport}} finds the setter after the configurer misses.
> {{clientId}} lives on the paho-mqtt5 configuration object and is not found
> that way.
> This is the same class of problem as CAMEL-5199 ({{ObjectHelper.capitalize}},
> fixed in 2.10.0), now in the generated configurers.
> Proposed fix: use {{toLowerCase(Locale.ROOT)}} in the velocity templates
> (runtime switch and generated case labels), regenerate the configurers, and
> add a test that binds an option with a capital I under a {{tr_TR}} default
> locale.
> _Claude Code on behalf of etzel-mes_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)