[ https://issues.apache.org/jira/browse/CAMEL-21427?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Adriano Machado updated CAMEL-21427: ------------------------------------ Component/s: camel-xml-io (was: camel-yaml-dsl) > XML model serializer is serializing default values > -------------------------------------------------- > > Key: CAMEL-21427 > URL: https://issues.apache.org/jira/browse/CAMEL-21427 > Project: Camel > Issue Type: Bug > Components: camel-xml-io > Affects Versions: 4.8.1 > Reporter: Adriano Machado > Assignee: Claus Ibsen > Priority: Major > > Here's a unit test showing the problem: > > {code:java} > package org.apache.camel.yaml.out; > import java.io.ByteArrayInputStream; > import java.io.StringWriter; > import java.nio.charset.Charset; > import java.util.Optional; > import org.apache.camel.model.ProcessorDefinition; > import org.apache.camel.model.RouteDefinition; > import org.apache.camel.model.RoutesDefinition; > import org.apache.camel.xml.in.ModelParser; > import org.assertj.core.api.InstanceOfAssertFactories; > import org.junit.jupiter.api.Test; > import static org.assertj.core.api.Assertions.assertThat; > class XPathNamespacesTest { > @Test > void test() throws Exception { > try (ByteArrayInputStream is = new > ByteArrayInputStream(XML.getBytes(Charset.defaultCharset()))) { > Optional<RoutesDefinition> routesDefinition = new ModelParser(is, > XmlToYamlTest.NAMESPACE).parseRoutesDefinition(); > assertThat(routesDefinition).isPresent() > > .get(InstanceOfAssertFactories.type(RoutesDefinition.class)) > .extracting(RoutesDefinition::getRoutes, > InstanceOfAssertFactories.list(RouteDefinition.class)) > .singleElement() > .extracting(RouteDefinition::getOutputs, > InstanceOfAssertFactories.list(ProcessorDefinition.class)) > .hasSize(3); > StringWriter sw = new StringWriter(); > new > org.apache.camel.yaml.out.ModelWriter(sw).writeRoutesDefinition(routesDefinition.get()); > assertThat(sw).hasToString(EXPECTED_YAML); > } > } > //language=XML > private static final String XML = """ > <routes xmlns="http://camel.apache.org/schema/spring" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:routes-ns-def="http://www.example.com/schema" > xsi:schemaLocation="http://camel.apache.org/schema/spring > https://camel.apache.org/schema/spring/camel-spring.xsd"> > > <route > id="direct:route-with-xpath-expression-custom-namespace" > xmlns:route-ns-def="http://www.example.com/schema"> > > <from > uri="direct:route-with-xpath-expression-custom-namespace"/> > > <setProperty > name="child-expression-namespace-from-routes"> > <xpath saxon="true" > resultType="java.lang.String">/routes-ns-def:parent/routes-ns-def:child</xpath> > </setProperty> > > <setProperty name="child-expression-namespace-from-route"> > <xpath saxon="true" > resultType="java.lang.String">/route-ns-def:parent/route-ns-def:child</xpath> > </setProperty> > > <setProperty name="child-expression-namespace-from-xpath"> > <xpath saxon="true" resultType="java.lang.String" > xmlns:expression-ns-def="http://www.example.com/schema">/expression-ns-def:parent/expression-ns-def:child</xpath> > </setProperty> > </route> > > </routes> > """; > > //language=yaml > private static final String EXPECTED_YAML = """ > - route: > id: direct:route-with-xpath-expression-custom-namespace > from: > uri: direct:route-with-xpath-expression-custom-namespace > steps: > - setProperty: > name: child-expression-namespace-from-routes > xpath: > resultType: java.lang.String > saxon: "true" > namespace: > xsi: http://www.w3.org/2001/XMLSchema-instance > routes-ns-def: http://www.example.com/schema > route-ns-def: http://www.example.com/schema > expression: > /routes-ns-def:parent/routes-ns-def:child > - setProperty: > name: child-expression-namespace-from-route > xpath: > resultType: java.lang.String > saxon: "true" > namespace: > xsi: http://www.w3.org/2001/XMLSchema-instance > routes-ns-def: http://www.example.com/schema > route-ns-def: http://www.example.com/schema > expression: /route-ns-def:parent/route-ns-def:child > - setProperty: > name: child-expression-namespace-from-xpath > xpath: > resultType: java.lang.String > saxon: "true" > namespace: > xsi: http://www.w3.org/2001/XMLSchema-instance > routes-ns-def: http://www.example.com/schema > route-ns-def: http://www.example.com/schema > expression-ns-def: http://www.example.com/schema > expression: > /expression-ns-def:parent/expression-ns-def:child > """; > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)