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 19:43:51 UTC

[camel] 03/04: CAMEL-15105: make the ResourceLoader a plugin of the context

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 5db6d42809bde48f391c47735668646708b7abb0
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sun Apr 2 11:26:15 2023 +0200

    CAMEL-15105: make the ResourceLoader a plugin of the context
---
 .../openapi/jmx/JmxRestDefinitionsResolver.java    |  5 ++-
 .../camel/github/GistResourceResolverTest.java     |  5 ++-
 .../camel/github/GitHubResourceResolverTest.java   | 11 +++----
 .../org/apache/camel/ExtendedCamelContext.java     | 10 ------
 .../apache/camel/support/jsse/JsseParameters.java  |  2 +-
 .../camel/impl/engine/AbstractCamelContext.java    |  9 +----
 .../impl/engine/DefaultCamelContextExtension.java  | 17 ----------
 .../engine/DefaultPackageScanResourceResolver.java | 14 +++-----
 .../apache/camel/converter/ResourceConverter.java  |  6 ++--
 .../apache/camel/impl/console/ConsoleHelper.java   |  7 ++--
 .../camel/impl/console/SourceDevConsole.java       |  4 +--
 .../apache/camel/impl/console/TopDevConsole.java   |  7 ++--
 .../camel/impl/ExtendedCamelContextConfigurer.java |  6 ----
 .../impl/lw/LightweightCamelContextExtension.java  | 10 ------
 .../org/apache/camel/util/ResourceLoaderTest.java  | 38 ++++++++++++----------
 .../support/FileWatcherResourceReloadStrategy.java |  4 +--
 .../org/apache/camel/support/PluginHelper.java     | 15 +++++++++
 .../org/apache/camel/support/ResourceHelper.java   |  4 +--
 .../apache/camel/support/RouteTemplateHelper.java  | 10 +++---
 .../dsl/groovy/GroovyRouteBuilderLoaderTest.groovy |  2 +-
 .../dsl/java/joor/JavaRoutesBuilderLoaderTest.java |  8 ++---
 .../dsl/js/JavaScriptRoutesBuilderLoaderTest.java  | 14 ++++----
 .../apache/camel/dsl/jsh/JshSourceLoaderTest.java  |  2 +-
 .../java/org/apache/camel/main/KameletMain.java    |  3 +-
 .../dsl/kotlin/KotlinRoutesBuilderLoaderTest.kt    | 18 +++++-----
 .../apache/camel/dsl/xml/io/XmlLoadRestTest.java   |  4 +--
 .../org/apache/camel/dsl/xml/io/XmlLoadTest.java   | 11 +++----
 .../xml/jaxb/definition/LoadRestFromXmlTest.java   |  6 ++--
 .../xml/jaxb/definition/LoadRouteFromXmlTest.java  |  6 ++--
 .../LoadRouteFromXmlWithInterceptTest.java         |  6 ++--
 .../LoadRouteFromXmlWithNamespaceTest.java         |  6 ++--
 .../LoadRouteFromXmlWithOnExceptionTest.java       |  6 ++--
 .../definition/LoadRouteFromXmlWithPolicyTest.java |  6 ++--
 .../definition/RouteTemplateLoadFromXmlTest.java   | 13 +++-----
 .../jaxb/spring/CamelLoadRoutesFromXMLTest.java    |  4 +--
 .../camel/dsl/xml/jaxb/JaxbXmlLoadRestTest.java    |  4 +--
 .../apache/camel/dsl/xml/jaxb/JaxbXmlLoadTest.java |  6 ++--
 .../apache/camel/dsl/yaml/LineNumberTest.groovy    |  5 +--
 .../org/apache/camel/dsl/yaml/RestTest.groovy      |  7 ++--
 .../camel/dsl/yaml/support/YamlTestSupport.groovy  |  1 +
 40 files changed, 127 insertions(+), 195 deletions(-)

