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 15:29:03 UTC
[camel] branch main 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 main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new fb236e78d5b 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)
fb236e78d5b is described below
commit fb236e78d5b96c292f47999cf654a80f6c2352ea
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 | 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) {