This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit cb33ca2d350b79e8290ffbbba645af49ad8be94a Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Apr 15 15:20:57 2021 +0200 CAMEL-16476: XML DSL route loader should prepare route, like spring/blueprint xml dsl does. --- .../apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java | 15 ++++++++++++++- .../camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java | 10 ++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java index 589f2d1..8eeeb6c 100644 --- a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java +++ b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java @@ -21,6 +21,9 @@ import java.io.InputStream; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.dsl.support.RouteBuilderLoaderSupport; +import org.apache.camel.model.RouteDefinition; +import org.apache.camel.model.RouteDefinitionHelper; +import org.apache.camel.model.RoutesDefinition; import org.apache.camel.spi.Resource; import org.apache.camel.spi.annotations.RoutesLoader; import org.apache.camel.xml.in.ModelParser; @@ -54,9 +57,19 @@ public class XmlRoutesBuilderLoader extends RouteBuilderLoaderSupport { try (InputStream is = resource.getInputStream()) { new ModelParser(is, NAMESPACE) .parseRoutesDefinition() - .ifPresent(this::setRouteCollection); + .ifPresent(this::addRoutes); } } + + private void addRoutes(RoutesDefinition routes) { + // xml routes must be marked as un-prepared as camel-core + // must do special handling for XML DSL + for (RouteDefinition route : routes.getRoutes()) { + RouteDefinitionHelper.prepareRoute(getCamelContext(), route); + route.markPrepared(); + } + setRouteCollection(routes); + } }; } } diff --git a/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java b/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java index 906e4b0..c07a26b 100644 --- a/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java +++ b/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java @@ -21,6 +21,8 @@ import java.io.InputStream; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.dsl.support.RouteBuilderLoaderSupport; +import org.apache.camel.model.RouteDefinition; +import org.apache.camel.model.RouteDefinitionHelper; import org.apache.camel.model.RouteTemplatesDefinition; import org.apache.camel.model.RoutesDefinition; import org.apache.camel.model.rest.RestsDefinition; @@ -63,6 +65,14 @@ public class JaxbXmlRoutesBuilderLoader extends RouteBuilderLoaderSupport { try (InputStream is = resource.getInputStream()) { RoutesDefinition routes = loadRoutesDefinition(getCamelContext(), is); if (routes != null) { + // xml routes must be marked as un-prepared as camel-core + // must do special handling for XML DSL + for (RouteDefinition route : routes.getRoutes()) { + RouteDefinitionHelper.prepareRoute(getCamelContext(), route); + route.markPrepared(); + } + + routes.getRoutes().forEach(RouteDefinition::markUnprepared); setRouteCollection(routes); } }