You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/04/02 12:50:04 UTC

[camel] branch main updated (c8ceb4edfe8 -> d422c7bd29f)

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

orpiske pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


    from c8ceb4edfe8 camel-threadpoolfactory-vertx is experimental
     new 6fdc87bd495 CAMEL-15105: make the RouteFactory a plugin of the context
     new 2bd927afdbe CAMEL-15105: make the RoutesLoader a plugin of the context
     new 501498d9c86 CAMEL-15105: make the AsyncProcessorAwaitManager a plugin of the context
     new 504607e8b4c CAMEL-15105: make the RoutesLoader a plugin of the context
     new 59af054339b CAMEL-15105: make the RuntimeCatalog a plugin of the context
     new 34b6acf2516 CAMEL-15105: make the RestBindingJaxbDataFormatFactory a plugin of the context
     new a0bfe1d27aa CAMEL-15105: make the BeanProxyFactory a plugin of the context
     new ccd584b7c8c CAMEL-15105: do register the RestBindingJaxbDataFormatFactory plugin
     new d422c7bd29f CAMEL-15105: formatting fixes

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../rest/RestComponentVerifierExtension.java       |   3 +-
 .../apache/camel/component/rest/RestProducer.java  |   2 +-
 .../org/apache/camel/ExtendedCamelContext.java     |  76 ++-------------
 .../camel/impl/engine/AbstractCamelContext.java    |  35 ++-----
 .../impl/engine/CamelPostProcessorHelper.java      |   3 +-
 .../impl/engine/DefaultCamelContextExtension.java  | 102 ---------------------
 .../impl/engine/SharedCamelInternalProcessor.java  |   3 +-
 .../apache/camel/impl/console/BlockedConsole.java  |   5 +-
 .../camel/impl/ExtendedCamelContextConfigurer.java |  30 ------
 .../impl/lw/LightweightCamelContextExtension.java  |  61 ------------
 .../org/apache/camel/builder/ProxyBuilder.java     |   3 +-
 .../errorhandler/RedeliveryErrorHandler.java       |   2 +-
 .../org/apache/camel/reifier/RouteReifier.java     |   2 +-
 .../camel/reifier/rest/RestBindingReifier.java     |   3 +-
 .../core/xml/AbstractCamelContextFactoryBean.java  |   2 +-
 .../processor/async/AsyncEndpointPolicyTest.java   |   3 +-
 .../AsyncProcessorAwaitManagerInterruptTest.java   |  21 +++--
 ...sorAwaitManagerInterruptWithRedeliveryTest.java |  19 ++--
 .../async/AsyncProcessorAwaitManagerTest.java      |  16 ++--
 .../org/apache/camel/main/BaseMainSupport.java     |   3 +-
 .../camel/main/DefaultConfigurationConfigurer.java |   2 +-
 .../apache/camel/main/DefaultRoutesCollector.java  |   4 +-
 .../org/apache/camel/main/RoutesConfigurer.java    |   2 +-
 .../DefaultComponentVerifierExtension.java         |   3 +-
 .../apache/camel/support/AsyncProcessorHelper.java |   2 +-
 .../camel/support/AsyncProcessorSupport.java       |   2 +-
 .../apache/camel/support/DefaultAsyncProducer.java |   2 +-
 .../org/apache/camel/support/PluginHelper.java     |  99 ++++++++++++++++++++
 .../apache/camel/support/RouteTemplateHelper.java  |   4 +-
 .../camel/support/RouteWatcherReloadStrategy.java  |   2 +-
 .../dsl/groovy/GroovyRouteBuilderLoaderTest.groovy |   3 +-
 .../dsl/java/joor/JavaRoutesBuilderLoaderTest.java |   9 +-
 .../dsl/js/JavaScriptRoutesBuilderLoaderTest.java  |  15 +--
 .../apache/camel/dsl/jsh/JshSourceLoaderTest.java  |   3 +-
 .../java/org/apache/camel/main/KameletMain.java    |   3 +-
 .../dsl/kotlin/KotlinRoutesBuilderLoaderTest.kt    |  19 ++--
 .../apache/camel/dsl/xml/io/XmlLoadRestTest.java   |   3 +-
 .../org/apache/camel/dsl/xml/io/XmlLoadTest.java   |   5 +-
 .../xml/jaxb/definition/LoadRestFromXmlTest.java   |   3 +-
 .../xml/jaxb/definition/LoadRouteFromXmlTest.java  |   3 +-
 .../LoadRouteFromXmlWithInterceptTest.java         |   3 +-
 .../LoadRouteFromXmlWithNamespaceTest.java         |   3 +-
 .../LoadRouteFromXmlWithOnExceptionTest.java       |   3 +-
 .../definition/LoadRouteFromXmlWithPolicyTest.java |   3 +-
 .../definition/RouteTemplateLoadFromXmlTest.java   |   5 +-
 .../jaxb/spring/CamelLoadRoutesFromXMLTest.java    |   5 +-
 .../camel/dsl/xml/jaxb/JaxbXmlLoadRestTest.java    |   3 +-
 .../apache/camel/dsl/xml/jaxb/JaxbXmlLoadTest.java |   3 +-
 .../camel/dsl/yaml/YamlRoutesBuilderLoader.java    |   4 +-
 .../org/apache/camel/dsl/yaml/DelayTest.groovy     |   3 +-
 .../apache/camel/dsl/yaml/DynamicRouterTest.groovy |   3 +-
 .../camel/dsl/yaml/EmptyRouteFileTest.groovy       |   3 +-
 .../org/apache/camel/dsl/yaml/EnrichTest.groovy    |   3 +-
 .../org/apache/camel/dsl/yaml/FilterTest.groovy    |   5 +-
 .../camel/dsl/yaml/JSonPathSuppressTest.groovy     |   3 +-
 .../org/apache/camel/dsl/yaml/LoopTest.groovy      |   5 +-
 .../org/apache/camel/dsl/yaml/MarshalTest.groovy   |   3 +-
 .../apache/camel/dsl/yaml/PollEnrichTest.groovy    |   3 +-
 .../apache/camel/dsl/yaml/RecipientListTest.groovy |   3 +-
 .../apache/camel/dsl/yaml/RemoveHeaderTest.groovy  |   3 +-
 .../camel/dsl/yaml/RemovePropertyTest.groovy       |   3 +-
 .../apache/camel/dsl/yaml/ResequenceTest.groovy    |   3 +-
 .../apache/camel/dsl/yaml/RouteTemplateTest.groovy |   3 +-
 .../apache/camel/dsl/yaml/RoutingSlipTest.groovy   |   3 +-
 .../org/apache/camel/dsl/yaml/SagaTest.groovy      |   5 +-
 .../org/apache/camel/dsl/yaml/ScriptTest.groovy    |   3 +-
 .../org/apache/camel/dsl/yaml/SetBodyTest.groovy   |   3 +-
 .../org/apache/camel/dsl/yaml/SetHeaderTest.groovy |   4 +-
 .../apache/camel/dsl/yaml/SetPropertyTest.groovy   |   3 +-
 .../org/apache/camel/dsl/yaml/ThrottleTest.groovy  |   3 +-
 .../org/apache/camel/dsl/yaml/ToDynamicTest.groovy |   5 +-
 .../groovy/org/apache/camel/dsl/yaml/ToTest.groovy |   3 +-
 .../org/apache/camel/dsl/yaml/UnmarshalTest.groovy |   5 +-
 .../org/apache/camel/dsl/yaml/ValidateTest.groovy  |   3 +-
 .../camel/dsl/yaml/support/YamlTestSupport.groovy  |   9 +-
 75 files changed, 293 insertions(+), 416 deletions(-)


[camel] 09/09: CAMEL-15105: formatting fixes

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit d422c7bd29f7cf77eafd47c052b8582ce6d3d096
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sun Apr 2 10:36:38 2023 +0200

    CAMEL-15105: formatting fixes
---
 .../main/java/org/apache/camel/impl/engine/AbstractCamelContext.java   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index a3746d5fe6f..478c0cb4a4d 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -378,7 +378,8 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(RoutesLoader.class, this::createRoutesLoader);
         camelContextExtension.lazyAddContextPlugin(AsyncProcessorAwaitManager.class, this::createAsyncProcessorAwaitManager);
         camelContextExtension.lazyAddContextPlugin(RuntimeCamelCatalog.class, this::createRuntimeCamelCatalog);
