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