You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/04/15 13:21:51 UTC

[camel] branch master updated: CAMEL-16476: XML DSL route loader should prepare route, like spring/blueprint xml dsl does.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new cb33ca2  CAMEL-16476: XML DSL route loader should prepare route, like spring/blueprint xml dsl does.
cb33ca2 is described below

commit cb33ca2d350b79e8290ffbbba645af49ad8be94a
Author: Claus Ibsen <cl...@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);
                     }
                 }