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

[jira] [Updated] (CAMEL-24052) dumpModelAsXml permanently destroys EndpointDSL builders on RouteDefinition

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

Claus Ibsen updated CAMEL-24052:
--------------------------------
    Priority: Minor  (was: Major)

> dumpModelAsXml permanently destroys EndpointDSL builders on RouteDefinition
> ---------------------------------------------------------------------------
>
>                 Key: CAMEL-24052
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24052
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-xml-io
>    Affects Versions: 4.21.0
>            Reporter: Federico Mariani
>            Priority: Minor
>
> {{LwModelToXMLDumper.resolveEndpointDslUris()}} mutates the live {{RouteDefinition}} when serializing it to XML for logging. It calls {{from.setUri(rawUri)}} and {{to.setUri(rawUri)}} on the live {{FromDefinition}}/{{SendDefinition}} objects, which internally call {{clear()}}, permanently nulling the {{endpointConsumerBuilder}}/{{endpointProducerBuilder}} fields and replacing them with a plain URI string.
> For endpoints with non-primitive builder properties (e.g. a custom {{S3Client}}, {{ExceptionHandler}}, or similar bean injected via {{advanced().xxx(myBean)}}), {{getRawUri()}} without a {{CamelContext}} can only produce a URI with a {{?hash=XXXXXXXX}} parameter. After the mutation, Camel no longer resolves the original bean reference and falls back to a default (unconfigured) client, causing route startup failures.
> h3. Trigger
> Any call that invokes the XML dumper on a live route, most commonly {{AdviceWith.adviceWith()}} with the default {{logXml=true}}.
> h3. Reproducer
> A route built with {{EndpointRouteBuilder}} that injects a custom bean into an endpoint via the Endpoint DSL (e.g. {{aws2S3("bucket").advanced().amazonS3Client(myClient)}}). Calling {{AdviceWith.adviceWith(context, "route-id", ...)}} then fails with:
> {noformat}
> Failed to resolve endpoint: aws2-s3://bucket?hash=20810451 due to: AmazonS3Client or accessKey and secretKey must be specified
> {noformat}
> h3. Workaround
> Pass {{logXml=false}} to {{adviceWith()}}.
> h3. Root Cause
> {{resolveEndpointDslUris()}} in {{LwModelToXMLDumper}} calls {{setUri()}} on live model objects before XML serialization but never restores the original builder references afterward.



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