-        camelContextExtension.lazyAddContextPlugin(RestBindingJaxbDataFormatFactory.class, this::createRestBindingJaxbDataFormatFactory);
+        camelContextExtension.lazyAddContextPlugin(RestBindingJaxbDataFormatFactory.class,
+                this::createRestBindingJaxbDataFormatFactory);
         camelContextExtension.lazyAddContextPlugin(BeanProxyFactory.class, this::createBeanProxyFactory);
 
         if (build) {


[camel] 08/09: CAMEL-15105: do register the RestBindingJaxbDataFormatFactory plugin

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ccd584b7c8c0dd61500c1b3fc2144f5fea0d647a
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sun Apr 2 08:42:16 2023 +0200

    CAMEL-15105: do register the RestBindingJaxbDataFormatFactory plugin
---
 .../src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java | 1 +
 1 file changed, 1 insertion(+)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index b63c7d32501..a3746d5fe6f 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -378,6 +378,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(RoutesLoader.class, this::createRoutesLoader);
         camelContextExtension.lazyAddContextPlugin(AsyncProcessorAwaitManager.class, this::createAsyncProcessorAwaitManager);
         camelContextExtension.lazyAddContextPlugin(RuntimeCamelCatalog.class, this::createRuntimeCamelCatalog);
+        camelContextExtension.lazyAddContextPlugin(RestBindingJaxbDataFormatFactory.class, this::createRestBindingJaxbDataFormatFactory);
         camelContextExtension.lazyAddContextPlugin(BeanProxyFactory.class, this::createBeanProxyFactory);
 
         if (build) {


[camel] 01/09: CAMEL-15105: make the RouteFactory a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6fdc87bd495abfcb06374cdde2ab463c10c0edb8
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 15:04:24 2023 +0200

    CAMEL-15105: make the RouteFactory a plugin of the context
---
 .../java/org/apache/camel/ExtendedCamelContext.java   | 15 ---------------
 .../camel/impl/engine/AbstractCamelContext.java       |  2 +-
 .../impl/engine/DefaultCamelContextExtension.java     | 17 -----------------
 .../camel/impl/ExtendedCamelContextConfigurer.java    |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java     | 10 ----------
 .../java/org/apache/camel/reifier/RouteReifier.java   |  2 +-
 .../java/org/apache/camel/support/PluginHelper.java   | 19 +++++++++++++++++++
 7 files changed, 21 insertions(+), 50 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 21778d95d9d..09e8847d3e8 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -48,7 +48,6 @@ import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ResourceLoader;
 import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteController;
-import org.apache.camel.spi.RouteFactory;
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.StartupStepRecorder;
@@ -314,20 +313,6 @@ public interface ExtendedCamelContext {
      */
     FactoryFinder getFactoryFinder(String path);
 
-    /**
-     * Gets the current {@link org.apache.camel.spi.RouteFactory}
-     *
-     * @return the factory
-     */
-    RouteFactory getRouteFactory();
-
-    /**
-     * Sets a custom {@link org.apache.camel.spi.RouteFactory}
-     *
-     * @param routeFactory the custom factory
-     */
-    void setRouteFactory(RouteFactory routeFactory);
-
     /**
      * Gets the {@link DeferServiceFactory} to use.
      */
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 1553ed0759a..596891705f0 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -221,7 +221,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ModelToXMLDumper modelToXMLDumper;
     volatile RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory;
     volatile RuntimeCamelCatalog runtimeCamelCatalog;
-    volatile RouteFactory routeFactory;
     volatile AsyncProcessorAwaitManager asyncProcessorAwaitManager;
     volatile UnitOfWorkFactory unitOfWorkFactory;
     volatile BeanIntrospection beanIntrospection;
@@ -380,6 +379,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(ProcessorFactory.class, this::createProcessorFactory);
         camelContextExtension.lazyAddContextPlugin(InternalProcessorFactory.class, this::createInternalProcessorFactory);
         camelContextExtension.lazyAddContextPlugin(InterceptEndpointFactory.class, this::createInterceptEndpointFactory);
+        camelContextExtension.lazyAddContextPlugin(RouteFactory.class, this::createRouteFactory);
 
         if (build) {
             try {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index b4fc2578ce2..3f5f1a668b6 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -464,23 +464,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         this.lightweight = lightweight;
     }
 
-    @Override
-    public RouteFactory getRouteFactory() {
-        if (camelContext.routeFactory == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.routeFactory == null) {
-                    setRouteFactory(camelContext.createRouteFactory());
-                }
-            }
-        }
-        return camelContext.routeFactory;
-    }
-
-    @Override
-    public void setRouteFactory(RouteFactory routeFactory) {
-        camelContext.routeFactory = routeFactory;
-    }
-
     @Override
     public HeadersMapFactory getHeadersMapFactory() {
         return camelContext.headersMapFactory;
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index 347ed5bb27d..78611fd886c 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -61,8 +61,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": target.setResourceLoader(property(camelContext, org.apache.camel.spi.ResourceLoader.class, value)); return true;
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": target.setRestBindingJaxbDataFormatFactory(property(camelContext, org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class, value)); return true;
-        case "routefactory":
-        case "RouteFactory": target.setRouteFactory(property(camelContext, org.apache.camel.spi.RouteFactory.class, value)); return true;
         case "routesloader":
         case "RoutesLoader": target.setRoutesLoader(property(camelContext, org.apache.camel.spi.RoutesLoader.class, value)); return true;
         case "runtimecamelcatalog":
@@ -118,8 +116,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": return org.apache.camel.spi.ResourceLoader.class;
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": return org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class;
-        case "routefactory":
-        case "RouteFactory": return org.apache.camel.spi.RouteFactory.class;
         case "routesloader":
         case "RoutesLoader": return org.apache.camel.spi.RoutesLoader.class;
         case "runtimecamelcatalog":
@@ -176,8 +172,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": return target.getResourceLoader();
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": return target.getRestBindingJaxbDataFormatFactory();
-        case "routefactory":
-        case "RouteFactory": return target.getRouteFactory();
         case "routesloader":
         case "RoutesLoader": return target.getRoutesLoader();
         case "runtimecamelcatalog":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index 62449a13059..56b5abd8051 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -240,16 +240,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public RouteFactory getRouteFactory() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setRouteFactory(RouteFactory routeFactory) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public DeferServiceFactory getDeferServiceFactory() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 45a0f6584c1..cea8c7e5df2 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -100,7 +100,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
         // create route
         String id = definition.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
         String desc = definition.getDescriptionText();
-        Route route = camelContext.getCamelContextExtension().getRouteFactory().createRoute(camelContext, definition, id,
+        Route route = PluginHelper.getRouteFactory(camelContext).createRoute(camelContext, definition, id,
                 desc, endpoint, definition.getResource());
 
         // configure error handler
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 8ddf5cff349..5a81a2e93ff 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -40,6 +40,7 @@ import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.PeriodTaskResolver;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.ProcessorFactory;
+import org.apache.camel.spi.RouteFactory;
 import org.apache.camel.spi.UriFactoryResolver;
 
 public final class PluginHelper {
@@ -402,4 +403,22 @@ public final class PluginHelper {
     public static InterceptEndpointFactory getInterceptEndpointFactory(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(InterceptEndpointFactory.class);
     }
+
+    /**
+     * Gets the current {@link org.apache.camel.spi.RouteFactory}
+     *
+     * @return the factory
+     */
+    public static RouteFactory getRouteFactory(CamelContext camelContext) {
+        return getRouteFactory(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the current {@link org.apache.camel.spi.RouteFactory}
+     *
+     * @return the factory
+     */
+    public static RouteFactory getRouteFactory(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(RouteFactory.class);
+    }
 }


[camel] 04/09: CAMEL-15105: make the RoutesLoader a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 504607e8b4c356981b907e84bf8977bb7fe88b44
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 16:34:03 2023 +0200

    CAMEL-15105: make the RoutesLoader a plugin of the context
---
 .../src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java | 1 -
 1 file changed, 1 deletion(-)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 36aecfecdc5..a9540eceb28 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -216,7 +216,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile HeadersMapFactory headersMapFactory;
     volatile BeanProxyFactory beanProxyFactory;
     volatile BeanProcessorFactory beanProcessorFactory;
-    volatile RoutesLoader routesLoader;
     volatile ResourceLoader resourceLoader;
     volatile ModelToXMLDumper modelToXMLDumper;
     volatile RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory;


[camel] 05/09: CAMEL-15105: make the RuntimeCatalog a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 59af054339b35ad81edbacae0c3d72efab1a5b7f
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 17:03:23 2023 +0200

    CAMEL-15105: make the RuntimeCatalog a plugin of the context
---
 .../component/rest/RestComponentVerifierExtension.java |  3 ++-
 .../java/org/apache/camel/ExtendedCamelContext.java    | 18 ++++++++----------
 .../apache/camel/impl/engine/AbstractCamelContext.java |  2 +-
 .../impl/engine/DefaultCamelContextExtension.java      | 17 -----------------
 .../camel/impl/ExtendedCamelContextConfigurer.java     |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java      | 10 ----------
 .../verifier/DefaultComponentVerifierExtension.java    |  3 ++-
 .../java/org/apache/camel/support/PluginHelper.java    | 15 +++++++++++++++
 8 files changed, 28 insertions(+), 46 deletions(-)

diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
index 6ac8d2c95db..2d41560c904 100644
--- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
+++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestComponentVerifierExtension.java
@@ -30,6 +30,7 @@ import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
 import org.apache.camel.spi.RestConsumerFactory;
 import org.apache.camel.spi.RestProducerFactory;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.JsonMapper;
 import org.apache.camel.util.ObjectHelper;
@@ -93,7 +94,7 @@ public class RestComponentVerifierExtension extends DefaultComponentVerifierExte
                 if (extension.isPresent()) {
                     final ComponentVerifierExtension verifier = extension.get();
                     final RuntimeCamelCatalog catalog
-                            = getCamelContext().getCamelContextExtension().getRuntimeCamelCatalog();
+                            = PluginHelper.getRuntimeCamelCatalog(getCamelContext());
                     final String json = catalog.componentJSonSchema("rest");
                     final ComponentModel model = JsonMapper.generateComponentModel(json);
 
diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 16dbcc3c229..85d871635e3 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -459,16 +459,6 @@ public interface ExtendedCamelContext {
      */
     void setRestBindingJaxbDataFormatFactory(RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory);
 
-    /**
-     * Gets the {@link RuntimeCamelCatalog} if available on the classpath.
-     */
-    RuntimeCamelCatalog getRuntimeCamelCatalog();
-
-    /**
-     * Sets the {@link RuntimeCamelCatalog} to use.
-     */
-    void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog);
-
     /**
      * Internal {@link RouteController} that are only used internally by Camel to perform basic route operations. Do not
      * use this as end user.
@@ -480,6 +470,14 @@ public interface ExtendedCamelContext {
      */
     EndpointUriFactory getEndpointUriFactory(String scheme);
 
+
+    /**
+     * Gets the {@link RuntimeCamelCatalog} if available on the classpath.
+     */
+    @Deprecated
+    default RuntimeCamelCatalog getRuntimeCamelCatalog() {
+        return getContextPlugin(RuntimeCamelCatalog.class);
+    }
     /**
      * Gets the {@link StartupStepRecorder} to use.
      */
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index a9540eceb28..18de2cc7150 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -219,7 +219,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ResourceLoader resourceLoader;
     volatile ModelToXMLDumper modelToXMLDumper;
     volatile RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory;
-    volatile RuntimeCamelCatalog runtimeCamelCatalog;
     volatile UnitOfWorkFactory unitOfWorkFactory;
     volatile BeanIntrospection beanIntrospection;
     volatile boolean eventNotificationApplicable;
@@ -380,6 +379,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(RouteFactory.class, this::createRouteFactory);
         camelContextExtension.lazyAddContextPlugin(RoutesLoader.class, this::createRoutesLoader);
         camelContextExtension.lazyAddContextPlugin(AsyncProcessorAwaitManager.class, this::createAsyncProcessorAwaitManager);
+        camelContextExtension.lazyAddContextPlugin(RuntimeCamelCatalog.class, this::createRuntimeCamelCatalog);
 
         if (build) {
             try {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index dc0532c2898..f0bad898c5b 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -500,23 +500,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         camelContext.restBindingJaxbDataFormatFactory = restBindingJaxbDataFormatFactory;
     }
 
-    @Override
-    public RuntimeCamelCatalog getRuntimeCamelCatalog() {
-        if (camelContext.runtimeCamelCatalog == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.runtimeCamelCatalog == null) {
-                    setRuntimeCamelCatalog(camelContext.createRuntimeCamelCatalog());
-                }
-            }
-        }
-        return camelContext.runtimeCamelCatalog;
-    }
-
-    @Override
-    public void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog) {
-        camelContext.runtimeCamelCatalog = camelContext.getInternalServiceManager().addService(runtimeCamelCatalog);
-    }
-
     @Override
     public ExchangeFactory getExchangeFactory() {
         if (camelContext.exchangeFactory == null) {
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index 5866067408b..d7ec3d7c9a2 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -59,8 +59,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": target.setResourceLoader(property(camelContext, org.apache.camel.spi.ResourceLoader.class, value)); return true;
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": target.setRestBindingJaxbDataFormatFactory(property(camelContext, org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class, value)); return true;
-        case "runtimecamelcatalog":
-        case "RuntimeCamelCatalog": target.setRuntimeCamelCatalog(property(camelContext, org.apache.camel.catalog.RuntimeCamelCatalog.class, value)); return true;
         case "startupsteprecorder":
         case "StartupStepRecorder": target.setStartupStepRecorder(property(camelContext, org.apache.camel.spi.StartupStepRecorder.class, value)); return true;
         case "unitofworkfactory":
@@ -110,8 +108,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": return org.apache.camel.spi.ResourceLoader.class;
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": return org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class;
-        case "runtimecamelcatalog":
-        case "RuntimeCamelCatalog": return org.apache.camel.catalog.RuntimeCamelCatalog.class;
         case "startupsteprecorder":
         case "StartupStepRecorder": return org.apache.camel.spi.StartupStepRecorder.class;
         case "unitofworkfactory":
@@ -162,8 +158,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": return target.getResourceLoader();
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": return target.getRestBindingJaxbDataFormatFactory();
-        case "runtimecamelcatalog":
-        case "RuntimeCamelCatalog": return target.getRuntimeCamelCatalog();
         case "startupsteprecorder":
         case "StartupStepRecorder": return target.getStartupStepRecorder();
         case "unitofworkfactory":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index 1878d61c495..0185cc309ce 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -367,16 +367,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public RuntimeCamelCatalog getRuntimeCamelCatalog() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setRuntimeCamelCatalog(RuntimeCamelCatalog runtimeCamelCatalog) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public void addRoute(Route route) {
         throw new UnsupportedOperationException();
diff --git a/core/camel-support/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java b/core/camel-support/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
index d1429eac355..c44fb3a06ee 100644
--- a/core/camel-support/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
+++ b/core/camel-support/src/main/java/org/apache/camel/component/extension/verifier/DefaultComponentVerifierExtension.java
@@ -29,6 +29,7 @@ import org.apache.camel.catalog.EndpointValidationResult;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.component.extension.ComponentVerifierExtension;
 import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.PropertiesHelper;
 
@@ -126,7 +127,7 @@ public class DefaultComponentVerifierExtension implements ComponentVerifierExten
         }
 
         // Grab the runtime catalog to check parameters
-        RuntimeCamelCatalog catalog = camelContext.getCamelContextExtension().getRuntimeCamelCatalog();
+        RuntimeCamelCatalog catalog = PluginHelper.getRuntimeCamelCatalog(camelContext);
 
         // Convert from Map<String, Object> to  Map<String, String> as required
         // by the Camel Catalog
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 4870a9e22f5..f3bf2e0a77a 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -21,6 +21,7 @@ import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.console.DevConsoleResolver;
 import org.apache.camel.health.HealthCheckResolver;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
@@ -455,4 +456,18 @@ public final class PluginHelper {
     public static AsyncProcessorAwaitManager getAsyncProcessorAwaitManager(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(AsyncProcessorAwaitManager.class);
     }
+
+    /**
+     * Gets the {@link RuntimeCamelCatalog} if available on the classpath.
+     */
+    public static RuntimeCamelCatalog getRuntimeCamelCatalog(CamelContext camelContext) {
+        return getRuntimeCamelCatalog(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link RuntimeCamelCatalog} if available on the classpath.
+     */
+    public static RuntimeCamelCatalog getRuntimeCamelCatalog(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(RuntimeCamelCatalog.class);
+    }
 }


[camel] 07/09: CAMEL-15105: make the BeanProxyFactory a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit a0bfe1d27aaddfbfcf5210b731abbb391d3cdecb
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 17:06:52 2023 +0200

    CAMEL-15105: make the BeanProxyFactory a plugin of the context
---
 .../main/java/org/apache/camel/ExtendedCamelContext.java   |  8 +-------
 .../org/apache/camel/impl/engine/AbstractCamelContext.java |  6 +-----
 .../apache/camel/impl/engine/CamelPostProcessorHelper.java |  3 +--
 .../camel/impl/engine/DefaultCamelContextExtension.java    | 13 -------------
 .../camel/impl/lw/LightweightCamelContextExtension.java    |  6 ------
 .../main/java/org/apache/camel/builder/ProxyBuilder.java   |  3 ++-
 .../main/java/org/apache/camel/support/PluginHelper.java   | 14 ++++++++++++++
 7 files changed, 19 insertions(+), 34 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 56407a31044..2f4885dbd1f 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -25,7 +25,6 @@ import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.DeferServiceFactory;
 import org.apache.camel.spi.EndpointStrategy;
@@ -340,11 +339,6 @@ public interface ExtendedCamelContext {
      */
     void setAnnotationBasedProcessorFactory(AnnotationBasedProcessorFactory annotationBasedProcessorFactory);
 
-    /**
-     * Gets the {@link BeanProxyFactory} to use.
-     */
-    BeanProxyFactory getBeanProxyFactory();
-
     /**
      * Gets the {@link BeanProcessorFactory} to use.
      */
@@ -459,7 +453,6 @@ public interface ExtendedCamelContext {
      */
     EndpointUriFactory getEndpointUriFactory(String scheme);
 
-
     /**
      * Gets the {@link RuntimeCamelCatalog} if available on the classpath.
      */
@@ -467,6 +460,7 @@ public interface ExtendedCamelContext {
     default RuntimeCamelCatalog getRuntimeCamelCatalog() {
         return getContextPlugin(RuntimeCamelCatalog.class);
     }
+
     /**
      * Gets the {@link StartupStepRecorder} to use.
      */
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 61c202c8e9d..b63c7d32501 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -214,7 +214,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ManagementStrategy managementStrategy;
     volatile ManagementMBeanAssembler managementMBeanAssembler;
     volatile HeadersMapFactory headersMapFactory;
-    volatile BeanProxyFactory beanProxyFactory;
     volatile BeanProcessorFactory beanProcessorFactory;
     volatile ResourceLoader resourceLoader;
     volatile ModelToXMLDumper modelToXMLDumper;
@@ -379,6 +378,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(RoutesLoader.class, this::createRoutesLoader);
         camelContextExtension.lazyAddContextPlugin(AsyncProcessorAwaitManager.class, this::createAsyncProcessorAwaitManager);
         camelContextExtension.lazyAddContextPlugin(RuntimeCamelCatalog.class, this::createRuntimeCamelCatalog);
+        camelContextExtension.lazyAddContextPlugin(BeanProxyFactory.class, this::createBeanProxyFactory);
 
         if (build) {
             try {
@@ -3945,10 +3945,6 @@ public abstract class AbstractCamelContext extends BaseService
         this.startupSummaryLevel = startupSummaryLevel;
     }
 
-    public void setBeanProxyFactory(BeanProxyFactory beanProxyFactory) {
-        this.beanProxyFactory = internalServiceManager.addService(beanProxyFactory);
-    }
-
     public void setBeanProcessorFactory(BeanProcessorFactory beanProcessorFactory) {
         this.beanProcessorFactory = internalServiceManager.addService(beanProcessorFactory);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
index 34bd21840ad..dc951d3a011 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
@@ -254,8 +254,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
                     // lets create a proxy
                     try {
                         // use proxy service
-                        BeanProxyFactory factory
-                                = endpoint.getCamelContext().getCamelContextExtension().getBeanProxyFactory();
+                        BeanProxyFactory factory = PluginHelper.getBeanProxyFactory(endpoint.getCamelContext());
                         return factory.createProxy(endpoint, binding, type);
                     } catch (Exception e) {
                         throw createProxyInstantiationRuntimeException(type, endpoint, e);
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index 29a7a12f9ad..d0931843446 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -38,7 +38,6 @@ import org.apache.camel.Service;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.DebuggerFactory;
@@ -589,18 +588,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         camelContext.annotationBasedProcessorFactory = annotationBasedProcessorFactory;
     }
 
-    @Override
-    public BeanProxyFactory getBeanProxyFactory() {
-        if (camelContext.beanProxyFactory == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.beanProxyFactory == null) {
-                    camelContext.setBeanProxyFactory(camelContext.createBeanProxyFactory());
-                }
-            }
-        }
-        return camelContext.beanProxyFactory;
-    }
-
     @Override
     public BeanProcessorFactory getBeanProcessorFactory() {
         if (camelContext.beanProcessorFactory == null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index ac1a2a935f4..b31188177b0 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -39,7 +39,6 @@ import org.apache.camel.ServiceStatus;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.DeferServiceFactory;
 import org.apache.camel.spi.EndpointStrategy;
@@ -265,11 +264,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public BeanProxyFactory getBeanProxyFactory() {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public BeanProcessorFactory getBeanProcessorFactory() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
index caa183f7708..cea91778dfb 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
@@ -19,6 +19,7 @@ package org.apache.camel.builder;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.BeanProxyFactory;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -81,7 +82,7 @@ public final class ProxyBuilder {
     public <T> T build(Class<T>... interfaceClasses) throws Exception {
         ObjectHelper.notNull(endpoint, "endpoint");
         // use proxy service
-        BeanProxyFactory factory = camelContext.getCamelContextExtension().getBeanProxyFactory();
+        BeanProxyFactory factory = PluginHelper.getBeanProxyFactory(camelContext);
         return factory.createProxy(endpoint, binding, interfaceClasses);
     }
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 0f95f511c41..a50bff03a3f 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -25,6 +25,7 @@ import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.console.DevConsoleResolver;
 import org.apache.camel.health.HealthCheckResolver;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
+import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory;
 import org.apache.camel.spi.ComponentNameResolver;
@@ -485,6 +486,19 @@ public final class PluginHelper {
     public static RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory(
             ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(RestBindingJaxbDataFormatFactory.class);
+    }
 
+    /**
+     * Gets the {@link BeanProxyFactory} to use.
+     */
+    public static BeanProxyFactory getBeanProxyFactory(CamelContext camelContext) {
+        return getBeanProxyFactory(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link BeanProxyFactory} to use.
+     */
+    public static BeanProxyFactory getBeanProxyFactory(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(BeanProxyFactory.class);
     }
 }


[camel] 02/09: CAMEL-15105: make the RoutesLoader a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 2bd927afdbe766aef2bc6be0b2179ada3aff040b
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 15:24:16 2023 +0200

    CAMEL-15105: make the RoutesLoader a plugin of the context
---
 .../java/org/apache/camel/ExtendedCamelContext.java   | 10 ----------
 .../camel/impl/engine/AbstractCamelContext.java       |  9 +--------
 .../impl/engine/DefaultCamelContextExtension.java     | 19 -------------------
 .../camel/impl/ExtendedCamelContextConfigurer.java    |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java     | 10 ----------
 .../java/org/apache/camel/main/BaseMainSupport.java   |  3 ++-
 .../org/apache/camel/main/DefaultRoutesCollector.java |  4 +---
 .../java/org/apache/camel/main/RoutesConfigurer.java  |  2 +-
 .../java/org/apache/camel/support/PluginHelper.java   | 16 ++++++++++++++++
 .../org/apache/camel/support/RouteTemplateHelper.java |  4 ++--
 .../camel/support/RouteWatcherReloadStrategy.java     |  2 +-
 .../dsl/groovy/GroovyRouteBuilderLoaderTest.groovy    |  3 ++-
 .../dsl/java/joor/JavaRoutesBuilderLoaderTest.java    |  9 +++++----
 .../dsl/js/JavaScriptRoutesBuilderLoaderTest.java     | 15 ++++++++-------
 .../org/apache/camel/dsl/jsh/JshSourceLoaderTest.java |  3 ++-
 .../main/java/org/apache/camel/main/KameletMain.java  |  3 ++-
 .../camel/dsl/kotlin/KotlinRoutesBuilderLoaderTest.kt | 19 ++++++++++---------
 .../org/apache/camel/dsl/xml/io/XmlLoadRestTest.java  |  3 ++-
 .../java/org/apache/camel/dsl/xml/io/XmlLoadTest.java |  5 +++--
 .../dsl/xml/jaxb/definition/LoadRestFromXmlTest.java  |  3 ++-
 .../dsl/xml/jaxb/definition/LoadRouteFromXmlTest.java |  3 ++-
 .../definition/LoadRouteFromXmlWithInterceptTest.java |  3 ++-
 .../definition/LoadRouteFromXmlWithNamespaceTest.java |  3 ++-
 .../LoadRouteFromXmlWithOnExceptionTest.java          |  3 ++-
 .../definition/LoadRouteFromXmlWithPolicyTest.java    |  3 ++-
 .../jaxb/definition/RouteTemplateLoadFromXmlTest.java |  5 +++--
 .../xml/jaxb/spring/CamelLoadRoutesFromXMLTest.java   |  5 +++--
 .../camel/dsl/xml/jaxb/JaxbXmlLoadRestTest.java       |  3 ++-
 .../apache/camel/dsl/xml/jaxb/JaxbXmlLoadTest.java    |  3 ++-
 .../camel/dsl/yaml/YamlRoutesBuilderLoader.java       |  4 ++--
 .../groovy/org/apache/camel/dsl/yaml/DelayTest.groovy |  3 ++-
 .../apache/camel/dsl/yaml/DynamicRouterTest.groovy    |  3 ++-
 .../apache/camel/dsl/yaml/EmptyRouteFileTest.groovy   |  3 ++-
 .../org/apache/camel/dsl/yaml/EnrichTest.groovy       |  3 ++-
 .../org/apache/camel/dsl/yaml/FilterTest.groovy       |  5 ++---
 .../apache/camel/dsl/yaml/JSonPathSuppressTest.groovy |  3 ++-
 .../groovy/org/apache/camel/dsl/yaml/LoopTest.groovy  |  5 ++---
 .../org/apache/camel/dsl/yaml/MarshalTest.groovy      |  3 ++-
 .../org/apache/camel/dsl/yaml/PollEnrichTest.groovy   |  3 ++-
 .../apache/camel/dsl/yaml/RecipientListTest.groovy    |  3 ++-
 .../org/apache/camel/dsl/yaml/RemoveHeaderTest.groovy |  3 ++-
 .../apache/camel/dsl/yaml/RemovePropertyTest.groovy   |  3 ++-
 .../org/apache/camel/dsl/yaml/ResequenceTest.groovy   |  3 ++-
 .../apache/camel/dsl/yaml/RouteTemplateTest.groovy    |  3 ++-
 .../org/apache/camel/dsl/yaml/RoutingSlipTest.groovy  |  3 ++-
 .../groovy/org/apache/camel/dsl/yaml/SagaTest.groovy  |  5 ++---
 .../org/apache/camel/dsl/yaml/ScriptTest.groovy       |  3 ++-
 .../org/apache/camel/dsl/yaml/SetBodyTest.groovy      |  3 ++-
 .../org/apache/camel/dsl/yaml/SetHeaderTest.groovy    |  4 ++--
 .../org/apache/camel/dsl/yaml/SetPropertyTest.groovy  |  3 ++-
 .../org/apache/camel/dsl/yaml/ThrottleTest.groovy     |  3 ++-
 .../org/apache/camel/dsl/yaml/ToDynamicTest.groovy    |  5 +++--
 .../groovy/org/apache/camel/dsl/yaml/ToTest.groovy    |  3 ++-
 .../org/apache/camel/dsl/yaml/UnmarshalTest.groovy    |  5 +++--
 .../org/apache/camel/dsl/yaml/ValidateTest.groovy     |  3 ++-
 .../camel/dsl/yaml/support/YamlTestSupport.groovy     |  9 +++++----
 56 files changed, 139 insertions(+), 139 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 09e8847d3e8..e8346448418 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -445,16 +445,6 @@ public interface ExtendedCamelContext {
      */
     void setEventNotificationApplicable(boolean eventNotificationApplicable);
 
-    /**
-     * Gets the {@link RoutesLoader} to be used.
-     */
-    RoutesLoader getRoutesLoader();
-
-    /**
-     * Sets a custom {@link RoutesLoader} to be used.
-     */
-    void setRoutesLoader(RoutesLoader routesLoader);
-
     /**
      * Gets the {@link ResourceLoader} to be used.
      */
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 596891705f0..a177273fd49 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -380,6 +380,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(InternalProcessorFactory.class, this::createInternalProcessorFactory);
         camelContextExtension.lazyAddContextPlugin(InterceptEndpointFactory.class, this::createInterceptEndpointFactory);
         camelContextExtension.lazyAddContextPlugin(RouteFactory.class, this::createRouteFactory);
+        camelContextExtension.lazyAddContextPlugin(RoutesLoader.class, this::createRoutesLoader);
 
         if (build) {
             try {
@@ -4190,14 +4191,6 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.setReactiveExecutor(reactiveExecutor);
     }
 
-    public RoutesLoader getRoutesLoader() {
-        return camelContextExtension.getRoutesLoader();
-    }
-
-    public void setRoutesLoader(RoutesLoader routesLoader) {
-        camelContextExtension.setRoutesLoader(routesLoader);
-    }
-
     public ResourceLoader getResourceLoader() {
         return camelContextExtension.getResourceLoader();
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index 3f5f1a668b6..b981927d3cb 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -68,9 +68,7 @@ import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ResourceLoader;
 import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteController;
-import org.apache.camel.spi.RouteFactory;
 import org.apache.camel.spi.RouteStartupOrder;
-import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.UnitOfWorkFactory;
 import org.apache.camel.support.EndpointHelper;
@@ -474,23 +472,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         camelContext.headersMapFactory = camelContext.getInternalServiceManager().addService(headersMapFactory);
     }
 
-    @Override
-    public RoutesLoader getRoutesLoader() {
-        if (camelContext.routesLoader == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.routesLoader == null) {
-                    setRoutesLoader(camelContext.createRoutesLoader());
-                }
-            }
-        }
-        return camelContext.routesLoader;
-    }
-
-    @Override
-    public void setRoutesLoader(RoutesLoader routesLoader) {
-        camelContext.routesLoader = camelContext.getInternalServiceManager().addService(routesLoader);
-    }
-
     @Override
     public ResourceLoader getResourceLoader() {
         if (camelContext.resourceLoader == null) {
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index 78611fd886c..77230c6cdf2 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -61,8 +61,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": target.setResourceLoader(property(camelContext, org.apache.camel.spi.ResourceLoader.class, value)); return true;
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": target.setRestBindingJaxbDataFormatFactory(property(camelContext, org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class, value)); return true;
-        case "routesloader":
-        case "RoutesLoader": target.setRoutesLoader(property(camelContext, org.apache.camel.spi.RoutesLoader.class, value)); return true;
         case "runtimecamelcatalog":
         case "RuntimeCamelCatalog": target.setRuntimeCamelCatalog(property(camelContext, org.apache.camel.catalog.RuntimeCamelCatalog.class, value)); return true;
         case "startupsteprecorder":
@@ -116,8 +114,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": return org.apache.camel.spi.ResourceLoader.class;
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": return org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class;
-        case "routesloader":
-        case "RoutesLoader": return org.apache.camel.spi.RoutesLoader.class;
         case "runtimecamelcatalog":
         case "RuntimeCamelCatalog": return org.apache.camel.catalog.RuntimeCamelCatalog.class;
         case "startupsteprecorder":
@@ -172,8 +168,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ResourceLoader": return target.getResourceLoader();
         case "restbindingjaxbdataformatfactory":
         case "RestBindingJaxbDataFormatFactory": return target.getRestBindingJaxbDataFormatFactory();
-        case "routesloader":
-        case "RoutesLoader": return target.getRoutesLoader();
         case "runtimecamelcatalog":
         case "RuntimeCamelCatalog": return target.getRuntimeCamelCatalog();
         case "startupsteprecorder":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index 56b5abd8051..82469a20b83 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -441,16 +441,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public void setRoutesLoader(RoutesLoader routesLoader) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public RoutesLoader getRoutesLoader() {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public ResourceLoader getResourceLoader() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
index 800799dcc75..edabad2bcc9 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
@@ -59,6 +59,7 @@ import org.apache.camel.spi.PackageScanClassResolver;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.PropertiesComponent;
 import org.apache.camel.spi.RouteTemplateParameterSource;
+import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.DefaultContextReloadStrategy;
@@ -598,7 +599,7 @@ public abstract class BaseMainSupport extends BaseService {
 
     protected void configureRoutesLoader(CamelContext camelContext) {
         // use main based routes loader
-        camelContext.getCamelContextExtension().setRoutesLoader(new DefaultRoutesLoader());
+        camelContext.getCamelContextExtension().addContextPlugin(RoutesLoader.class, new DefaultRoutesLoader());
     }
 
     protected void modelineRoutes(CamelContext camelContext) throws Exception {
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultRoutesCollector.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultRoutesCollector.java
index a7e2d6df380..ece6c593f07 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultRoutesCollector.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultRoutesCollector.java
@@ -22,7 +22,6 @@ import java.util.Collection;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.LambdaRouteBuilder;
@@ -139,14 +138,13 @@ public class DefaultRoutesCollector implements RoutesCollector {
             String excludePattern,
             String includePattern) {
 
-        final ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
         final List<RoutesBuilder> answer = new ArrayList<>();
         final String[] includes = includePattern != null ? includePattern.split(",") : null;
 
         StopWatch watch = new StopWatch();
         Collection<Resource> accepted = findRouteResourcesFromDirectory(camelContext, excludePattern, includePattern);
         try {
-            Collection<RoutesBuilder> builders = ecc.getRoutesLoader().findRoutesBuilders(accepted);
+            Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(camelContext).findRoutesBuilders(accepted);
             if (!builders.isEmpty()) {
                 log.debug("Found {} route builder from locations: {}", builders.size(), includes);
                 answer.addAll(builders);
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
index 450b1f1c747..1e27090b563 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
@@ -270,7 +270,7 @@ public class RoutesConfigurer {
         // the resource may also have additional configurations which we need to detect via pre-parsing
         for (Resource resource : resources) {
             LOG.debug("Pre-parsing: {}", resource);
-            RoutesLoader loader = camelContext.getCamelContextExtension().getRoutesLoader();
+            RoutesLoader loader = PluginHelper.getRoutesLoader(camelContext);
             loader.preParseRoute(resource);
         }
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 5a81a2e93ff..deebc08f9d1 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -41,6 +41,7 @@ import org.apache.camel.spi.PeriodTaskResolver;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.ProcessorFactory;
 import org.apache.camel.spi.RouteFactory;
+import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.UriFactoryResolver;
 
 public final class PluginHelper {
@@ -421,4 +422,19 @@ public final class PluginHelper {
     public static RouteFactory getRouteFactory(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(RouteFactory.class);
     }
+
+    /**
+     * Gets the {@link RoutesLoader} to be used.
+     */
+    public static RoutesLoader getRoutesLoader(CamelContext camelContext) {
+        return getRoutesLoader(camelContext.getCamelContextExtension());
+    }
+
+
+    /**
+     * Gets the {@link RoutesLoader} to be used.
+     */
+    public static RoutesLoader getRoutesLoader(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(RoutesLoader.class);
+    }
 }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/RouteTemplateHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/RouteTemplateHelper.java
index ca0a604d9a9..8980de0cb5e 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/RouteTemplateHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/RouteTemplateHelper.java
@@ -86,7 +86,7 @@ public final class RouteTemplateHelper {
                              + ". This exception is ignored",
                             e);
                 }
-                ecc.getRoutesLoader().loadRoutes(res);
+                PluginHelper.getRoutesLoader(camelContext).loadRoutes(res);
                 found = true;
                 break;
             }
@@ -103,7 +103,7 @@ public final class RouteTemplateHelper {
                 path += "/";
             }
             String target = path + templateId + ".kamelet.yaml";
-            ecc.getRoutesLoader().loadRoutes(
+            PluginHelper.getRoutesLoader(camelContext).loadRoutes(
                     ecc.getResourceLoader().resolveResource(target));
         }
     }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java b/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java
index a9746bd4e1e..c4b78fa1290 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/RouteWatcherReloadStrategy.java
@@ -247,7 +247,7 @@ public class RouteWatcherReloadStrategy extends FileWatcherResourceReloadStrateg
 
             // reload those other routes that was stopped and removed as we want to keep running those
             Set<String> ids
-                    = getCamelContext().getCamelContextExtension().getRoutesLoader().updateRoutes(sources);
+                    = PluginHelper.getRoutesLoader(getCamelContext()).updateRoutes(sources);
 
             // update okay, so clear as we do not need to remember those anymore
             previousSources.clear();
diff --git a/dsl/camel-groovy-dsl/camel-groovy-dsl-test/src/test/groovy/org/apache/camel/dsl/groovy/GroovyRouteBuilderLoaderTest.groovy b/dsl/camel-groovy-dsl/camel-groovy-dsl-test/src/test/groovy/org/apache/camel/dsl/groovy/GroovyRouteBuilderLoaderTest.groovy
index c9df20175d3..30bd4a63d03 100644
--- a/dsl/camel-groovy-dsl/camel-groovy-dsl-test/src/test/groovy/org/apache/camel/dsl/groovy/GroovyRouteBuilderLoaderTest.groovy
+++ b/dsl/camel-groovy-dsl/camel-groovy-dsl-test/src/test/groovy/org/apache/camel/dsl/groovy/GroovyRouteBuilderLoaderTest.groovy
@@ -33,6 +33,7 @@ import org.apache.camel.processor.FatalFallbackErrorHandler
 import org.apache.camel.processor.SendProcessor
 import org.apache.camel.spi.HeaderFilterStrategy
 import org.apache.camel.support.DefaultHeaderFilterStrategy
+import org.apache.camel.support.PluginHelper
 import spock.lang.AutoCleanup
 import spock.lang.Specification
 
@@ -42,7 +43,7 @@ class GroovyRouteBuilderLoaderTest extends Specification {
 
     def loadRoute(String location) {
         def route = context.getResourceLoader().resolveResource(location)
-        context.getRoutesLoader().loadRoutes(route)
+        PluginHelper.getRoutesLoader(context).loadRoutes(route)
     }
 
     def "load routes"() {
diff --git a/dsl/camel-java-joor-dsl/src/test/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoaderTest.java b/dsl/camel-java-joor-dsl/src/test/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoaderTest.java
index c7c87dd3751..0301a4bcb2d 100644
--- a/dsl/camel-java-joor-dsl/src/test/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoaderTest.java
+++ b/dsl/camel-java-joor-dsl/src/test/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoaderTest.java
@@ -26,6 +26,7 @@ import org.apache.camel.model.ProcessDefinition;
 import org.apache.camel.model.SetBodyDefinition;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -45,7 +46,7 @@ public class JavaRoutesBuilderLoaderTest {
     void testLoadRoutes(String location) throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource(location);
-            Collection<RoutesBuilder> builders = context.getRoutesLoader().findRoutesBuilders(resource);
+            Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(context).findRoutesBuilders(resource);
 
             assertThat(builders).hasSize(1);
 
@@ -69,7 +70,7 @@ public class JavaRoutesBuilderLoaderTest {
 
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource(location);
-            Collection<RoutesBuilder> builders = context.getRoutesLoader().findRoutesBuilders(resource);
+            Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(context).findRoutesBuilders(resource);
 
             assertThat(builders).hasSize(1);
 
@@ -95,7 +96,7 @@ public class JavaRoutesBuilderLoaderTest {
 
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource(location);
-            Collection<RoutesBuilder> builders = context.getRoutesLoader().findRoutesBuilders(resource);
+            Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(context).findRoutesBuilders(resource);
 
             assertThat(builders).hasSize(1);
 
@@ -114,7 +115,7 @@ public class JavaRoutesBuilderLoaderTest {
 
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource(location);
-            Collection<RoutesBuilder> builders = context.getRoutesLoader().findRoutesBuilders(resource);
+            Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(context).findRoutesBuilders(resource);
 
             assertThat(builders).hasSize(1);
 
diff --git a/dsl/camel-js-dsl/src/test/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoaderTest.java b/dsl/camel-js-dsl/src/test/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoaderTest.java
index 8e81496c0b7..399247fa711 100644
--- a/dsl/camel-js-dsl/src/test/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoaderTest.java
+++ b/dsl/camel-js-dsl/src/test/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoaderTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.model.TransformDefinition;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
@@ -37,7 +38,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     void routesCanBeLoaded(String location) throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource(location);
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertThat(context.getRouteDefinitions())
                     .hasSize(1)
@@ -54,7 +55,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader()
                     .resolveResource("/routes/routes-with-component-configuration.js");
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertThat(context.getComponent("seda", SedaComponent.class)).satisfies(c -> {
                 assertThat(c.getQueueSize()).isEqualTo(1234);
@@ -67,7 +68,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader()
                     .resolveResource("/routes/routes-with-context-configuration.js");
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertThat(context.isTypeConverterStatisticsEnabled()).isTrue();
         }
@@ -77,7 +78,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     void processorsCanBeCreated() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource("/routes/routes-with-processors.js");
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             context.start();
 
@@ -95,7 +96,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader()
                     .resolveResource("/routes/routes-with-rest-configuration.js");
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertThat(context.getRestConfiguration()).satisfies(c -> {
                 assertThat(c.getComponent()).isEqualTo("undertow");
@@ -108,7 +109,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     void restDslCanBeDefined() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource("/routes/routes-with-rest-dsl.js");
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertThat(context.getRestDefinitions()).hasSize(1);
             assertThat(context.getRouteDefinitions()).hasSize(2);
@@ -130,7 +131,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     void modulesCanBeImported() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource("/routes/routes-with-modules.js");
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertThat(context.getRouteDefinitions()).hasSize(1);
         }
diff --git a/dsl/camel-jsh-dsl/src/test/java/org/apache/camel/dsl/jsh/JshSourceLoaderTest.java b/dsl/camel-jsh-dsl/src/test/java/org/apache/camel/dsl/jsh/JshSourceLoaderTest.java
index e4a8f8dccb0..cedbfd06ae3 100644
--- a/dsl/camel-jsh-dsl/src/test/java/org/apache/camel/dsl/jsh/JshSourceLoaderTest.java
+++ b/dsl/camel-jsh-dsl/src/test/java/org/apache/camel/dsl/jsh/JshSourceLoaderTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ToDefinition;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.assertj.core.api.Assertions;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
@@ -39,7 +40,7 @@ public class JshSourceLoaderTest {
     void testLoadRoutes(String location) throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             Resource resource = context.getResourceLoader().resolveResource(location);
-            Collection<RoutesBuilder> builders = context.getRoutesLoader().findRoutesBuilders(resource);
+            Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(context).findRoutesBuilders(resource);
 
             assertThat(builders).hasSize(1);
 
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
index 539ba544010..5637a18894a 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
@@ -60,6 +60,7 @@ import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.Registry;
+import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.UriFactoryResolver;
 import org.apache.camel.startup.jfr.FlightRecorderStartupStepRecorder;
 import org.apache.camel.support.PluginHelper;
@@ -529,7 +530,7 @@ public class KameletMain extends MainCommandLineSupport {
         if (download) {
             // use resolvers that can auto downloaded
             camelContext.getCamelContextExtension()
-                    .setRoutesLoader(new DependencyDownloaderRoutesLoader(camelContext));
+                    .addContextPlugin(RoutesLoader.class, new DependencyDownloaderRoutesLoader(camelContext));
         } else {
             super.configureRoutesLoader(camelContext);
         }
diff --git a/dsl/camel-kotlin-dsl/src/test/kotlin/org/apache/camel/dsl/kotlin/KotlinRoutesBuilderLoaderTest.kt b/dsl/camel-kotlin-dsl/src/test/kotlin/org/apache/camel/dsl/kotlin/KotlinRoutesBuilderLoaderTest.kt
index 569e53cf13a..908f87439b0 100644
--- a/dsl/camel-kotlin-dsl/src/test/kotlin/org/apache/camel/dsl/kotlin/KotlinRoutesBuilderLoaderTest.kt
+++ b/dsl/camel-kotlin-dsl/src/test/kotlin/org/apache/camel/dsl/kotlin/KotlinRoutesBuilderLoaderTest.kt
@@ -31,6 +31,7 @@ import org.apache.camel.model.rest.GetDefinition
 import org.apache.camel.model.rest.PostDefinition
 import org.apache.camel.processor.FatalFallbackErrorHandler
 import org.apache.camel.support.DefaultHeaderFilterStrategy
+import org.apache.camel.support.PluginHelper
 import org.assertj.core.api.Assertions.assertThat
 import org.assertj.core.api.Assertions.assertThatExceptionOfType
 import org.junit.jupiter.api.Test
@@ -42,7 +43,7 @@ class KotlinRoutesBuilderLoaderTest {
         val ctx = DefaultCamelContext()
         val res = ctx.resourceLoader.resolveResource("/routes/routes.kts")
 
-        ctx.routesLoader.loadRoutes(res)
+        PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
         val routes = ctx.routeDefinitions
 
@@ -57,7 +58,7 @@ class KotlinRoutesBuilderLoaderTest {
         val ctx = DefaultCamelContext()
         val res = ctx.resourceLoader.resolveResource("/routes/routes-with-endpoint-dsl.kts")
 
-        ctx.routesLoader.loadRoutes(res)
+        PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
         val routes = ctx.routeDefinitions
 
@@ -74,7 +75,7 @@ class KotlinRoutesBuilderLoaderTest {
         val ctx = DefaultCamelContext()
         val res = ctx.resourceLoader.resolveResource("/routes/routes-with-rest.kts")
 
-        ctx.routesLoader.loadRoutes(res)
+        PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
         assertThat(ctx.restConfiguration.host).isEqualTo("my-host")
         assertThat(ctx.restConfiguration.port).isEqualTo(9192)
@@ -108,7 +109,7 @@ class KotlinRoutesBuilderLoaderTest {
         val ctx = DefaultCamelContext()
         val res = ctx.resourceLoader.resolveResource("/routes/routes-with-beans.kts")
 
-        ctx.routesLoader.loadRoutes(res)
+        PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
         assertThat(ctx.registry.findByType(MyBean::class.java)).hasSize(1)
         assertThat(ctx.registry.lookupByName("myBean")).isInstanceOf(MyBean::class.java)
@@ -123,7 +124,7 @@ class KotlinRoutesBuilderLoaderTest {
         val ctx = DefaultCamelContext()
         val res = ctx.resourceLoader.resolveResource("/routes/routes-with-components-configuration.kts")
 
-        ctx.routesLoader.loadRoutes(res)
+        PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
         val seda = ctx.getComponent("seda", SedaComponent::class.java)
         val mySeda = ctx.getComponent("mySeda", SedaComponent::class.java)
@@ -143,7 +144,7 @@ class KotlinRoutesBuilderLoaderTest {
                     val ctx = DefaultCamelContext()
                     val res = ctx.resourceLoader.resolveResource("/routes/routes-with-components-configuration-error.kts")
 
-                    ctx.routesLoader.loadRoutes(res)
+                    PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
                 }
                 .withCauseInstanceOf(IllegalArgumentException::class.java)
                 .withMessageContaining("Type mismatch, expected: class org.apache.camel.component.log.LogComponent, got: class org.apache.camel.component.seda.SedaComponent");
@@ -154,7 +155,7 @@ class KotlinRoutesBuilderLoaderTest {
         val ctx = DefaultCamelContext()
         val res = ctx.resourceLoader.resolveResource("/routes/routes-with-languages-configuration.kts")
 
-        ctx.routesLoader.loadRoutes(res)
+        PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
         val bean = ctx.resolveLanguage("bean") as BeanLanguage
         assertThat(bean.beanType).isEqualTo(String::class.java)
@@ -170,7 +171,7 @@ class KotlinRoutesBuilderLoaderTest {
         val ctx = DefaultCamelContext()
         val res = ctx.resourceLoader.resolveResource("/routes/routes-with-dataformats-configuration.kts")
 
-        ctx.routesLoader.loadRoutes(res)
+        PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
         val jackson = ctx.resolveDataFormat("jackson") as JacksonDataFormat
         assertThat(jackson.unmarshalType).isEqualTo(Map::class.java)
@@ -186,7 +187,7 @@ class KotlinRoutesBuilderLoaderTest {
         val ctx = DefaultCamelContext()
         val res = ctx.resourceLoader.resolveResource("/routes/routes-with-error-handler.kts")
 
-        ctx.routesLoader.loadRoutes(res)
+        PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
         ctx.start()
 
         try {
diff --git a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadRestTest.java b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadRestTest.java
index 4457c1cf0ed..6824fe5e213 100644
--- a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadRestTest.java
+++ b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadRestTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.rest.DummyRestConsumerFactory;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -61,7 +62,7 @@ public class XmlLoadRestTest {
             Resource resource = ecc.getResourceLoader().resolveResource(
                     "/org/apache/camel/dsl/xml/io/barRest.xml");
 
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertEquals(2, context.getRoutes().size());
 
diff --git a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadTest.java b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadTest.java
index a708028b803..7018100a19d 100644
--- a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadTest.java
+++ b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadTest.java
@@ -21,6 +21,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -56,7 +57,7 @@ public class XmlLoadTest {
             Resource resource = ecc.getResourceLoader().resolveResource(
                     "/org/apache/camel/dsl/xml/io/barRoute.xml");
 
-            ecc.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
 
             // END SNIPPET: e1
             assertNotNull(context.getRoute("bar"), "Loaded bar route should be there");
@@ -80,7 +81,7 @@ public class XmlLoadTest {
             Resource resource = ecc.getResourceLoader().resolveResource(
                     "/org/apache/camel/dsl/xml/io/bar2.xml");
 
-            ecc.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
 
             assertNotNull(context.getRoute("bar2"), "Loaded bar2 route should be there");
             assertEquals(1, context.getRoutes().size());
diff --git a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRestFromXmlTest.java b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRestFromXmlTest.java
index e1aa52bebbb..200bac8b3d0 100644
--- a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRestFromXmlTest.java
+++ b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRestFromXmlTest.java
@@ -24,6 +24,7 @@ import org.apache.camel.component.rest.DummyRestConsumerFactory;
 import org.apache.camel.component.rest.DummyRestProcessorFactory;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -54,7 +55,7 @@ public class LoadRestFromXmlTest extends ContextTestSupport {
         // load rest from XML and add them to the existing camel context
         ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barRest.xml");
-        ecc.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
 
         assertNotNull(context.getRoute("route1"), "Loaded rest route should be there");
         assertEquals(3, context.getRoutes().size());
diff --git a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlTest.java b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlTest.java
index 3bd30d91807..0c319ee574d 100644
--- a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlTest.java
+++ b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlTest.java
@@ -21,6 +21,7 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -43,7 +44,7 @@ public class LoadRouteFromXmlTest extends ContextTestSupport {
         // load route from XML and add them to the existing camel context
         ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barRoute.xml");
-        ecc.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
         // END SNIPPET: e1
 
         assertNotNull(context.getRoute("bar"), "Loaded bar route should be there");
diff --git a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithInterceptTest.java b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithInterceptTest.java
index 6e41210611c..879fdfc4e62 100644
--- a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithInterceptTest.java
+++ b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithInterceptTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.dsl.xml.jaxb.definition;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -36,7 +37,7 @@ public class LoadRouteFromXmlWithInterceptTest extends ContextTestSupport {
         ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource
                 = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barInterceptorRoute.xml");
-        ecc.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
         context.start();
 
         assertNotNull(context.getRoute("bar"), "Loaded bar route should be there");
diff --git a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithNamespaceTest.java b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithNamespaceTest.java
index 0b4cf56daad..9dbcb6699ea 100644
--- a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithNamespaceTest.java
+++ b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithNamespaceTest.java
@@ -21,6 +21,7 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Route;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -32,7 +33,7 @@ public class LoadRouteFromXmlWithNamespaceTest extends ContextTestSupport {
         ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource
                 = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/routeWithNamespace.xml");
-        ecc.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
         context.start();
 
         Route routeWithNamespace = context.getRoute("routeWithNamespace");
diff --git a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithOnExceptionTest.java b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithOnExceptionTest.java
index 98e24b040c8..59401869c3f 100644
--- a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithOnExceptionTest.java
+++ b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithOnExceptionTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -46,7 +47,7 @@ public class LoadRouteFromXmlWithOnExceptionTest extends ContextTestSupport {
         ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource
                 = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barOnExceptionRoute.xml");
-        ecc.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
         context.start();
 
         assertNotNull(context.getRoute("bar"), "Loaded bar route should be there");
diff --git a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithPolicyTest.java b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithPolicyTest.java
index ebe6265e6ea..2ed5bf74430 100644
--- a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithPolicyTest.java
+++ b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/LoadRouteFromXmlWithPolicyTest.java
@@ -25,6 +25,7 @@ import org.apache.camel.Route;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -49,7 +50,7 @@ public class LoadRouteFromXmlWithPolicyTest extends ContextTestSupport {
         ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource
                 = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barPolicyRoute.xml");
-        ecc.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
         context.start();
 
         assertNotNull(context.getRoute("foo"), "Loaded foo route should be there");
diff --git a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/RouteTemplateLoadFromXmlTest.java b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/RouteTemplateLoadFromXmlTest.java
index eff31fab95f..5dba13daa37 100644
--- a/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/RouteTemplateLoadFromXmlTest.java
+++ b/dsl/camel-xml-jaxb-dsl-test/definition/src/test/java/org/apache/camel/dsl/xml/jaxb/definition/RouteTemplateLoadFromXmlTest.java
@@ -23,6 +23,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.model.RouteTemplateDefinition;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -35,7 +36,7 @@ public class RouteTemplateLoadFromXmlTest extends ContextTestSupport {
 
         ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barTemplate.xml");
-        ecc.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
 
         assertEquals(1, context.getRouteTemplateDefinitions().size());
 
@@ -50,7 +51,7 @@ public class RouteTemplateLoadFromXmlTest extends ContextTestSupport {
 
         ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barTemplate.xml");
-        ecc.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
 
         assertEquals(1, context.getRouteTemplateDefinitions().size());
 
diff --git a/dsl/camel-xml-jaxb-dsl-test/spring/src/test/java/org/apache/camel/dsl/xml/jaxb/spring/CamelLoadRoutesFromXMLTest.java b/dsl/camel-xml-jaxb-dsl-test/spring/src/test/java/org/apache/camel/dsl/xml/jaxb/spring/CamelLoadRoutesFromXMLTest.java
index fc77f027510..d2a23bcbe35 100644
--- a/dsl/camel-xml-jaxb-dsl-test/spring/src/test/java/org/apache/camel/dsl/xml/jaxb/spring/CamelLoadRoutesFromXMLTest.java
+++ b/dsl/camel-xml-jaxb-dsl-test/spring/src/test/java/org/apache/camel/dsl/xml/jaxb/spring/CamelLoadRoutesFromXMLTest.java
@@ -21,6 +21,7 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -41,7 +42,7 @@ public class CamelLoadRoutesFromXMLTest extends ContextTestSupport {
 
         // load routes from xml file
         Resource resource = camel.getResourceLoader().resolveResource("org/apache/camel/spring/myRoutes.xml");
-        camel.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(camel).loadRoutes(resource);
 
         assertEquals(2, camel.getRoutes().size());
 
@@ -77,7 +78,7 @@ public class CamelLoadRoutesFromXMLTest extends ContextTestSupport {
 
         // load updated xml
         resource = camel.getResourceLoader().resolveResource("org/apache/camel/spring/myUpdatedRoutes.xml");
-        camel.getRoutesLoader().loadRoutes(resource);
+        PluginHelper.getRoutesLoader(camel).loadRoutes(resource);
 
         assertEquals(2, camel.getRoutes().size());
 
diff --git a/dsl/camel-xml-jaxb-dsl/src/test/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlLoadRestTest.java b/dsl/camel-xml-jaxb-dsl/src/test/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlLoadRestTest.java
index 4ca54ed0fd7..0d7c664c00b 100644
--- a/dsl/camel-xml-jaxb-dsl/src/test/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlLoadRestTest.java
+++ b/dsl/camel-xml-jaxb-dsl/src/test/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlLoadRestTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.rest.DummyRestConsumerFactory;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -61,7 +62,7 @@ public class JaxbXmlLoadRestTest {
             Resource resource = ecc.getResourceLoader().resolveResource(
                     "/org/apache/camel/dsl/xml/jaxb/barRest.xml");
 
-            context.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertEquals(2, context.getRoutes().size());
 
diff --git a/dsl/camel-xml-jaxb-dsl/src/test/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlLoadTest.java b/dsl/camel-xml-jaxb-dsl/src/test/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlLoadTest.java
index 57459cb7c78..03439a9ecf7 100644
--- a/dsl/camel-xml-jaxb-dsl/src/test/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlLoadTest.java
+++ b/dsl/camel-xml-jaxb-dsl/src/test/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlLoadTest.java
@@ -21,6 +21,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -56,7 +57,7 @@ public class JaxbXmlLoadTest {
             Resource resource = ecc.getResourceLoader().resolveResource(
                     "/org/apache/camel/dsl/xml/jaxb/barRoute.xml");
 
-            ecc.getRoutesLoader().loadRoutes(resource);
+            PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
 
             // END SNIPPET: e1
             assertNotNull(context.getRoute("bar"), "Loaded bar route should be there");
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
index fd2184fcb40..b68ee838f85 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
@@ -63,6 +63,7 @@ import org.apache.camel.spi.DependencyStrategy;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.annotations.RoutesLoader;
 import org.apache.camel.support.ObjectHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.URISupport;
@@ -507,8 +508,7 @@ public class YamlRoutesBuilderLoader extends YamlRoutesBuilderLoaderSupport {
                     @Override
                     public void configure(CamelContext camelContext) {
                         try {
-                            camelContext.getCamelContextExtension()
-                                    .getRoutesLoader().loadRoutes(res);
+                            PluginHelper.getRoutesLoader(camelContext).loadRoutes(res);
                         } catch (Exception e) {
                             throw new RuntimeCamelException(
                                     "Error loading sources from resource: " + res + " due to " + e.getMessage(), e);
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/DelayTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/DelayTest.groovy
index d8d26dd455c..1af1f091943 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/DelayTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/DelayTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.DelayDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class DelayTest extends YamlTestSupport {
 
     def "delay definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], DelayDefinition) {
                 asyncDelayed == 'true'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/DynamicRouterTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/DynamicRouterTest.groovy
index d6c0670982f..41f50fd4221 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/DynamicRouterTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/DynamicRouterTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.DynamicRouterDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class DynamicRouterTest extends YamlTestSupport {
 
     def "dynamic-router definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], DynamicRouterDefinition) {
                 with(expression, ExpressionDefinition) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/EmptyRouteFileTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/EmptyRouteFileTest.groovy
index a8cf0a686d1..e46378f8157 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/EmptyRouteFileTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/EmptyRouteFileTest.groovy
@@ -19,6 +19,7 @@ package org.apache.camel.dsl.yaml
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.spi.Resource
 import org.apache.camel.spi.RoutesLoader
+import org.apache.camel.support.PluginHelper
 import org.apache.camel.support.ResourceHelper
 import org.junit.jupiter.api.Assertions
 
@@ -26,7 +27,7 @@ class EmptyRouteFileTest extends YamlTestSupport {
 
     def "empty file"() {
         when:
-            RoutesLoader loader = context.getRoutesLoader()
+            RoutesLoader loader = PluginHelper.getRoutesLoader(context).getRoutesLoader()
             Resource res = ResourceHelper.fromString("dummy.yaml", "");
         then:
             try {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/EnrichTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/EnrichTest.groovy
index 14dd91ff4f1..55fdc0ae4a3 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/EnrichTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/EnrichTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.EnrichDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class EnrichTest extends YamlTestSupport {
 
     def "enrich definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], EnrichDefinition) {
                 with(expression, ExpressionDefinition) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FilterTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FilterTest.groovy
index 3f6608f1926..4f51eca3ea0 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FilterTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/FilterTest.groovy
@@ -16,20 +16,19 @@
  */
 package org.apache.camel.dsl.yaml
 
-import org.apache.camel.FailedToCreateRouteException
 import org.apache.camel.component.mock.MockEndpoint
-import org.apache.camel.dsl.yaml.common.YamlDeserializationMode
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.FilterDefinition
 import org.apache.camel.model.ToDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class FilterTest extends YamlTestSupport {
 
     def "filter definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], FilterDefinition) {
                 with(expression, ExpressionDefinition) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/JSonPathSuppressTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/JSonPathSuppressTest.groovy
index fbf944318bd..9db967b372a 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/JSonPathSuppressTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/JSonPathSuppressTest.groovy
@@ -22,12 +22,13 @@ import org.apache.camel.model.ChoiceDefinition
 import org.apache.camel.model.ToDefinition
 import org.apache.camel.model.WhenDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class JSonPathSuppressTest extends YamlTestSupport {
 
     def "jsonpath-suppress definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
         with(context.routeDefinitions[0].outputs[0], ChoiceDefinition) {
             with(whenClauses[0], WhenDefinition) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/LoopTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/LoopTest.groovy
index f93dfdfaf54..1369857dc23 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/LoopTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/LoopTest.groovy
@@ -16,19 +16,18 @@
  */
 package org.apache.camel.dsl.yaml
 
-import org.apache.camel.FailedToCreateRouteException
 import org.apache.camel.component.mock.MockEndpoint
-import org.apache.camel.dsl.yaml.common.YamlDeserializationMode
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.LoopDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class LoopTest extends YamlTestSupport {
 
     def "loop definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], LoopDefinition) {
                 with(expression, ExpressionDefinition) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/MarshalTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/MarshalTest.groovy
index 9b36764c8a7..17c242bbb9a 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/MarshalTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/MarshalTest.groovy
@@ -19,12 +19,13 @@ package org.apache.camel.dsl.yaml
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.MarshalDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class MarshalTest extends YamlTestSupport {
 
     def "marshal definition (#resource.location, #expected)"(Resource resource, String expected) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], MarshalDefinition) {
                 with(dataFormatType) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/PollEnrichTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/PollEnrichTest.groovy
index fc01709d0fd..38ef36f70bc 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/PollEnrichTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/PollEnrichTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.PollEnrichDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class PollEnrichTest extends YamlTestSupport {
 
     def "poll-enrich definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], PollEnrichDefinition) {
                 aggregationStrategy == 'myStrategy'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RecipientListTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RecipientListTest.groovy
index 7cf0bd58991..52aeabc943d 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RecipientListTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RecipientListTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.RecipientListDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class RecipientListTest extends YamlTestSupport {
 
     def "recipient-list definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], RecipientListDefinition) {
                 stopOnException == 'true'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RemoveHeaderTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RemoveHeaderTest.groovy
index 3dc076514a1..20f04f60b9c 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RemoveHeaderTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RemoveHeaderTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.RemoveHeaderDefinition
 import org.apache.camel.model.RemoveHeadersDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class RemoveHeaderTest extends YamlTestSupport {
 
     def "remove-header definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], RemoveHeaderDefinition) {
                 name == 'test'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RemovePropertyTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RemovePropertyTest.groovy
index 6f4b2db0c36..4e22a3a7529 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RemovePropertyTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RemovePropertyTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.RemovePropertiesDefinition
 import org.apache.camel.model.RemovePropertyDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class RemovePropertyTest extends YamlTestSupport {
 
     def "remove-property definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], RemovePropertyDefinition) {
                 name == 'test'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ResequenceTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ResequenceTest.groovy
index b8b5bbb2e0e..71840ae41dc 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ResequenceTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ResequenceTest.groovy
@@ -21,12 +21,13 @@ import org.apache.camel.model.ResequenceDefinition
 import org.apache.camel.model.config.StreamResequencerConfig
 import org.apache.camel.model.language.SimpleExpression
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class ResequenceTest extends YamlTestSupport {
 
     def "resequence definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], ResequenceDefinition) {
                 with (expression, SimpleExpression) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy
index 057c51499b4..b7feeb2de76 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy
@@ -25,6 +25,7 @@ import org.apache.camel.model.LogDefinition
 import org.apache.camel.model.RouteTemplateDefinition
 import org.apache.camel.model.ToDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 import org.junit.jupiter.api.Assertions
 
 class RouteTemplateTest extends YamlTestSupport {
@@ -53,7 +54,7 @@ class RouteTemplateTest extends YamlTestSupport {
 
     def "create template with beans (#resource.location)"(Resource resource) {
         setup:
-        context.routesLoader.loadRoutes(resource)
+        PluginHelper.getRoutesLoader(context).loadRoutes(resource)
 
         withMock('mock:result') {
             expectedMessageCount 1
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutingSlipTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutingSlipTest.groovy
index 29807432c1c..15ea4950bdc 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutingSlipTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutingSlipTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.RoutingSlipDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class RoutingSlipTest extends YamlTestSupport {
 
     def "routing-slip definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], RoutingSlipDefinition) {
                 uriDelimiter == '|'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SagaTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SagaTest.groovy
index 731fc0bf0a9..04564d43fa3 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SagaTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SagaTest.groovy
@@ -17,18 +17,17 @@
 package org.apache.camel.dsl.yaml
 
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
-import org.apache.camel.model.PropertyExpressionDefinition
 import org.apache.camel.model.SagaActionUriDefinition
 import org.apache.camel.model.SagaDefinition
 import org.apache.camel.model.ToDefinition
-import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class SagaTest extends YamlTestSupport {
 
     def "saga (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], SagaDefinition) {
                 propagation == "MANDATORY"
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ScriptTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ScriptTest.groovy
index b749c58fd02..6dff353c2ce 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ScriptTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ScriptTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.ScriptDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class ScriptTest extends YamlTestSupport {
 
     def "script definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], ScriptDefinition) {
                 with (expression, ExpressionDefinition) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetBodyTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetBodyTest.groovy
index 8bce803504b..dfc48442b0d 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetBodyTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetBodyTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.SetBodyDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class SetBodyTest extends YamlTestSupport {
 
     def "set-body definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], SetBodyDefinition) {
                 with (expression, ExpressionDefinition) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetHeaderTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetHeaderTest.groovy
index cbd38fd56e0..e9fc59f7a68 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetHeaderTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetHeaderTest.groovy
@@ -18,16 +18,16 @@ package org.apache.camel.dsl.yaml
 
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.SetHeaderDefinition
-import org.apache.camel.model.SortDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.model.language.SimpleExpression
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class SetHeaderTest extends YamlTestSupport {
 
     def "set-header definition (#resource.location)"(Resource resource) {
         when:
-        context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
         with(context.routeDefinitions[0].outputs[0], SetHeaderDefinition) {
             name == 'test'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetPropertyTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetPropertyTest.groovy
index 8335a5ddc26..2827dd37a17 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetPropertyTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetPropertyTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.SetPropertyDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class SetPropertyTest extends YamlTestSupport {
 
     def "set-property definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], SetPropertyDefinition) {
                 name == 'test'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ThrottleTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ThrottleTest.groovy
index 42c784fbbf8..2b3ebddcc92 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ThrottleTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ThrottleTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.ThrottleDefinition
 import org.apache.camel.model.language.ConstantExpression
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class ThrottleTest extends YamlTestSupport {
 
     def "throttle definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], ThrottleDefinition) {
                 with (expression, ConstantExpression) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToDynamicTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToDynamicTest.groovy
index a87d0047135..b669021880c 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToDynamicTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToDynamicTest.groovy
@@ -19,12 +19,13 @@ package org.apache.camel.dsl.yaml
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.ToDynamicDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class ToDynamicTest extends YamlTestSupport {
 
     def "to-d definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], ToDynamicDefinition) {
                 uri == 'direct:start'
@@ -67,7 +68,7 @@ class ToDynamicTest extends YamlTestSupport {
 
     def "to definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], ToDynamicDefinition) {
                 uri == 'direct:start'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToTest.groovy
index 1f0082ce9e1..1dd2c72856a 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ToTest.groovy
@@ -19,12 +19,13 @@ package org.apache.camel.dsl.yaml
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.ToDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class ToTest extends YamlTestSupport {
 
     def "to definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], ToDefinition) {
                 endpointUri == 'direct:start'
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/UnmarshalTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/UnmarshalTest.groovy
index 7bc0380ff3d..a8e38465eeb 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/UnmarshalTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/UnmarshalTest.groovy
@@ -19,12 +19,13 @@ package org.apache.camel.dsl.yaml
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.UnmarshalDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class UnmarshalTest extends YamlTestSupport {
 
     def "unmarshal definition (#resource.location, #expected)"(Resource resource, String expected) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], UnmarshalDefinition) {
                 with(dataFormatType) {
@@ -78,7 +79,7 @@ class UnmarshalTest extends YamlTestSupport {
 
     def "unmarshal definition with allow null body (#resource.location, #expected)"(Resource resource, String expected) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], UnmarshalDefinition) {
                 allowNullBody == expected
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ValidateTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ValidateTest.groovy
index 96c2ec43aad..cbe35c8e916 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ValidateTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ValidateTest.groovy
@@ -20,12 +20,13 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.ValidateDefinition
 import org.apache.camel.model.language.ExpressionDefinition
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 
 class ValidateTest extends YamlTestSupport {
 
     def "validate definition (#resource.location)"(Resource resource) {
         when:
-            context.routesLoader.loadRoutes(resource)
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource)
         then:
             with(context.routeDefinitions[0].outputs[0], ValidateDefinition) {
                 with(expression, ExpressionDefinition) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy
index 6e2aed45c3a..42a7a9c2d1d 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy
@@ -30,6 +30,7 @@ import org.apache.camel.impl.DefaultCamelContext
 import org.apache.camel.model.RouteTemplateDefinition
 import org.apache.camel.spi.HasCamelContext
 import org.apache.camel.spi.Resource
+import org.apache.camel.support.PluginHelper
 import org.apache.camel.support.ResourceHelper
 import spock.lang.AutoCleanup
 import spock.lang.Specification
@@ -57,7 +58,7 @@ class YamlTestSupport extends Specification implements HasCamelContext {
             }
         }
 
-        context.routesLoader.loadRoutes(resources)
+        PluginHelper.getRoutesLoader(context).loadRoutes(resources)
     }
 
     def addTemplate(String name, @DelegatesTo(RouteTemplateDefinition) Closure<?> closure) {
@@ -113,7 +114,7 @@ class YamlTestSupport extends Specification implements HasCamelContext {
     def loadKamelets(String... resources) {
         int index = 0
 
-        context.routesLoader.loadRoutes(
+        PluginHelper.getRoutesLoader(context).loadRoutes(
             resources.collect {
                 it -> ResourceHelper.fromString("route-${index++}.kamelet.yaml", it.stripIndent())
             }
@@ -123,7 +124,7 @@ class YamlTestSupport extends Specification implements HasCamelContext {
     def loadIntegrations(String... resources) {
         int index = 0
 
-        context.routesLoader.loadRoutes(
+        PluginHelper.getRoutesLoader(context).loadRoutes(
             resources.collect {
                 it -> ResourceHelper.fromString("integration-${index++}.yaml", it.stripIndent())
             }
@@ -133,7 +134,7 @@ class YamlTestSupport extends Specification implements HasCamelContext {
     def loadBindings(String... resources) {
         int index = 0
 
-        context.routesLoader.loadRoutes(
+        PluginHelper.getRoutesLoader(context).loadRoutes(
             resources.collect {
                 it -> ResourceHelper.fromString("binding-${index++}.yaml", it.stripIndent())
             }


[camel] 03/09: CAMEL-15105: make the AsyncProcessorAwaitManager a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 501498d9c8620dd825f94bb177ff63719f2d18d9
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 15:58:05 2023 +0200

    CAMEL-15105: make the AsyncProcessorAwaitManager a plugin of the context
---
 .../java/org/apache/camel/ExtendedCamelContext.java | 16 ----------------
 .../camel/impl/engine/AbstractCamelContext.java     |  8 ++------
 .../impl/engine/DefaultCamelContextExtension.java   | 19 -------------------
 .../impl/engine/SharedCamelInternalProcessor.java   |  3 ++-
 .../apache/camel/impl/console/BlockedConsole.java   |  5 +++--
 .../camel/impl/ExtendedCamelContextConfigurer.java  |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java   | 13 -------------
 .../errorhandler/RedeliveryErrorHandler.java        |  2 +-
 .../core/xml/AbstractCamelContextFactoryBean.java   |  2 +-
 .../processor/async/AsyncEndpointPolicyTest.java    |  3 ++-
 .../AsyncProcessorAwaitManagerInterruptTest.java    | 21 ++++++++++++---------
 ...ssorAwaitManagerInterruptWithRedeliveryTest.java | 19 +++++++++++--------
 .../async/AsyncProcessorAwaitManagerTest.java       | 16 +++++++++-------
 .../camel/main/DefaultConfigurationConfigurer.java  |  2 +-
 .../apache/camel/support/AsyncProcessorHelper.java  |  2 +-
 .../apache/camel/support/AsyncProcessorSupport.java |  2 +-
 .../apache/camel/support/DefaultAsyncProducer.java  |  2 +-
 .../java/org/apache/camel/support/PluginHelper.java | 20 +++++++++++++++++++-
 18 files changed, 66 insertions(+), 95 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index e8346448418..16dbcc3c229 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -23,7 +23,6 @@ import java.util.function.Supplier;
 
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
-import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
@@ -49,7 +48,6 @@ import org.apache.camel.spi.ResourceLoader;
 import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RouteStartupOrder;
-import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.UnitOfWorkFactory;
 
@@ -384,20 +382,6 @@ public interface ExtendedCamelContext {
      */
     void addLogListener(LogListener listener);
 
-    /**
-     * Gets the {@link org.apache.camel.AsyncProcessor} await manager.
-     *
-     * @return the manager
-     */
-    AsyncProcessorAwaitManager getAsyncProcessorAwaitManager();
-
-    /**
-     * Sets a custom {@link org.apache.camel.AsyncProcessor} await manager.
-     *
-     * @param manager the manager
-     */
-    void setAsyncProcessorAwaitManager(AsyncProcessorAwaitManager manager);
-
     /**
      * Gets the {@link BeanIntrospection}
      */
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index a177273fd49..36aecfecdc5 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -221,7 +221,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ModelToXMLDumper modelToXMLDumper;
     volatile RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory;
     volatile RuntimeCamelCatalog runtimeCamelCatalog;
-    volatile AsyncProcessorAwaitManager asyncProcessorAwaitManager;
     volatile UnitOfWorkFactory unitOfWorkFactory;
     volatile BeanIntrospection beanIntrospection;
     volatile boolean eventNotificationApplicable;
@@ -381,6 +380,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(InterceptEndpointFactory.class, this::createInterceptEndpointFactory);
         camelContextExtension.lazyAddContextPlugin(RouteFactory.class, this::createRouteFactory);
         camelContextExtension.lazyAddContextPlugin(RoutesLoader.class, this::createRoutesLoader);
+        camelContextExtension.lazyAddContextPlugin(AsyncProcessorAwaitManager.class, this::createAsyncProcessorAwaitManager);
 
         if (build) {
             try {
@@ -2878,6 +2878,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         // shutdown await manager to trigger interrupt of blocked threads to
         // attempt to free these threads graceful
+        final AsyncProcessorAwaitManager asyncProcessorAwaitManager = PluginHelper.getAsyncProcessorAwaitManager(this);
         InternalServiceManager.shutdownServices(this, asyncProcessorAwaitManager);
 
         // we need also to include routes which failed to start to ensure all resources get stopped when stopping Camel
@@ -3286,7 +3287,6 @@ public abstract class AbstractCamelContext extends BaseService
         typeConverterRegistry = null;
         typeConverter = null;
         reactiveExecutor = null;
-        asyncProcessorAwaitManager = null;
         exchangeFactory = null;
         exchangeFactoryManager = null;
         processorExchangeFactory = null;
@@ -4171,10 +4171,6 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.addInterceptStrategy(interceptStrategy);
     }
 
-    public AsyncProcessorAwaitManager getAsyncProcessorAwaitManager() {
-        return camelContextExtension.getAsyncProcessorAwaitManager();
-    }
-
     public BeanIntrospection getBeanIntrospection() {
         return camelContextExtension.getBeanIntrospection();
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index b981927d3cb..dc0532c2898 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -37,7 +37,6 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
-import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
@@ -407,24 +406,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         }
     }
 
-    @Override
-    public AsyncProcessorAwaitManager getAsyncProcessorAwaitManager() {
-        if (camelContext.asyncProcessorAwaitManager == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.asyncProcessorAwaitManager == null) {
-                    setAsyncProcessorAwaitManager(camelContext.createAsyncProcessorAwaitManager());
-                }
-            }
-        }
-        return camelContext.asyncProcessorAwaitManager;
-    }
-
-    @Override
-    public void setAsyncProcessorAwaitManager(AsyncProcessorAwaitManager asyncProcessorAwaitManager) {
-        camelContext.asyncProcessorAwaitManager
-                = camelContext.getInternalServiceManager().addService(asyncProcessorAwaitManager);
-    }
-
     @Override
     public BeanIntrospection getBeanIntrospection() {
         if (camelContext.beanIntrospection == null) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java
index 6ae6ed90103..28f89571d46 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SharedCamelInternalProcessor.java
@@ -37,6 +37,7 @@ import org.apache.camel.spi.Transformer;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.support.AsyncCallbackToCompletableFutureAdapter;
 import org.apache.camel.support.OrderedComparator;
+import org.apache.camel.support.PluginHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -82,7 +83,7 @@ public class SharedCamelInternalProcessor implements SharedInternalProcessor {
     public SharedCamelInternalProcessor(CamelContext camelContext, CamelInternalProcessorAdvice... advices) {
         this.camelContext = camelContext;
         this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
-        this.awaitManager = camelContext.getCamelContextExtension().getAsyncProcessorAwaitManager();
+        this.awaitManager = PluginHelper.getAsyncProcessorAwaitManager(camelContext);
         this.shutdownStrategy = camelContext.getShutdownStrategy();
 
         if (advices != null) {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
index 339f216f558..8c897dc9b93 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/BlockedConsole.java
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.annotations.DevConsole;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
@@ -37,7 +38,7 @@ public class BlockedConsole extends AbstractDevConsole {
     protected String doCallText(Map<String, Object> options) {
         StringBuilder sb = new StringBuilder();
 
-        AsyncProcessorAwaitManager am = getCamelContext().getCamelContextExtension().getAsyncProcessorAwaitManager();
+        AsyncProcessorAwaitManager am = PluginHelper.getAsyncProcessorAwaitManager(getCamelContext());
         sb.append(String.format("\n    Blocked: %s", am.size()));
         for (AsyncProcessorAwaitManager.AwaitThread at : am.browse()) {
             String age = TimeUtils.printDuration(at.getWaitDuration(), true);
@@ -52,7 +53,7 @@ public class BlockedConsole extends AbstractDevConsole {
     protected JsonObject doCallJson(Map<String, Object> options) {
         JsonObject root = new JsonObject();
 
-        AsyncProcessorAwaitManager am = getCamelContext().getCamelContextExtension().getAsyncProcessorAwaitManager();
+        AsyncProcessorAwaitManager am = PluginHelper.getAsyncProcessorAwaitManager(getCamelContext());
         root.put("blocked", am.size());
 
         final List<JsonObject> list = new ArrayList<>();
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index 77230c6cdf2..5866067408b 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -23,8 +23,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "annotationbasedprocessorfactory":
         case "AnnotationBasedProcessorFactory": target.setAnnotationBasedProcessorFactory(property(camelContext, org.apache.camel.spi.AnnotationBasedProcessorFactory.class, value)); return true;
-        case "asyncprocessorawaitmanager":
-        case "AsyncProcessorAwaitManager": target.setAsyncProcessorAwaitManager(property(camelContext, org.apache.camel.spi.AsyncProcessorAwaitManager.class, value)); return true;
         case "basepackagescan":
         case "BasePackageScan": target.setBasePackageScan(property(camelContext, java.lang.String.class, value)); return true;
         case "beanintrospection":
@@ -76,8 +74,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "annotationbasedprocessorfactory":
         case "AnnotationBasedProcessorFactory": return org.apache.camel.spi.AnnotationBasedProcessorFactory.class;
-        case "asyncprocessorawaitmanager":
-        case "AsyncProcessorAwaitManager": return org.apache.camel.spi.AsyncProcessorAwaitManager.class;
         case "basepackagescan":
         case "BasePackageScan": return java.lang.String.class;
         case "beanintrospection":
@@ -130,8 +126,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "annotationbasedprocessorfactory":
         case "AnnotationBasedProcessorFactory": return target.getAnnotationBasedProcessorFactory();
-        case "asyncprocessorawaitmanager":
-        case "AsyncProcessorAwaitManager": return target.getAsyncProcessorAwaitManager();
         case "basepackagescan":
         case "BasePackageScan": return target.getBasePackageScan();
         case "beanintrospection":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index 82469a20b83..1878d61c495 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -38,7 +38,6 @@ import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
-import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
@@ -63,9 +62,7 @@ import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ResourceLoader;
 import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteController;
-import org.apache.camel.spi.RouteFactory;
 import org.apache.camel.spi.RouteStartupOrder;
-import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.StartupStepRecorder;
 import org.apache.camel.spi.SupervisingRouteController;
 import org.apache.camel.spi.UnitOfWorkFactory;
@@ -290,16 +287,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public AsyncProcessorAwaitManager getAsyncProcessorAwaitManager() {
-        return camelContext.getCamelContextExtension().getAsyncProcessorAwaitManager();
-    }
-
-    @Override
-    public void setAsyncProcessorAwaitManager(AsyncProcessorAwaitManager manager) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public BeanIntrospection getBeanIntrospection() {
         return camelContext.getCamelContextExtension().getBeanIntrospection();
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index 2e8eba75bd7..688b7cf1cd6 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -118,7 +118,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
 
         this.camelContext = camelContext;
         this.reactiveExecutor = camelContext.getCamelContextExtension().getReactiveExecutor();
-        this.awaitManager = camelContext.getCamelContextExtension().getAsyncProcessorAwaitManager();
+        this.awaitManager = PluginHelper.getAsyncProcessorAwaitManager(camelContext);
         this.shutdownStrategy = camelContext.getShutdownStrategy();
         this.redeliveryProcessor = redeliveryProcessor;
         this.deadLetter = deadLetter;
diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index faa44550efd..ea03b928510 100644
--- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -267,7 +267,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
         AsyncProcessorAwaitManager asyncProcessorAwaitManager = getBeanForType(AsyncProcessorAwaitManager.class);
         if (asyncProcessorAwaitManager != null) {
             LOG.info("Using custom AsyncProcessorAwaitManager: {}", asyncProcessorAwaitManager);
-            getContext().getCamelContextExtension().setAsyncProcessorAwaitManager(asyncProcessorAwaitManager);
+            getContext().getCamelContextExtension().addContextPlugin(AsyncProcessorAwaitManager.class, asyncProcessorAwaitManager);
         }
         ManagementStrategy managementStrategy = getBeanForType(ManagementStrategy.class);
         if (managementStrategy != null) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
index 9522bbc165c..7c3912d4b62 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
@@ -31,6 +31,7 @@ import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.support.AsyncCallbackToCompletableFutureAdapter;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -125,7 +126,7 @@ public class AsyncEndpointPolicyTest extends ContextTestSupport {
 
                 public void process(Exchange exchange) throws Exception {
                     final AsyncProcessorAwaitManager awaitManager
-                            = exchange.getContext().getCamelContextExtension().getAsyncProcessorAwaitManager();
+                            = PluginHelper.getAsyncProcessorAwaitManager(exchange.getContext());
                     awaitManager.process(this, exchange);
                 }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java
index ec8383aaad5..51db2d95b5a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptTest.java
@@ -25,6 +25,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -34,10 +35,10 @@ public class AsyncProcessorAwaitManagerInterruptTest extends ContextTestSupport
 
     @Test
     public void testAsyncAwaitInterrupt() throws Exception {
-        context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics().setStatisticsEnabled(true);
-
-        assertEquals(0, context.getCamelContextExtension().getAsyncProcessorAwaitManager().size());
+        final AsyncProcessorAwaitManager asyncProcessorAwaitManager = PluginHelper.getAsyncProcessorAwaitManager(context);
+        asyncProcessorAwaitManager.getStatistics().setStatisticsEnabled(true);
 
+        assertEquals(0, asyncProcessorAwaitManager.size());
         getMockEndpoint("mock:before").expectedBodiesReceived("Hello Camel");
         getMockEndpoint("mock:after").expectedBodiesReceived("Bye Camel");
         getMockEndpoint("mock:result").expectedMessageCount(0);
@@ -51,10 +52,10 @@ public class AsyncProcessorAwaitManagerInterruptTest extends ContextTestSupport
 
         assertMockEndpointsSatisfied();
 
-        assertEquals(0, context.getCamelContextExtension().getAsyncProcessorAwaitManager().size());
+        assertEquals(0, asyncProcessorAwaitManager.size());
         assertEquals(1,
-                context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics().getThreadsBlocked());
-        assertEquals(1, context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics()
+                asyncProcessorAwaitManager.getStatistics().getThreadsBlocked());
+        assertEquals(1, asyncProcessorAwaitManager.getStatistics()
                 .getThreadsInterrupted());
     }
 
@@ -69,17 +70,19 @@ public class AsyncProcessorAwaitManagerInterruptTest extends ContextTestSupport
                         .to("mock:after").process(new Processor() {
                             @Override
                             public void process(Exchange exchange) throws Exception {
-                                int size = context.getCamelContextExtension().getAsyncProcessorAwaitManager().size();
+                                final AsyncProcessorAwaitManager asyncProcessorAwaitManager
+                                        = PluginHelper.getAsyncProcessorAwaitManager(context);
+                                int size = asyncProcessorAwaitManager.size();
                                 log.info("async inflight: {}", size);
                                 assertEquals(1, size);
 
                                 Collection<AsyncProcessorAwaitManager.AwaitThread> threads
-                                        = context.getCamelContextExtension().getAsyncProcessorAwaitManager().browse();
+                                        = asyncProcessorAwaitManager.browse();
                                 AsyncProcessorAwaitManager.AwaitThread thread = threads.iterator().next();
 
                                 // lets interrupt it
                                 String id = thread.getExchange().getExchangeId();
-                                context.getCamelContextExtension().getAsyncProcessorAwaitManager().interrupt(id);
+                                asyncProcessorAwaitManager.interrupt(id);
                             }
                         }).transform(constant("Hi Camel")).to("mock:result");
             }
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptWithRedeliveryTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptWithRedeliveryTest.java
index 808e39cb562..e8dcf3bee9b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptWithRedeliveryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerInterruptWithRedeliveryTest.java
@@ -26,6 +26,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.Registry;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
@@ -50,9 +51,10 @@ public class AsyncProcessorAwaitManagerInterruptWithRedeliveryTest extends Conte
 
     @Test
     public void testAsyncAwaitInterrupt() throws Exception {
-        context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics().setStatisticsEnabled(true);
+        final AsyncProcessorAwaitManager asyncProcessorAwaitManager = PluginHelper.getAsyncProcessorAwaitManager(context);
+        asyncProcessorAwaitManager.getStatistics().setStatisticsEnabled(true);
 
-        assertEquals(0, context.getCamelContextExtension().getAsyncProcessorAwaitManager().size());
+        assertEquals(0, asyncProcessorAwaitManager.size());
 
         getMockEndpoint("mock:before").expectedBodiesReceived("Hello Camel");
         getMockEndpoint("mock:result").expectedMessageCount(0);
@@ -72,10 +74,10 @@ public class AsyncProcessorAwaitManagerInterruptWithRedeliveryTest extends Conte
         // Check we have not reached the full 5 re-deliveries
         verify(bean, atMost(4)).callMe();
 
-        assertEquals(0, context.getCamelContextExtension().getAsyncProcessorAwaitManager().size());
+        assertEquals(0, asyncProcessorAwaitManager.size());
         assertEquals(1,
-                context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics().getThreadsBlocked());
-        assertEquals(1, context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics()
+                asyncProcessorAwaitManager.getStatistics().getThreadsBlocked());
+        assertEquals(1, asyncProcessorAwaitManager.getStatistics()
                 .getThreadsInterrupted());
     }
 
@@ -89,16 +91,17 @@ public class AsyncProcessorAwaitManagerInterruptWithRedeliveryTest extends Conte
             }
 
             // Get our blocked thread
-            int size = context.getCamelContextExtension().getAsyncProcessorAwaitManager().size();
+            final AsyncProcessorAwaitManager asyncProcessorAwaitManager = PluginHelper.getAsyncProcessorAwaitManager(context);
+            int size = asyncProcessorAwaitManager.size();
             assertEquals(1, size);
 
             Collection<AsyncProcessorAwaitManager.AwaitThread> threads
-                    = context.getCamelContextExtension().getAsyncProcessorAwaitManager().browse();
+                    = asyncProcessorAwaitManager.browse();
             AsyncProcessorAwaitManager.AwaitThread thread = threads.iterator().next();
 
             // Interrupt it
             String id = thread.getExchange().getExchangeId();
-            context.getCamelContextExtension().getAsyncProcessorAwaitManager().interrupt(id);
+            asyncProcessorAwaitManager.interrupt(id);
         }).start();
     }
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerTest.java
index c70e060063c..659797fa756 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncProcessorAwaitManagerTest.java
@@ -23,6 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -32,9 +33,10 @@ public class AsyncProcessorAwaitManagerTest extends ContextTestSupport {
 
     @Test
     public void testAsyncAwait() throws Exception {
-        context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics().setStatisticsEnabled(true);
+        final AsyncProcessorAwaitManager asyncProcessorAwaitManager = PluginHelper.getAsyncProcessorAwaitManager(context);
+        asyncProcessorAwaitManager.getStatistics().setStatisticsEnabled(true);
 
-        assertEquals(0, context.getCamelContextExtension().getAsyncProcessorAwaitManager().size());
+        assertEquals(0, asyncProcessorAwaitManager.size());
 
         getMockEndpoint("mock:before").expectedBodiesReceived("Hello Camel");
         getMockEndpoint("mock:after").expectedBodiesReceived("Bye Camel");
@@ -45,10 +47,10 @@ public class AsyncProcessorAwaitManagerTest extends ContextTestSupport {
 
         assertMockEndpointsSatisfied();
 
-        assertEquals(0, context.getCamelContextExtension().getAsyncProcessorAwaitManager().size());
+        assertEquals(0, asyncProcessorAwaitManager.size());
         assertEquals(1,
-                context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics().getThreadsBlocked());
-        assertEquals(0, context.getCamelContextExtension().getAsyncProcessorAwaitManager().getStatistics()
+                asyncProcessorAwaitManager.getStatistics().getThreadsBlocked());
+        assertEquals(0, asyncProcessorAwaitManager.getStatistics()
                 .getThreadsInterrupted());
     }
 
@@ -63,12 +65,12 @@ public class AsyncProcessorAwaitManagerTest extends ContextTestSupport {
                         .process(new Processor() {
                             @Override
                             public void process(Exchange exchange) throws Exception {
-                                int size = context.getCamelContextExtension().getAsyncProcessorAwaitManager().size();
+                                int size = PluginHelper.getAsyncProcessorAwaitManager(context).size();
                                 log.info("async inflight: {}", size);
                                 assertEquals(1, size);
 
                                 Collection<AsyncProcessorAwaitManager.AwaitThread> threads
-                                        = context.getCamelContextExtension().getAsyncProcessorAwaitManager().browse();
+                                        = PluginHelper.getAsyncProcessorAwaitManager(context).browse();
                                 AsyncProcessorAwaitManager.AwaitThread thread = threads.iterator().next();
 
                                 long wait = thread.getWaitDuration();
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index cfd445143f5..d1cc0adc905 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -383,7 +383,7 @@ public final class DefaultConfigurationConfigurer {
         }
         AsyncProcessorAwaitManager apam = getSingleBeanOfType(registry, AsyncProcessorAwaitManager.class);
         if (apam != null) {
-            ecc.getCamelContextExtension().setAsyncProcessorAwaitManager(apam);
+            ecc.getCamelContextExtension().addContextPlugin(AsyncProcessorAwaitManager.class, apam);
         }
         ManagementStrategy ms = getSingleBeanOfType(registry, ManagementStrategy.class);
         if (ms != null) {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/AsyncProcessorHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/AsyncProcessorHelper.java
index 6052d2f6dd4..19ae9d8f26c 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/AsyncProcessorHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/AsyncProcessorHelper.java
@@ -43,7 +43,7 @@ public final class AsyncProcessorHelper {
      */
     public static void process(final AsyncProcessor processor, final Exchange exchange) throws Exception {
         final AsyncProcessorAwaitManager awaitManager
-                = exchange.getContext().getCamelContextExtension().getAsyncProcessorAwaitManager();
+                = PluginHelper.getAsyncProcessorAwaitManager(exchange.getContext());
         awaitManager.process(processor, exchange);
     }
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/AsyncProcessorSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/AsyncProcessorSupport.java
index b693d3f1263..eba0c4ebd02 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/AsyncProcessorSupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/AsyncProcessorSupport.java
@@ -36,7 +36,7 @@ public abstract class AsyncProcessorSupport extends ServiceSupport implements As
     @Override
     public void process(Exchange exchange) throws Exception {
         AsyncProcessorAwaitManager awaitManager
-                = exchange.getContext().getCamelContextExtension().getAsyncProcessorAwaitManager();
+                = PluginHelper.getAsyncProcessorAwaitManager(exchange.getContext());
         awaitManager.process(this, exchange);
     }
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultAsyncProducer.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultAsyncProducer.java
index 06df2020b51..24372acc978 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultAsyncProducer.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultAsyncProducer.java
@@ -36,7 +36,7 @@ public abstract class DefaultAsyncProducer extends DefaultProducer implements As
     @Override
     public void process(Exchange exchange) throws Exception {
         AsyncProcessorAwaitManager awaitManager
-                = exchange.getContext().getCamelContextExtension().getAsyncProcessorAwaitManager();
+                = PluginHelper.getAsyncProcessorAwaitManager(exchange.getContext());
         awaitManager.process(this, exchange);
     }
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index deebc08f9d1..4870a9e22f5 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -23,6 +23,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.console.DevConsoleResolver;
 import org.apache.camel.health.HealthCheckResolver;
+import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory;
 import org.apache.camel.spi.ComponentNameResolver;
@@ -430,11 +431,28 @@ public final class PluginHelper {
         return getRoutesLoader(camelContext.getCamelContextExtension());
     }
 
-
     /**
      * Gets the {@link RoutesLoader} to be used.
      */
     public static RoutesLoader getRoutesLoader(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(RoutesLoader.class);
     }
+
+    /**
+     * Gets the {@link org.apache.camel.AsyncProcessor} await manager.
+     *
+     * @return the manager
+     */
+    public static AsyncProcessorAwaitManager getAsyncProcessorAwaitManager(CamelContext camelContext) {
+        return getAsyncProcessorAwaitManager(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link org.apache.camel.AsyncProcessor} await manager.
+     *
+     * @return the manager
+     */
+    public static AsyncProcessorAwaitManager getAsyncProcessorAwaitManager(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(AsyncProcessorAwaitManager.class);
+    }
 }


[camel] 06/09: CAMEL-15105: make the RestBindingJaxbDataFormatFactory a plugin of the context

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 34b6acf25162249dd1decadd8a80e83b7082e838
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 17:04:34 2023 +0200

    CAMEL-15105: make the RestBindingJaxbDataFormatFactory a plugin of the context
---
 .../org/apache/camel/component/rest/RestProducer.java   |  2 +-
 .../java/org/apache/camel/ExtendedCamelContext.java     | 11 -----------
 .../apache/camel/impl/engine/AbstractCamelContext.java  |  5 -----
 .../camel/impl/engine/DefaultCamelContextExtension.java | 17 -----------------
 .../camel/impl/ExtendedCamelContextConfigurer.java      |  6 ------
 .../camel/impl/lw/LightweightCamelContextExtension.java | 12 ------------
 .../apache/camel/reifier/rest/RestBindingReifier.java   |  3 ++-
 .../java/org/apache/camel/support/PluginHelper.java     | 17 +++++++++++++++++
 8 files changed, 20 insertions(+), 53 deletions(-)

diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestProducer.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestProducer.java
index e851e786504..fbd78cdfb93 100644
--- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestProducer.java
+++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestProducer.java
@@ -359,7 +359,7 @@ public class RestProducer extends DefaultAsyncProducer {
 
         if (jaxb != null) {
             // to setup JAXB we need to use camel-jaxb
-            camelContext.getCamelContextExtension().getRestBindingJaxbDataFormatFactory()
+            PluginHelper.getRestBindingJaxbDataFormatFactory(camelContext)
                     .setupJaxb(camelContext, configuration, type, null, outType, null, jaxb, outJaxb);
         }
 
diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 85d871635e3..56407a31044 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -45,7 +45,6 @@ import org.apache.camel.spi.ProcessorExchangeFactory;
 import org.apache.camel.spi.ReactiveExecutor;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ResourceLoader;
-import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.StartupStepRecorder;
@@ -449,16 +448,6 @@ public interface ExtendedCamelContext {
      */
     void setModelToXMLDumper(ModelToXMLDumper modelToXMLDumper);
 
-    /**
-     * Gets the {@link RestBindingJaxbDataFormatFactory} to be used.
-     */
-    RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory();
-
-    /**
-     * Sets a custom {@link RestBindingJaxbDataFormatFactory} to be used.
-     */
-    void setRestBindingJaxbDataFormatFactory(RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory);
-
     /**
      * Internal {@link RouteController} that are only used internally by Camel to perform basic route operations. Do not
      * use this as end user.
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 18de2cc7150..61c202c8e9d 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -218,7 +218,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile BeanProcessorFactory beanProcessorFactory;
     volatile ResourceLoader resourceLoader;
     volatile ModelToXMLDumper modelToXMLDumper;
-    volatile RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory;
     volatile UnitOfWorkFactory unitOfWorkFactory;
     volatile BeanIntrospection beanIntrospection;
     volatile boolean eventNotificationApplicable;
@@ -4198,10 +4197,6 @@ public abstract class AbstractCamelContext extends BaseService
         return camelContextExtension.getModelToXMLDumper();
     }
 
-    public RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory() {
-        return camelContextExtension.getRestBindingJaxbDataFormatFactory();
-    }
-
     public EndpointUriFactory getEndpointUriFactory(String scheme) {
         return camelContextExtension.getEndpointUriFactory(scheme);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index f0bad898c5b..29a7a12f9ad 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -35,7 +35,6 @@ import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
-import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
@@ -65,7 +64,6 @@ import org.apache.camel.spi.PropertiesComponent;
 import org.apache.camel.spi.ReactiveExecutor;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ResourceLoader;
-import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.StartupStepRecorder;
@@ -485,21 +483,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         camelContext.modelToXMLDumper = camelContext.getInternalServiceManager().addService(modelToXMLDumper);
     }
 
-    public RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory() {
-        if (camelContext.restBindingJaxbDataFormatFactory == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.restBindingJaxbDataFormatFactory == null) {
-                    setRestBindingJaxbDataFormatFactory(camelContext.createRestBindingJaxbDataFormatFactory());
-                }
-            }
-        }
-        return camelContext.restBindingJaxbDataFormatFactory;
-    }
-
-    public void setRestBindingJaxbDataFormatFactory(RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory) {
-        camelContext.restBindingJaxbDataFormatFactory = restBindingJaxbDataFormatFactory;
-    }
-
     @Override
     public ExchangeFactory getExchangeFactory() {
         if (camelContext.exchangeFactory == null) {
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index d7ec3d7c9a2..8d46b62df44 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -57,8 +57,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "Registry": target.setRegistry(property(camelContext, org.apache.camel.spi.Registry.class, value)); return true;
         case "resourceloader":
         case "ResourceLoader": target.setResourceLoader(property(camelContext, org.apache.camel.spi.ResourceLoader.class, value)); return true;
-        case "restbindingjaxbdataformatfactory":
-        case "RestBindingJaxbDataFormatFactory": target.setRestBindingJaxbDataFormatFactory(property(camelContext, org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class, value)); return true;
         case "startupsteprecorder":
         case "StartupStepRecorder": target.setStartupStepRecorder(property(camelContext, org.apache.camel.spi.StartupStepRecorder.class, value)); return true;
         case "unitofworkfactory":
@@ -106,8 +104,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "Registry": return org.apache.camel.spi.Registry.class;
         case "resourceloader":
         case "ResourceLoader": return org.apache.camel.spi.ResourceLoader.class;
-        case "restbindingjaxbdataformatfactory":
-        case "RestBindingJaxbDataFormatFactory": return org.apache.camel.spi.RestBindingJaxbDataFormatFactory.class;
         case "startupsteprecorder":
         case "StartupStepRecorder": return org.apache.camel.spi.StartupStepRecorder.class;
         case "unitofworkfactory":
@@ -156,8 +152,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "Registry": return target.getRegistry();
         case "resourceloader":
         case "ResourceLoader": return target.getResourceLoader();
-        case "restbindingjaxbdataformatfactory":
-        case "RestBindingJaxbDataFormatFactory": return target.getRestBindingJaxbDataFormatFactory();
         case "startupsteprecorder":
         case "StartupStepRecorder": return target.getStartupStepRecorder();
         case "unitofworkfactory":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index 0185cc309ce..ac1a2a935f4 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -36,7 +36,6 @@ import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
-import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
@@ -60,7 +59,6 @@ import org.apache.camel.spi.PropertiesComponent;
 import org.apache.camel.spi.ReactiveExecutor;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ResourceLoader;
-import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteController;
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.StartupStepRecorder;
@@ -408,16 +406,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setRestBindingJaxbDataFormatFactory(RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public ResourceLoader getResourceLoader() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
index 5c45fbe1ab9..79833129bec 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
@@ -27,6 +27,7 @@ import org.apache.camel.reifier.AbstractReifier;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 
 public class RestBindingReifier extends AbstractReifier {
@@ -128,7 +129,7 @@ public class RestBindingReifier extends AbstractReifier {
 
             if (jaxb != null) {
                 // to setup JAXB we need to use camel-jaxb
-                camelContext.getCamelContextExtension().getRestBindingJaxbDataFormatFactory().setupJaxb(
+                PluginHelper.getRestBindingJaxbDataFormatFactory(camelContext).setupJaxb(
                         camelContext, config,
                         parseString(definition.getType()), definition.getTypeClass(),
                         parseString(definition.getOutType()), definition.getOutTypeClass(),
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index f3bf2e0a77a..0f95f511c41 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -42,6 +42,7 @@ import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.PeriodTaskResolver;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.ProcessorFactory;
+import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteFactory;
 import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.UriFactoryResolver;
@@ -470,4 +471,20 @@ public final class PluginHelper {
     public static RuntimeCamelCatalog getRuntimeCamelCatalog(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(RuntimeCamelCatalog.class);
     }
+
+    /**
+     * Gets the {@link RestBindingJaxbDataFormatFactory} to be used.
+     */
+    public static RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory(CamelContext camelContext) {
+        return getRestBindingJaxbDataFormatFactory(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link RestBindingJaxbDataFormatFactory} to be used.
+     */
+    public static RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory(
+            ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(RestBindingJaxbDataFormatFactory.class);
+
+    }
 }