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

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

commit 3dd87c2b698ec3e318e55206c7fc706ab3eeb618
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Jul 8 11:45:19 2021 +0200

    CAMEL-16757: camel-core - Global error handling, interceptor in all DSL
---
 .../org/apache/camel/impl/engine/AbstractCamelContext.java    |  7 ++++++-
 .../org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java   |  3 ++-
 .../org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java    | 11 ++++-------
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 0a73ae4..2fc843b 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -1144,7 +1144,12 @@ public abstract class AbstractCamelContext extends 
BaseService
     }
 
     @Override
-    public void addRoutes(final RoutesBuilder builder) throws Exception {
+    public void addRoutes(RoutesBuilder builder) throws Exception {
+        // in case the builder is also a route configuration builder
+        // then we need to add the configuration first
+        if (builder instanceof RouteConfigurationsBuilder) {
+            addRoutesConfigurations((RouteConfigurationsBuilder) builder);
+        }
         try (LifecycleHelper helper = new LifecycleHelper()) {
             build();
             LOG.debug("Adding routes from builder: {}", builder);
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 87d7813..27cab1d 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,7 @@ import java.io.InputStream;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.RouteConfigurationBuilder;
 import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.RouteConfigurationDefinition;
@@ -43,7 +44,7 @@ public class XmlRoutesBuilderLoader extends 
RouteBuilderLoaderSupport {
 
     @Override
     public RouteBuilder doLoadRouteBuilder(Resource resource) throws Exception 
{
-        return new RouteBuilder() {
+        return new RouteConfigurationBuilder() {
             @Override
             public void configure() throws Exception {
                 // we use configure to load the routes (with namespace and 
without namespace)
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
index d4df516..50348b5 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
@@ -20,8 +20,8 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.RouteConfigurationBuilder;
 import org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinition;
-import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.model.RouteConfigurationDefinition;
 import org.apache.camel.model.RouteDefinition;
@@ -45,7 +45,7 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
     }
 
     protected RouteBuilder builder(Node root) {
-        return new RouteBuilder() {
+        return new RouteConfigurationBuilder() {
             @Override
             public void configure() throws Exception {
                 for (Node node : asSequenceNode(root).getValue()) {
@@ -61,9 +61,6 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
                     } else if (item instanceof RouteDefinition) {
                         
CamelContextAware.trySetCamelContext(getRouteCollection(), getCamelContext());
                         getRouteCollection().route((RouteDefinition) item);
-                    } else if (item instanceof RouteConfigurationDefinition) {
-                        
CamelContextAware.trySetCamelContext(getRouteConfigurationCollection(), 
getCamelContext());
-                        
getRouteConfigurationCollection().routeConfiguration((RouteConfigurationDefinition)
 item);
                     } else if (item instanceof CamelContextCustomizer) {
                         ((CamelContextCustomizer) 
item).configure(getCamelContext());
                     } else if (item instanceof OnExceptionDefinition) {
@@ -102,8 +99,8 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
                 for (Node node : asSequenceNode(root).getValue()) {
                     Object item = 
getDeserializationContext().mandatoryResolve(node).construct(node);
                     if (item instanceof RouteConfigurationDefinition) {
-                        getContext().adapt(ModelCamelContext.class)
-                                
.addRouteConfiguration((RouteConfigurationDefinition) item);
+                        
CamelContextAware.trySetCamelContext(getRouteConfigurationCollection(), 
getCamelContext());
+                        
getRouteConfigurationCollection().routeConfiguration((RouteConfigurationDefinition)
 item);
                     }
                 }
             }

Reply via email to