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

Claus Ibsen reassigned CAMEL-23763:
-----------------------------------

    Assignee: Claus Ibsen

> camel-xml-io ModelWriter writes kamelet child element as route attribute 
> breaking XML round-trip
> ------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-23763
>                 URL: https://issues.apache.org/jira/browse/CAMEL-23763
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Minor
>              Labels: eip
>
> When a route contains a {{<kamelet name="my-processor"/>}} child element, the 
> XML ModelWriter in camel-xml-io writes it back as a {{kamelet="false"}} 
> attribute on the {{<route>}} element instead of preserving the {{<kamelet>}} 
> child element. This breaks XML round-trip (parse, write, re-parse).
> *Input XML:*
> {code:xml}
> <routes xmlns="http://camel.apache.org/schema/xml-io";>
>   <route>
>     <from uri="direct:start"/>
>     <kamelet name="my-processor"/>
>     <to uri="mock:result"/>
>   </route>
> </routes>
> {code}
> *Written XML (incorrect):*
> {code:xml}
> <route kamelet="false" xmlns="http://camel.apache.org/schema/xml-io";>
>   <from uri="direct:start"/>
>   <to uri="mock:result"/>
> </route>
> {code}
> The {{<kamelet>}} child element is lost entirely, and a spurious 
> {{kamelet="false"}} attribute appears on the {{<route>}} element. Re-parsing 
> the written XML then fails with: {{Unexpected attribute 'kamelet'}}.
> *Root cause:* {{RouteDefinition}} has a boolean {{kamelet}} field that is a 
> runtime transient (used internally to mark whether a route originates from a 
> kamelet). The XML ModelWriter picks up this boolean field and writes it as an 
> XML attribute, while the actual {{KameletDefinition}} child element (the 
> Kamelet EIP) is not written. The writer should never serialize the transient 
> boolean and should always write the {{KameletDefinition}} child element.
> *Discovered while:* adding compile-validation tests for the new Java DSL 
> model writer (CAMEL-23757). The kamelet XML test file had to be placed in 
> camel-java-io test resources instead of camel-xml-io to avoid breaking the 
> ModelWriterTest round-trip tests.



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

Reply via email to