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 2023/10/13 16:34:47 UTC

[camel] branch camel-3.x updated: CAMEL-19967: Fix RouteBuilder/RouteConfigurationBuilder to ensure CamelContext is inject eager. This fixes a problem with using global route configurations in Java and XML DSLs mixed. (#11719)

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

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


The following commit(s) were added to refs/heads/camel-3.x by this push:
     new 2204d1dedb6 CAMEL-19967: Fix RouteBuilder/RouteConfigurationBuilder to ensure CamelContext is inject eager. This fixes a problem with using global route configurations in Java and XML DSLs mixed. (#11719)
2204d1dedb6 is described below

commit 2204d1dedb65296cad3f5df0f6235d4898c933bd
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Oct 13 17:28:53 2023 +0200

    CAMEL-19967: Fix RouteBuilder/RouteConfigurationBuilder to ensure CamelContext is inject eager. This fixes a problem with using global route configurations in Java and XML DSLs mixed. (#11719)
---
 .../java/org/apache/camel/builder/RouteBuilder.java  | 20 +++++++++++++++-----
 .../camel/builder/RouteConfigurationBuilder.java     |  6 ++++++
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
index d2eaf24ba07..f861dd30914 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -706,14 +706,11 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
 
     // Implementation methods
     // -----------------------------------------------------------------------
+
     protected void checkInitialized() throws Exception {
         if (initialized.compareAndSet(false, true)) {
-            // Set the CamelContext ErrorHandler here
             CamelContext camelContext = getContext();
-            if (camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory() != null) {
-                setErrorHandlerFactory(
-                        camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory());
-            }
+            initializeCamelContext(camelContext);
 
             List<RouteBuilderLifecycleStrategy> strategies = new ArrayList<>(lifecycleInterceptors);
             strategies.addAll(camelContext.getRegistry().findByType(RouteBuilderLifecycleStrategy.class));
@@ -739,6 +736,19 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
         }
     }
 
+    protected void initializeCamelContext(CamelContext camelContext) {
+        // Set the CamelContext ErrorHandler here
+        if (camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory() != null) {
+            setErrorHandlerFactory(
+                    camelContext.adapt(ExtendedCamelContext.class).getErrorHandlerFactory());
+        }
+        // inject camel context on collections
+        getRouteCollection().setCamelContext(camelContext);
+        getRestCollection().setCamelContext(camelContext);
+        getRouteTemplateCollection().setCamelContext(camelContext);
+        getTemplatedRouteCollection().setCamelContext(camelContext);
+    }
+
     protected void populateTemplatedRoutes() throws Exception {
         populateTemplatedRoutes(notNullCamelContext());
     }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteConfigurationBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteConfigurationBuilder.java
index 0b22d14404f..b97083a3843 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteConfigurationBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteConfigurationBuilder.java
@@ -97,6 +97,12 @@ public abstract class RouteConfigurationBuilder extends RouteBuilder implements
         }
     }
 
+    @Override
+    protected void initializeCamelContext(CamelContext camelContext) {
+        super.initializeCamelContext(camelContext);
+        getRouteConfigurationCollection().setCamelContext(camelContext);
+    }
+
     protected void populateRoutesConfiguration() throws Exception {
         CamelContext camelContext = getContext();
         if (camelContext == null) {