diff --git a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/jmx/JmxRestDefinitionsResolver.java b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/jmx/JmxRestDefinitionsResolver.java
index 6d446b9822a..271575153a9 100644
--- a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/jmx/JmxRestDefinitionsResolver.java
+++ b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/jmx/JmxRestDefinitionsResolver.java
@@ -25,13 +25,13 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.openapi.RestDefinitionsResolver;
 import org.apache.camel.openapi.RestOpenApiSupport;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.annotations.JdkService;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.xml.in.ModelParser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -68,8 +68,7 @@ public class JmxRestDefinitionsResolver implements RestDefinitionsResolver {
             if (xml != null) {
                 LOG.debug("DumpRestAsXml:\n{}", xml);
 
-                ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
-                Resource resource = ecc.getResourceLoader().resolveResource("mem:" + xml);
+                Resource resource = PluginHelper.getResourceLoader(camelContext).resolveResource("mem:" + xml);
                 RestsDefinition rests = new ModelParser(resource).parseRestsDefinition().orElse(null);
                 if (rests != null) {
                     return rests.getRests();
diff --git a/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GistResourceResolverTest.java b/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GistResourceResolverTest.java
index 8cf2263fe64..ca51fbab98f 100644
--- a/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GistResourceResolverTest.java
+++ b/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GistResourceResolverTest.java
@@ -16,8 +16,8 @@
  */
 package org.apache.camel.github;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
@@ -29,8 +29,7 @@ public class GistResourceResolverTest extends CamelTestSupport {
 
     @Test
     public void testGist() throws Exception {
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
-        Resource res = ecc.getResourceLoader().resolveResource("gist:davsclaus:123:456:beer.xml");
+        Resource res = PluginHelper.getResourceLoader(context).resolveResource("gist:davsclaus:123:456:beer.xml");
         assertNotNull(res);
         assertFalse(res.exists());
         assertEquals("https://gist.githubusercontent.com/davsclaus/123/raw/456/beer.xml", res.getLocation());
diff --git a/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GitHubResourceResolverTest.java b/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GitHubResourceResolverTest.java
index 43453d1c917..82123f887b5 100644
--- a/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GitHubResourceResolverTest.java
+++ b/components/camel-resourceresolver-github/src/test/java/org/apache/camel/github/GitHubResourceResolverTest.java
@@ -16,8 +16,8 @@
  */
 package org.apache.camel.github;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
@@ -29,8 +29,7 @@ public class GitHubResourceResolverTest extends CamelTestSupport {
 
     @Test
     public void testGitHubLoadPom() throws Exception {
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
-        Resource res = ecc.getResourceLoader().resolveResource("github:apache:camel:main:core/pom.xml");
+        Resource res = PluginHelper.getResourceLoader(context).resolveResource("github:apache:camel:main:core/pom.xml");
         assertNotNull(res);
         assertTrue(res.exists());
 
@@ -41,8 +40,7 @@ public class GitHubResourceResolverTest extends CamelTestSupport {
 
     @Test
     public void testGitHubLoadMainDefault() throws Exception {
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
-        Resource res = ecc.getResourceLoader().resolveResource("github:apache:camel:core/pom.xml");
+        Resource res = PluginHelper.getResourceLoader(context).resolveResource("github:apache:camel:core/pom.xml");
         assertNotNull(res);
         assertTrue(res.exists());
 
@@ -53,8 +51,7 @@ public class GitHubResourceResolverTest extends CamelTestSupport {
 
     @Test
     public void testGitHubDoesNotExist() {
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
-        Resource res = ecc.getResourceLoader().resolveResource("github:apache:camel:main:core/unknown.xml");
+        Resource res = PluginHelper.getResourceLoader(context).resolveResource("github:apache:camel:main:core/unknown.xml");
         assertNotNull(res);
         assertFalse(res.exists());
     }
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 e7c09eab5bb..849a92341a2 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
@@ -402,16 +402,6 @@ public interface ExtendedCamelContext {
      */
     void setEventNotificationApplicable(boolean eventNotificationApplicable);
 
-    /**
-     * Gets the {@link ResourceLoader} to be used.
-     */
-    ResourceLoader getResourceLoader();
-
-    /**
-     * Sets a custom {@link ResourceLoader} to be used.
-     */
-    void setResourceLoader(ResourceLoader resourceLoader);
-
     /**
      * Gets the {@link ModelToXMLDumper} to be used.
      */
diff --git a/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java b/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
index 081e6833a2a..47d826a589c 100644
--- a/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
+++ b/core/camel-api/src/main/java/org/apache/camel/support/jsse/JsseParameters.java
@@ -114,7 +114,7 @@ public class JsseParameters implements CamelContextAware {
     protected InputStream resolveResource(String resource) throws IOException {
         ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
 
-        Resource res = getCamelContext().getCamelContextExtension().getResourceLoader().resolveResource(resource);
+        Resource res = getCamelContext().getCamelContextExtension().getContextPlugin(ResourceLoader.class).resolveResource(resource);
         if (res == null) {
             throw new IOException("Could not open " + resource + " as a file, class path resource, or URL.");
         }
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 aa511feb1c2..00db12e9ca2 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
@@ -381,6 +381,7 @@ public abstract class AbstractCamelContext extends BaseService
                 this::createRestBindingJaxbDataFormatFactory);
         camelContextExtension.lazyAddContextPlugin(BeanProxyFactory.class, this::createBeanProxyFactory);
         camelContextExtension.lazyAddContextPlugin(UnitOfWorkFactory.class, this::createUnitOfWorkFactory);
+        camelContextExtension.lazyAddContextPlugin(ResourceLoader.class, this::createResourceLoader);
 
         if (build) {
             try {
@@ -4175,14 +4176,6 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.setReactiveExecutor(reactiveExecutor);
     }
 
-    public ResourceLoader getResourceLoader() {
-        return camelContextExtension.getResourceLoader();
-    }
-
-    public void setResourceLoader(ResourceLoader resourceLoader) {
-        camelContextExtension.setResourceLoader(resourceLoader);
-    }
-
     public ModelToXMLDumper getModelToXMLDumper() {
         return camelContextExtension.getModelToXMLDumper();
     }
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 40ce95e0959..73aa212417b 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
@@ -416,23 +416,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         camelContext.headersMapFactory = camelContext.getInternalServiceManager().addService(headersMapFactory);
     }
 
-    @Override
-    public ResourceLoader getResourceLoader() {
-        if (camelContext.resourceLoader == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.resourceLoader == null) {
-                    setResourceLoader(camelContext.createResourceLoader());
-                }
-            }
-        }
-        return camelContext.resourceLoader;
-    }
-
-    @Override
-    public void setResourceLoader(ResourceLoader resourceLoader) {
-        camelContext.resourceLoader = camelContext.getInternalServiceManager().addService(resourceLoader);
-    }
-
     public ModelToXMLDumper getModelToXMLDumper() {
         if (camelContext.modelToXMLDumper == null) {
             synchronized (camelContext.lock) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
index fba4718abc0..679bdf72ebb 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolver.java
@@ -37,11 +37,11 @@ import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
 import org.apache.camel.CamelContextAware;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NonManagedService;
 import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.ResourceLoader;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.AntPathMatcher;
 import org.apache.camel.util.IOHelper;
@@ -83,8 +83,7 @@ public class DefaultPackageScanResourceResolver extends BasePackageScanResolver
                 findInClasspath(root, resources, subPattern);
             }
         } else {
-            final ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
-            final ResourceLoader loader = ecc.getResourceLoader();
+            final ResourceLoader loader = PluginHelper.getResourceLoader(getCamelContext());
 
             // its a single resource so load it directly
             resources.add(loader.resolveResource(location));
@@ -97,8 +96,7 @@ public class DefaultPackageScanResourceResolver extends BasePackageScanResolver
             String subPattern)
             throws Exception {
 
-        final ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
-        final ResourceLoader loader = ecc.getResourceLoader();
+        final ResourceLoader loader = PluginHelper.getResourceLoader(getCamelContext());
 
         for (Path path : ResourceHelper.findInFileSystem(dir.toPath(), subPattern)) {
             resources.add(loader.resolveResource("file:" + path.toString()));
@@ -245,8 +243,7 @@ public class DefaultPackageScanResourceResolver extends BasePackageScanResolver
             boolean match = PATH_MATCHER.match(subPattern, shortName);
             log.debug("Found resource: {} matching pattern: {} -> {}", shortName, subPattern, match);
             if (match) {
-                final ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
-                final ResourceLoader loader = ecc.getResourceLoader();
+                final ResourceLoader loader = PluginHelper.getResourceLoader(getCamelContext());
 
                 resources.add(loader.resolveResource(name));
             }
@@ -322,8 +319,7 @@ public class DefaultPackageScanResourceResolver extends BasePackageScanResolver
                 boolean match = PATH_MATCHER.match(subPattern, name);
                 log.debug("Found resource: {} matching pattern: {} -> {}", name, subPattern, match);
                 if (match) {
-                    final ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
-                    final ResourceLoader loader = ecc.getResourceLoader();
+                    final ResourceLoader loader = PluginHelper.getResourceLoader(getCamelContext());
 
                     resources.add(loader.resolveResource("file:" + file.getPath()));
                 }
diff --git a/core/camel-base/src/main/java/org/apache/camel/converter/ResourceConverter.java b/core/camel-base/src/main/java/org/apache/camel/converter/ResourceConverter.java
index 07279102318..8a85783dd28 100644
--- a/core/camel-base/src/main/java/org/apache/camel/converter/ResourceConverter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/converter/ResourceConverter.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Converter;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 
 @Converter(generateBulkLoader = true)
 public final class ResourceConverter {
@@ -57,9 +58,8 @@ public final class ResourceConverter {
     }
 
     @Converter(order = 5)
-    public static Resource toResource(String uri, CamelContext camelContext) throws IOException {
-        ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
-        return ecc.getResourceLoader().resolveResource(uri);
+    public static Resource toResource(String uri, CamelContext camelContext) {
+        return PluginHelper.getResourceLoader(camelContext).resolveResource(uri);
     }
 
 }
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsoleHelper.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsoleHelper.java
index d6113316d09..7e1ece0378f 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsoleHelper.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsoleHelper.java
@@ -23,6 +23,7 @@ import java.util.List;
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.support.LoggerHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
@@ -42,8 +43,7 @@ public final class ConsoleHelper {
         List<JsonObject> code = new ArrayList<>();
         try {
             location = LoggerHelper.stripSourceLocationLineNumber(location);
-            Resource resource = camelContext.getCamelContextExtension().getResourceLoader()
-                    .resolveResource(location);
+            Resource resource = PluginHelper.getResourceLoader(camelContext).resolveResource(location);
             if (resource != null) {
                 LineNumberReader reader = new LineNumberReader(resource.getReader());
                 int i = 0;
@@ -77,8 +77,7 @@ public final class ConsoleHelper {
 
         try {
             location = LoggerHelper.stripSourceLocationLineNumber(location);
-            Resource resource = camelContext.getCamelContextExtension().getResourceLoader()
-                    .resolveResource(location);
+            Resource resource = PluginHelper.getResourceLoader(camelContext).resolveResource(location);
             if (resource != null) {
                 LineNumberReader reader = new LineNumberReader(resource.getReader());
                 int i = 0;
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
index 73811ce2845..079a6ccf4a6 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
@@ -30,6 +30,7 @@ import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.LoggerHelper;
 import org.apache.camel.support.PatternHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StringHelper;
@@ -61,8 +62,7 @@ public class SourceDevConsole extends AbstractDevConsole {
                 loc = LoggerHelper.stripSourceLocationLineNumber(loc);
                 StringBuilder code = new StringBuilder();
                 try {
-                    Resource resource = getCamelContext().getCamelContextExtension().getResourceLoader()
-                            .resolveResource(loc);
+                    Resource resource = PluginHelper.getResourceLoader(getCamelContext()).resolveResource(loc);
                     if (resource != null) {
                         if (sb.length() > 0) {
                             sb.append("\n");
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
index 9663f6b13d3..dc38fd77d30 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
@@ -33,6 +33,7 @@ import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.LoggerHelper;
 import org.apache.camel.support.PatternHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StringHelper;
@@ -107,8 +108,7 @@ public class TopDevConsole extends AbstractDevConsole {
                         int line = mpb.getSourceLineNumber();
                         try {
                             loc = LoggerHelper.stripSourceLocationLineNumber(loc);
-                            Resource resource = getCamelContext().getCamelContextExtension().getResourceLoader()
-                                    .resolveResource(loc);
+                            Resource resource = PluginHelper.getResourceLoader(getCamelContext()).resolveResource(loc);
                             if (resource != null) {
                                 LineNumberReader reader = new LineNumberReader(resource.getReader());
                                 for (int i = 1; i < line + 3; i++) {
@@ -210,8 +210,7 @@ public class TopDevConsole extends AbstractDevConsole {
                         int line = mpb.getSourceLineNumber();
                         try {
                             loc = LoggerHelper.stripSourceLocationLineNumber(loc);
-                            Resource resource = getCamelContext().getCamelContextExtension().getResourceLoader()
-                                    .resolveResource(loc);
+                            Resource resource = PluginHelper.getResourceLoader(getCamelContext()).resolveResource(loc);
                             if (resource != null) {
                                 LineNumberReader reader = new LineNumberReader(resource.getReader());
                                 for (int i = 1; i < line + 3; i++) {
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 8d662d241b9..8c542c09014 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
@@ -53,8 +53,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ReactiveExecutor": target.setReactiveExecutor(property(camelContext, org.apache.camel.spi.ReactiveExecutor.class, value)); return true;
         case "registry":
         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 "startupsteprecorder":
         case "StartupStepRecorder": target.setStartupStepRecorder(property(camelContext, org.apache.camel.spi.StartupStepRecorder.class, value)); return true;
         default: return false;
@@ -96,8 +94,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ReactiveExecutor": return org.apache.camel.spi.ReactiveExecutor.class;
         case "registry":
         case "Registry": return org.apache.camel.spi.Registry.class;
-        case "resourceloader":
-        case "ResourceLoader": return org.apache.camel.spi.ResourceLoader.class;
         case "startupsteprecorder":
         case "StartupStepRecorder": return org.apache.camel.spi.StartupStepRecorder.class;
         default: return null;
@@ -140,8 +136,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ReactiveExecutor": return target.getReactiveExecutor();
         case "registry":
         case "Registry": return target.getRegistry();
-        case "resourceloader":
-        case "ResourceLoader": return target.getResourceLoader();
         case "startupsteprecorder":
         case "StartupStepRecorder": return target.getStartupStepRecorder();
         default: return 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 de6e3e6ec07..837da2e48fe 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
@@ -380,16 +380,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public ResourceLoader getResourceLoader() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setResourceLoader(ResourceLoader resourceLoader) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public void registerEndpointCallback(EndpointStrategy strategy) {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/ResourceLoaderTest.java b/core/camel-core/src/test/java/org/apache/camel/util/ResourceLoaderTest.java
index cffb1ae2dc1..9968ac80ca7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/ResourceLoaderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/ResourceLoaderTest.java
@@ -30,6 +30,8 @@ import org.apache.camel.TestSupport;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.engine.DefaultResourceLoader;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.spi.ResourceLoader;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.support.ResourceResolverSupport;
 import org.junit.jupiter.api.Test;
@@ -46,7 +48,7 @@ public class ResourceLoaderTest extends TestSupport {
     @Test
     public void testLoadFile() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("file:src/test/resources/log4j2.properties");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("file:src/test/resources/log4j2.properties");
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -63,7 +65,7 @@ public class ResourceLoaderTest extends TestSupport {
         copyFile(new File("src/test/resources/log4j2.properties"), new File("target/data/my space/log4j2.properties"));
 
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("file:target/data/my%20space/log4j2.properties");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("file:target/data/my%20space/log4j2.properties");
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -77,7 +79,7 @@ public class ResourceLoaderTest extends TestSupport {
     @Test
     public void testLoadClasspath() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("classpath:log4j2.properties");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("classpath:log4j2.properties");
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -91,7 +93,7 @@ public class ResourceLoaderTest extends TestSupport {
     @Test
     public void testLoadClasspathDefault() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource("log4j2.properties");
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource("log4j2.properties");
 
             // need to be started as it triggers the fallback
             // resolver
@@ -123,9 +125,9 @@ public class ResourceLoaderTest extends TestSupport {
                 }
             });
 
-            context.setResourceLoader(loader);
+            context.getCamelContextExtension().addContextPlugin(ResourceLoader.class, loader);
 
-            Resource resource = context.getResourceLoader().resolveResource("log4j2.properties");
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource("log4j2.properties");
 
             // need to be started as it triggers the fallback
             // resolver
@@ -146,7 +148,7 @@ public class ResourceLoaderTest extends TestSupport {
         DefaultCamelContext context = new DefaultCamelContext();
         context.getCamelContextExtension().getRegistry().bind("myBean", "This is a log4j logging configuration file");
 
-        Resource resource = context.getResourceLoader().resolveResource("ref:myBean");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("ref:myBean");
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -163,7 +165,7 @@ public class ResourceLoaderTest extends TestSupport {
         context.getCamelContextExtension().getRegistry().bind("myBean",
                 new AtomicReference<InputStream>(new ByteArrayInputStream("a".getBytes())));
 
-        Resource resource = context.getResourceLoader().resolveResource("bean:myBean::get");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("bean:myBean::get");
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -180,7 +182,7 @@ public class ResourceLoaderTest extends TestSupport {
         context.getCamelContextExtension().getRegistry().bind("my.company.MyClass",
                 new AtomicReference<InputStream>(new ByteArrayInputStream("a".getBytes())));
 
-        Resource resource = context.getResourceLoader().resolveResource("bean:my.company.MyClass::get");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("bean:my.company.MyClass::get");
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -197,7 +199,7 @@ public class ResourceLoaderTest extends TestSupport {
         context.getCamelContextExtension().getRegistry().bind("myBean",
                 new AtomicReference<InputStream>(new ByteArrayInputStream("a".getBytes())));
 
-        Resource resource = context.getResourceLoader().resolveResource("bean:myBean.get");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("bean:myBean.get");
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -211,7 +213,7 @@ public class ResourceLoaderTest extends TestSupport {
     @Test
     public void testLoadFileNotFound() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("file:src/test/resources/notfound.txt");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("file:src/test/resources/notfound.txt");
 
         assertFalse(resource.exists());
     }
@@ -219,7 +221,7 @@ public class ResourceLoaderTest extends TestSupport {
     @Test
     public void testLoadClasspathNotFound() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("classpath:notfound.txt");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("classpath:notfound.txt");
 
         assertFalse(resource.exists());
     }
@@ -227,7 +229,7 @@ public class ResourceLoaderTest extends TestSupport {
     @Test
     public void testLoadFileAsUrl() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("file:src/test/resources/log4j2.properties");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("file:src/test/resources/log4j2.properties");
 
         URL url = resource.getURI().toURL();
         assertNotNull(url);
@@ -242,7 +244,7 @@ public class ResourceLoaderTest extends TestSupport {
     @Test
     public void testLoadClasspathAsUrl() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("classpath:log4j2.properties");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("classpath:log4j2.properties");
 
         URL url = resource.getURI().toURL();
         assertNotNull(url);
@@ -259,7 +261,7 @@ public class ResourceLoaderTest extends TestSupport {
         final String raw = "to-be-encoded";
 
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("mem:" + raw);
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("mem:" + raw);
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -276,7 +278,7 @@ public class ResourceLoaderTest extends TestSupport {
         final String encoded = Base64.getEncoder().encodeToString(raw.getBytes(StandardCharsets.UTF_8));
 
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("base64:" + encoded);
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("base64:" + encoded);
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -294,7 +296,7 @@ public class ResourceLoaderTest extends TestSupport {
 
         DefaultCamelContext context = new DefaultCamelContext();
         context.getPropertiesComponent().setInitialProperties(propertiesOf("my.encoded", encoded));
-        Resource resource = context.getResourceLoader().resolveResource("base64:{{my.encoded}}");
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("base64:{{my.encoded}}");
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
@@ -319,7 +321,7 @@ public class ResourceLoaderTest extends TestSupport {
         }
 
         DefaultCamelContext context = new DefaultCamelContext();
-        Resource resource = context.getResourceLoader().resolveResource("gzip:" + encoded);
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("gzip:" + encoded);
 
         try (InputStream is = resource.getInputStream()) {
             assertNotNull(is);
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/FileWatcherResourceReloadStrategy.java b/core/camel-support/src/main/java/org/apache/camel/support/FileWatcherResourceReloadStrategy.java
index f0a593638b8..b24c580ad95 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/FileWatcherResourceReloadStrategy.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/FileWatcherResourceReloadStrategy.java
@@ -33,7 +33,6 @@ import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
@@ -285,9 +284,8 @@ public class FileWatcherResourceReloadStrategy extends ResourceReloadStrategySup
                         if (accept) {
                             LOG.debug("Accepted Modified/Created file: {}", name);
                             try {
-                                ExtendedCamelContext ecc = getCamelContext().getCamelContextExtension();
                                 // must use file resource loader as we cannot load from classpath
-                                Resource resource = ecc.getResourceLoader().resolveResource("file:" + name);
+                                Resource resource = PluginHelper.getResourceLoader(getCamelContext()).resolveResource("file:" + name);
                                 getResourceReload().onReload(name, resource);
                                 incSucceededCounter();
                             } catch (Exception e) {
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 fc00ee33481..ee3cc9c58fc 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
@@ -44,6 +44,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.ResourceLoader;
 import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
 import org.apache.camel.spi.RouteFactory;
 import org.apache.camel.spi.RoutesLoader;
@@ -531,4 +532,18 @@ public final class PluginHelper {
     public static BeanIntrospection getBeanIntrospection(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(BeanIntrospection.class);
     }
+
+    /**
+     * Gets the {@link ResourceLoader} to be used.
+     */
+    public static ResourceLoader getResourceLoader(CamelContext camelContext) {
+        return getResourceLoader(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link ResourceLoader} to be used.
+     */
+    public static ResourceLoader getResourceLoader(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(ResourceLoader.class);
+    }
 }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ResourceHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/ResourceHelper.java
index 22c79a34f7a..f4d31630379 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/ResourceHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/ResourceHelper.java
@@ -37,7 +37,6 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.ResourceLoader;
 import org.apache.camel.util.AntPathMatcher;
@@ -192,8 +191,7 @@ public final class ResourceHelper {
      * @return              the {@link Resource}. Or <tt>null</tt> if not found
      */
     public static Resource resolveResource(CamelContext camelContext, String uri) {
-        final ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
-        final ResourceLoader loader = ecc.getResourceLoader();
+        final ResourceLoader loader = PluginHelper.getResourceLoader(camelContext);
         return loader.resolveResource(uri);
     }
 
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 8980de0cb5e..2d9561f815a 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
@@ -19,8 +19,8 @@ package org.apache.camel.support;
 import java.io.File;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.spi.ResourceLoader;
 import org.apache.camel.spi.RouteTemplateLoaderListener;
 import org.apache.camel.util.FileUtil;
 import org.slf4j.Logger;
@@ -54,8 +54,8 @@ public final class RouteTemplateHelper {
             throw new IllegalArgumentException("Location is empty");
         }
 
-        ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
         boolean found = false;
+        final ResourceLoader resourceLoader = PluginHelper.getResourceLoader(camelContext);
         for (String path : location.split(",")) {
             // using dot as current dir must be expanded into absolute path
             if (".".equals(path) || "file:.".equals(path)) {
@@ -67,14 +67,14 @@ public final class RouteTemplateHelper {
             // first try resource as-is if the path has an extension
             String ext = FileUtil.onlyExt(path);
             if (ext != null && !ext.isEmpty()) {
-                res = ecc.getResourceLoader().resolveResource(name);
+                res = resourceLoader.resolveResource(name);
             }
             if (res == null || !res.exists()) {
                 if (!path.endsWith("/")) {
                     path += "/";
                 }
                 name = path + templateId + ".kamelet.yaml";
-                res = ecc.getResourceLoader().resolveResource(name);
+                res = resourceLoader.resolveResource(name);
             }
             if (res.exists()) {
                 try {
@@ -104,7 +104,7 @@ public final class RouteTemplateHelper {
             }
             String target = path + templateId + ".kamelet.yaml";
             PluginHelper.getRoutesLoader(camelContext).loadRoutes(
-                    ecc.getResourceLoader().resolveResource(target));
+                    resourceLoader.resolveResource(target));
         }
     }
 }
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 30bd4a63d03..27eddc62a5f 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
@@ -42,7 +42,7 @@ class GroovyRouteBuilderLoaderTest extends Specification {
     def context = new DefaultCamelContext()
 
     def loadRoute(String location) {
-        def route = context.getResourceLoader().resolveResource(location)
+        def route = PluginHelper.getResourceLoader(context).resolveResource(location)
         PluginHelper.getRoutesLoader(context).loadRoutes(route)
     }
 
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 0301a4bcb2d..c43cc526815 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
@@ -45,7 +45,7 @@ public class JavaRoutesBuilderLoaderTest {
     })
     void testLoadRoutes(String location) throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource(location);
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(location);
             Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(context).findRoutesBuilders(resource);
 
             assertThat(builders).hasSize(1);
@@ -69,7 +69,7 @@ public class JavaRoutesBuilderLoaderTest {
         final String location = "/routes/MyRoutesWithNestedClass.java";
 
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource(location);
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(location);
             Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(context).findRoutesBuilders(resource);
 
             assertThat(builders).hasSize(1);
@@ -95,7 +95,7 @@ public class JavaRoutesBuilderLoaderTest {
         final String location = "/routes/MyRoutesWithRestConfiguration.java";
 
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource(location);
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(location);
             Collection<RoutesBuilder> builders = PluginHelper.getRoutesLoader(context).findRoutesBuilders(resource);
 
             assertThat(builders).hasSize(1);
@@ -114,7 +114,7 @@ public class JavaRoutesBuilderLoaderTest {
         final String location = "/routes/MyRoutesWithModel.java";
 
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource(location);
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(location);
             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 399247fa711..b742ed8036a 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
@@ -37,7 +37,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     })
     void routesCanBeLoaded(String location) throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource(location);
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(location);
             PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertThat(context.getRouteDefinitions())
@@ -53,7 +53,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     @Test
     void componentsCanBeCustomized() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader()
+            Resource resource = PluginHelper.getResourceLoader(context)
                     .resolveResource("/routes/routes-with-component-configuration.js");
             PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
@@ -66,7 +66,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     @Test
     void contextCanBeCustomized() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader()
+            Resource resource = PluginHelper.getResourceLoader(context)
                     .resolveResource("/routes/routes-with-context-configuration.js");
             PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
@@ -77,7 +77,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     @Test
     void processorsCanBeCreated() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource("/routes/routes-with-processors.js");
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource("/routes/routes-with-processors.js");
             PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             context.start();
@@ -94,7 +94,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     @Test
     void restCanBeConfigured() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader()
+            Resource resource = PluginHelper.getResourceLoader(context)
                     .resolveResource("/routes/routes-with-rest-configuration.js");
             PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
@@ -108,7 +108,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     @Test
     void restDslCanBeDefined() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource("/routes/routes-with-rest-dsl.js");
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource("/routes/routes-with-rest-dsl.js");
             PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             assertThat(context.getRestDefinitions()).hasSize(1);
@@ -130,7 +130,7 @@ public class JavaScriptRoutesBuilderLoaderTest {
     @Test
     void modulesCanBeImported() throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource("/routes/routes-with-modules.js");
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource("/routes/routes-with-modules.js");
             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 cedbfd06ae3..5f6d74bb94a 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
@@ -39,7 +39,7 @@ public class JshSourceLoaderTest {
     })
     void testLoadRoutes(String location) throws Exception {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
-            Resource resource = context.getResourceLoader().resolveResource(location);
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(location);
             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 5637a18894a..bc1afb09cb3 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.ResourceLoader;
 import org.apache.camel.spi.RoutesLoader;
 import org.apache.camel.spi.UriFactoryResolver;
 import org.apache.camel.startup.jfr.FlightRecorderStartupStepRecorder;
@@ -455,7 +456,7 @@ public class KameletMain extends MainCommandLineSupport {
                     new DependencyDownloaderDataFormatResolver(answer));
             answer.getCamelContextExtension().addContextPlugin(LanguageResolver.class,
                     new DependencyDownloaderLanguageResolver(answer));
-            answer.setResourceLoader(new DependencyDownloaderResourceLoader(answer));
+            answer.getCamelContextExtension().addContextPlugin(ResourceLoader.class, new DependencyDownloaderResourceLoader(answer));
             answer.setInjector(new KameletMainInjector(answer.getInjector(), stub));
             answer.addService(new DependencyDownloaderKamelet(answer));
             answer.getCamelContextExtension().getRegistry().bind(DownloadModelineParser.class.getSimpleName(),
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 908f87439b0..8f8fd433ed7 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
@@ -41,7 +41,7 @@ class KotlinRoutesBuilderLoaderTest {
     @Test
     fun `load routes`() {
         val ctx = DefaultCamelContext()
-        val res = ctx.resourceLoader.resolveResource("/routes/routes.kts")
+        val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes.kts")
 
         PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
@@ -56,7 +56,7 @@ class KotlinRoutesBuilderLoaderTest {
     @Test
     fun `load routes with endpoint dsl`() {
         val ctx = DefaultCamelContext()
-        val res = ctx.resourceLoader.resolveResource("/routes/routes-with-endpoint-dsl.kts")
+        val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes-with-endpoint-dsl.kts")
 
         PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
@@ -73,7 +73,7 @@ class KotlinRoutesBuilderLoaderTest {
     @Test
     fun `load integration with rest`() {
         val ctx = DefaultCamelContext()
-        val res = ctx.resourceLoader.resolveResource("/routes/routes-with-rest.kts")
+        val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes-with-rest.kts")
 
         PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
@@ -107,7 +107,7 @@ class KotlinRoutesBuilderLoaderTest {
     @Test
     fun `load integration with beans`() {
         val ctx = DefaultCamelContext()
-        val res = ctx.resourceLoader.resolveResource("/routes/routes-with-beans.kts")
+        val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes-with-beans.kts")
 
         PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
@@ -122,7 +122,7 @@ class KotlinRoutesBuilderLoaderTest {
     @Test
     fun `load integration with components configuration`() {
         val ctx = DefaultCamelContext()
-        val res = ctx.resourceLoader.resolveResource("/routes/routes-with-components-configuration.kts")
+        val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes-with-components-configuration.kts")
 
         PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
@@ -142,7 +142,7 @@ class KotlinRoutesBuilderLoaderTest {
         assertThatExceptionOfType(RuntimeCamelException::class.java)
                 .isThrownBy {
                     val ctx = DefaultCamelContext()
-                    val res = ctx.resourceLoader.resolveResource("/routes/routes-with-components-configuration-error.kts")
+                    val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes-with-components-configuration-error.kts")
 
                     PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
                 }
@@ -153,7 +153,7 @@ class KotlinRoutesBuilderLoaderTest {
     @Test
     fun `load integration with languages configuration`() {
         val ctx = DefaultCamelContext()
-        val res = ctx.resourceLoader.resolveResource("/routes/routes-with-languages-configuration.kts")
+        val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes-with-languages-configuration.kts")
 
         PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
@@ -169,7 +169,7 @@ class KotlinRoutesBuilderLoaderTest {
     @Test
     fun `load integration with dataformats configuration`() {
         val ctx = DefaultCamelContext()
-        val res = ctx.resourceLoader.resolveResource("/routes/routes-with-dataformats-configuration.kts")
+        val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes-with-dataformats-configuration.kts")
 
         PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
 
@@ -185,7 +185,7 @@ class KotlinRoutesBuilderLoaderTest {
     @Test
     fun `load integration with error handler`() {
         val ctx = DefaultCamelContext()
-        val res = ctx.resourceLoader.resolveResource("/routes/routes-with-error-handler.kts")
+        val res = PluginHelper.getResourceLoader(ctx).resolveResource("/routes/routes-with-error-handler.kts")
 
         PluginHelper.getRoutesLoader(ctx).loadRoutes(res)
         ctx.start()
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 6824fe5e213..ec652996eb0 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
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.dsl.xml.io;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.rest.DummyRestConsumerFactory;
@@ -58,8 +57,7 @@ public class XmlLoadRestTest {
             foo.assertIsSatisfied();
 
             // load rest from XML and add them to the existing camel context
-            ExtendedCamelContext ecc = context.getCamelContextExtension();
-            Resource resource = ecc.getResourceLoader().resolveResource(
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(
                     "/org/apache/camel/dsl/xml/io/barRest.xml");
 
             PluginHelper.getRoutesLoader(context).loadRoutes(resource);
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 7018100a19d..0fec6272c11 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
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.dsl.xml.io;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
@@ -53,11 +52,10 @@ public class XmlLoadTest {
 
             // START SNIPPET: e1
             // load route from XML and add them to the existing camel context
-            ExtendedCamelContext ecc = context.getCamelContextExtension();
-            Resource resource = ecc.getResourceLoader().resolveResource(
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(
                     "/org/apache/camel/dsl/xml/io/barRoute.xml");
 
-            PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
             // END SNIPPET: e1
             assertNotNull(context.getRoute("bar"), "Loaded bar route should be there");
@@ -77,11 +75,10 @@ public class XmlLoadTest {
             context.start();
 
             // load route from XML and add them to the existing camel context
-            ExtendedCamelContext ecc = context.getCamelContextExtension();
-            Resource resource = ecc.getResourceLoader().resolveResource(
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(
                     "/org/apache/camel/dsl/xml/io/bar2.xml");
 
-            PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).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 200bac8b3d0..1ad1324e56d 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
@@ -17,7 +17,6 @@
 package org.apache.camel.dsl.xml.jaxb.definition;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.rest.DummyRestConsumerFactory;
@@ -53,9 +52,8 @@ public class LoadRestFromXmlTest extends ContextTestSupport {
         foo.assertIsSatisfied();
 
         // 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");
-        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barRest.xml");
+        PluginHelper.getRoutesLoader(context).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 0c319ee574d..673f1c45b1c 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
@@ -17,7 +17,6 @@
 package org.apache.camel.dsl.xml.jaxb.definition;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.Resource;
@@ -42,9 +41,8 @@ public class LoadRouteFromXmlTest extends ContextTestSupport {
 
         // START SNIPPET: e1
         // 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");
-        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barRoute.xml");
+        PluginHelper.getRoutesLoader(context).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 879fdfc4e62..eb6e8d8d832 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
@@ -17,7 +17,6 @@
 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;
@@ -34,10 +33,9 @@ public class LoadRouteFromXmlWithInterceptTest extends ContextTestSupport {
 
     @Test
     public void testLoadRouteFromXmlWithIntercept() throws Exception {
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource
-                = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barInterceptorRoute.xml");
-        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+                = PluginHelper.getResourceLoader(context).resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barInterceptorRoute.xml");
+        PluginHelper.getRoutesLoader(context).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 9dbcb6699ea..9dcb1442820 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
@@ -17,7 +17,6 @@
 package org.apache.camel.dsl.xml.jaxb.definition;
 
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Route;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.Resource;
@@ -30,10 +29,9 @@ public class LoadRouteFromXmlWithNamespaceTest extends ContextTestSupport {
 
     @Test
     public void testLoadRouteWithNamespaceFromXml() throws Exception {
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource
-                = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/routeWithNamespace.xml");
-        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+                = PluginHelper.getResourceLoader(context).resolveResource("org/apache/camel/dsl/xml/jaxb/definition/routeWithNamespace.xml");
+        PluginHelper.getRoutesLoader(context).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 59401869c3f..5cacb3e827a 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
@@ -18,7 +18,6 @@ package org.apache.camel.dsl.xml.jaxb.definition;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.Resource;
@@ -44,10 +43,9 @@ public class LoadRouteFromXmlWithOnExceptionTest extends ContextTestSupport {
 
     @Test
     public void testLoadRouteFromXmlWitOnException() throws Exception {
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource
-                = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barOnExceptionRoute.xml");
-        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+                = PluginHelper.getResourceLoader(context).resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barOnExceptionRoute.xml");
+        PluginHelper.getRoutesLoader(context).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 2ed5bf74430..835ab7a554f 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
@@ -18,7 +18,6 @@ package org.apache.camel.dsl.xml.jaxb.definition;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Processor;
 import org.apache.camel.Route;
@@ -47,10 +46,9 @@ public class LoadRouteFromXmlWithPolicyTest extends ContextTestSupport {
 
     @Test
     public void testLoadRouteFromXmlWitPolicy() throws Exception {
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
         Resource resource
-                = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barPolicyRoute.xml");
-        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+                = PluginHelper.getResourceLoader(context).resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barPolicyRoute.xml");
+        PluginHelper.getRoutesLoader(context).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 5dba13daa37..edd1ec005f9 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
@@ -20,13 +20,12 @@ import java.util.HashMap;
 import java.util.Map;
 
 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.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class RouteTemplateLoadFromXmlTest extends ContextTestSupport {
 
@@ -34,9 +33,8 @@ public class RouteTemplateLoadFromXmlTest extends ContextTestSupport {
     public void testDefineRouteTemplate() throws Exception {
         assertEquals(0, context.getRouteTemplateDefinitions().size());
 
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
-        Resource resource = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barTemplate.xml");
-        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barTemplate.xml");
+        PluginHelper.getRoutesLoader(context).loadRoutes(resource);
 
         assertEquals(1, context.getRouteTemplateDefinitions().size());
 
@@ -49,9 +47,8 @@ public class RouteTemplateLoadFromXmlTest extends ContextTestSupport {
     public void testCreateRouteFromRouteTemplate() throws Exception {
         assertEquals(0, context.getRouteTemplateDefinitions().size());
 
-        ExtendedCamelContext ecc = context.getCamelContextExtension();
-        Resource resource = ecc.getResourceLoader().resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barTemplate.xml");
-        PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+        Resource resource = PluginHelper.getResourceLoader(context).resolveResource("org/apache/camel/dsl/xml/jaxb/definition/barTemplate.xml");
+        PluginHelper.getRoutesLoader(context).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 d2a23bcbe35..5934e274853 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
@@ -41,7 +41,7 @@ public class CamelLoadRoutesFromXMLTest extends ContextTestSupport {
         assertTrue(camel.getStatus().isStarted());
 
         // load routes from xml file
-        Resource resource = camel.getResourceLoader().resolveResource("org/apache/camel/spring/myRoutes.xml");
+        Resource resource = PluginHelper.getResourceLoader(camel).resolveResource("org/apache/camel/spring/myRoutes.xml");
         PluginHelper.getRoutesLoader(camel).loadRoutes(resource);
 
         assertEquals(2, camel.getRoutes().size());
@@ -77,7 +77,7 @@ public class CamelLoadRoutesFromXMLTest extends ContextTestSupport {
         //camel.getRouteController().removeRoute("bar");
 
         // load updated xml
-        resource = camel.getResourceLoader().resolveResource("org/apache/camel/spring/myUpdatedRoutes.xml");
+        resource = PluginHelper.getResourceLoader(camel).resolveResource("org/apache/camel/spring/myUpdatedRoutes.xml");
         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 0d7c664c00b..c6c95c21982 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
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.dsl.xml.jaxb;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.rest.DummyRestConsumerFactory;
@@ -58,8 +57,7 @@ public class JaxbXmlLoadRestTest {
             foo.assertIsSatisfied();
 
             // load rest from XML and add them to the existing camel context
-            ExtendedCamelContext ecc = context.getCamelContextExtension();
-            Resource resource = ecc.getResourceLoader().resolveResource(
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(
                     "/org/apache/camel/dsl/xml/jaxb/barRest.xml");
 
             PluginHelper.getRoutesLoader(context).loadRoutes(resource);
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 03439a9ecf7..d30ecc64bce 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
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.dsl.xml.jaxb;
 
-import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.DefaultCamelContext;
@@ -53,11 +52,10 @@ public class JaxbXmlLoadTest {
 
             // START SNIPPET: e1
             // load route from XML and add them to the existing camel context
-            ExtendedCamelContext ecc = context.getCamelContextExtension();
-            Resource resource = ecc.getResourceLoader().resolveResource(
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(
                     "/org/apache/camel/dsl/xml/jaxb/barRoute.xml");
 
-            PluginHelper.getRoutesLoader(ecc).loadRoutes(resource);
+            PluginHelper.getRoutesLoader(context).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/test/groovy/org/apache/camel/dsl/yaml/LineNumberTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/LineNumberTest.groovy
index 10b02ae444d..5a1953dafd7 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/LineNumberTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/LineNumberTest.groovy
@@ -22,6 +22,7 @@ import org.apache.camel.model.FromDefinition
 import org.apache.camel.model.LogDefinition
 import org.apache.camel.model.RouteDefinition
 import org.apache.camel.model.ToDefinition
+import org.apache.camel.support.PluginHelper
 
 class LineNumberTest extends YamlTestSupport {
 
@@ -82,7 +83,7 @@ class LineNumberTest extends YamlTestSupport {
     def "line number file"() {
         setup:
         def rloc = 'classpath:/stuff/my-route.yaml'
-        def rdsl = context.resourceLoader.resolveResource(rloc)
+        def rdsl = PluginHelper.getResourceLoader(context).resolveResource(rloc)
         when:
         loadRoutes rdsl
         then:
@@ -120,7 +121,7 @@ class LineNumberTest extends YamlTestSupport {
     def "line number file with comments"() {
         setup:
         def rloc = 'classpath:/stuff/my-route-comment.yaml'
-        def rdsl = context.resourceLoader.resolveResource(rloc)
+        def rdsl = PluginHelper.getResourceLoader(context).resolveResource(rloc)
         when:
         loadRoutes rdsl
         then:
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RestTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RestTest.groovy
index c2a8160a569..f7e49a6ea8a 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RestTest.groovy
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RestTest.groovy
@@ -26,6 +26,7 @@ import org.apache.camel.model.rest.ParamDefinition
 import org.apache.camel.model.rest.PostDefinition
 import org.apache.camel.model.rest.RestDefinition
 import org.apache.camel.model.rest.VerbDefinition
+import org.apache.camel.support.PluginHelper
 
 class RestTest extends YamlTestSupport {
 
@@ -170,7 +171,7 @@ class RestTest extends YamlTestSupport {
     def "load rest (full)"() {
         setup:
             def rloc = 'classpath:/routes/rest-dsl.yaml'
-            def rdsl = context.resourceLoader.resolveResource(rloc)
+            def rdsl = PluginHelper.getResourceLoader(context).resolveResource(rloc)
         when:
             loadRoutes rdsl
         then:
@@ -181,7 +182,7 @@ class RestTest extends YamlTestSupport {
     def "load rest (generated)"() {
         setup:
             def rloc = 'classpath:/rest-dsl/generated-rest-dsl.yaml'
-            def rdsl = context.resourceLoader.resolveResource(rloc)
+            def rdsl = PluginHelper.getResourceLoader(context).resolveResource(rloc)
         when:
             loadRoutes rdsl
         then:
@@ -192,7 +193,7 @@ class RestTest extends YamlTestSupport {
     def "load rest (allowableValues)"() {
         setup:
             def rloc = 'classpath:/routes/rest-allowable-values-dsl.yaml'
-            def rdsl = context.resourceLoader.resolveResource(rloc)
+            def rdsl = PluginHelper.getResourceLoader(context).resolveResource(rloc)
         when:
             loadRoutes rdsl
         then:
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 42a7a9c2d1d..182db37b96a 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.spi.ResourceLoader
 import org.apache.camel.support.PluginHelper
 import org.apache.camel.support.ResourceHelper
 import spock.lang.AutoCleanup