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 14:59:55 UTC
[camel] 01/01: 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.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch rc
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 8e0b3195ebe25986ab9eafe5eb2b648ab2868459
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Oct 13 16:59:40 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.
---
.../java/org/apache/camel/builder/RouteBuilder.java | 21 ++++++++++++++++-----
.../camel/builder/RouteConfigurationBuilder.java | 6 ++++++
2 files changed, 22 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 0c72cba8f95..d3a032bc011 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
@@ -714,14 +714,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.getCamelContextExtension().getErrorHandlerFactory() != null) {
- setErrorHandlerFactory(
- camelContext.getCamelContextExtension().getErrorHandlerFactory());
- }
+ initializeCamelContext(camelContext);
List<RouteBuilderLifecycleStrategy> strategies = new ArrayList<>(lifecycleInterceptors);
strategies.addAll(camelContext.getRegistry().findByType(RouteBuilderLifecycleStrategy.class));
@@ -737,6 +734,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
getRouteCollection().setResource(getResource());
getRestCollection().setResource(getResource());
getRouteTemplateCollection().setResource(getResource());
+ getTemplatedRouteCollection().setResource(getResource());
for (RegistryBeanDefinition def : beans) {
def.setResource(getResource());
}
@@ -752,6 +750,19 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
}
}
+ protected void initializeCamelContext(CamelContext camelContext) {
+ // Set the CamelContext ErrorHandler here
+ if (camelContext.getCamelContextExtension().getErrorHandlerFactory() != null) {
+ setErrorHandlerFactory(
+ camelContext.getCamelContextExtension().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 75a0de88b31..61e2f59daee 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) {