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 <claus.ib...@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) {