You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/03/31 15:25:24 UTC

[camel] branch main updated: CAMEL-15105: make the PackageScanResourceResolver a plugin of the context (#9738)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new f8bc38abb97 CAMEL-15105: make the PackageScanResourceResolver a plugin of the context (#9738)
f8bc38abb97 is described below

commit f8bc38abb97dbafd7ae3da6f621e399f686046af
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Fri Mar 31 12:25:16 2023 -0300

    CAMEL-15105: make the PackageScanResourceResolver a plugin of the context (#9738)
---
 .../java/org/apache/camel/ExtendedCamelContext.java   | 15 ---------------
 .../camel/impl/engine/AbstractCamelContext.java       |  2 +-
 .../impl/engine/DefaultCamelContextExtension.java     | 19 -------------------
 .../impl/engine/DefaultComponentNameResolver.java     |  4 ++--
 .../camel/impl/console/DefaultDevConsolesLoader.java  |  3 ++-
 .../camel/impl/ExtendedCamelContextConfigurer.java    |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java     | 11 -----------
 .../DefaultPackageScanResourceResolverTest.java       |  3 ++-
 .../camel/impl/health/DefaultHealthChecksLoader.java  |  3 ++-
 .../org/apache/camel/main/DefaultRoutesCollector.java |  4 ++--
 .../java/org/apache/camel/support/PluginHelper.java   | 19 +++++++++++++++++++
 .../main/java/org/apache/camel/main/KameletMain.java  |  2 +-
 12 files changed, 31 insertions(+), 60 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 2ff49911d8f..d52b281ef58 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
@@ -47,7 +47,6 @@ import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.ModelToXMLDumper;
 import org.apache.camel.spi.ModelineFactory;
 import org.apache.camel.spi.NormalizedEndpointUri;
-import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.PeriodTaskResolver;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.PluginManager;
@@ -323,20 +322,6 @@ public interface ExtendedCamelContext {
      */
     void setDevConsoleResolver(DevConsoleResolver devConsoleResolver);
 
-    /**
-     * Returns the package scanning resource resolver
-     *
-     * @return the resolver
-     */
-    PackageScanResourceResolver getPackageScanResourceResolver();
-
-    /**
-     * Sets the package scanning resource resolver to use
-     *
-     * @param resolver the resolver
-     */
-    void setPackageScanResourceResolver(PackageScanResourceResolver resolver);
-
     /**
      * Gets the default FactoryFinder which will be used for the loading the factory class from META-INF
      *
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 c8b8351f60a..2c54e962502 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
@@ -224,7 +224,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ModelToXMLDumper modelToXMLDumper;
     volatile RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory;
     volatile RuntimeCamelCatalog runtimeCamelCatalog;
-    volatile PackageScanResourceResolver packageScanResourceResolver;
     volatile ModelineFactory modelineFactory;
     volatile ProcessorFactory processorFactory;
     volatile PeriodTaskResolver periodTaskResolver;
@@ -380,6 +379,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.addContextPlugin(UriFactoryResolver.class, createUriFactoryResolver());
         camelContextExtension.addContextPlugin(FactoryFinderResolver.class, createFactoryFinderResolver());
         camelContextExtension.addContextPlugin(PackageScanClassResolver.class, createPackageScanClassResolver());
+        camelContextExtension.addContextPlugin(PackageScanResourceResolver.class, createPackageScanResourceResolver());
 
         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 b75cd99cb41..64e2e66d19e 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
@@ -66,7 +66,6 @@ import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.ModelToXMLDumper;
 import org.apache.camel.spi.ModelineFactory;
 import org.apache.camel.spi.NormalizedEndpointUri;
-import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.PeriodTaskResolver;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.PluginManager;
@@ -369,24 +368,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         return factories.computeIfAbsent(path, camelContext::createFactoryFinder);
     }
 
-    @Override
-    public PackageScanResourceResolver getPackageScanResourceResolver() {
-        if (camelContext.packageScanResourceResolver == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.packageScanResourceResolver == null) {
-                    setPackageScanResourceResolver(camelContext.createPackageScanResourceResolver());
-                }
-            }
-        }
-        return camelContext.packageScanResourceResolver;
-    }
-
-    @Override
-    public void setPackageScanResourceResolver(PackageScanResourceResolver packageScanResourceResolver) {
-        camelContext.packageScanResourceResolver
-                = camelContext.getInternalServiceManager().addService(packageScanResourceResolver);
-    }
-
     @Override
     public ModelJAXBContextFactory getModelJAXBContextFactory() {
         if (camelContext.modelJAXBContextFactory == null) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentNameResolver.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentNameResolver.java
index 2577f4a46fd..d0d8deaee67 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentNameResolver.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultComponentNameResolver.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.ComponentNameResolver;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 
 public class DefaultComponentNameResolver implements ComponentNameResolver {
 
@@ -32,8 +33,7 @@ public class DefaultComponentNameResolver implements ComponentNameResolver {
     @Override
     public Set<String> resolveNames(CamelContext camelContext) {
         try {
-            return camelContext.getCamelContextExtension()
-                    .getPackageScanResourceResolver()
+            return PluginHelper.getPackageScanResourceResolver(camelContext)
                     .findResources(RESOURCE_PATH)
                     .stream()
                     .map(Resource::getLocation)
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
index dcec3304a23..6f60960ddbc 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsolesLoader.java
@@ -24,6 +24,7 @@ import org.apache.camel.console.DevConsole;
 import org.apache.camel.console.DevConsoleResolver;
 import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,7 +43,7 @@ public class DefaultDevConsolesLoader {
 
     public DefaultDevConsolesLoader(CamelContext camelContext) {
         this.camelContext = camelContext;
-        this.resolver = camelContext.getCamelContextExtension().getPackageScanResourceResolver();
+        this.resolver = PluginHelper.getPackageScanResourceResolver(camelContext);
         this.devConsoleResolver = camelContext.getCamelContextExtension().getDevConsoleResolver();
     }
 
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 3bbdbaa8bd5..8665c5c89e2 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
@@ -65,8 +65,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ModelineFactory": target.setModelineFactory(property(camelContext, org.apache.camel.spi.ModelineFactory.class, value)); return true;
         case "name":
         case "Name": target.setName(property(camelContext, java.lang.String.class, value)); return true;
-        case "packagescanresourceresolver":
-        case "PackageScanResourceResolver": target.setPackageScanResourceResolver(property(camelContext, org.apache.camel.spi.PackageScanResourceResolver.class, value)); return true;
         case "periodtaskresolver":
         case "PeriodTaskResolver": target.setPeriodTaskResolver(property(camelContext, org.apache.camel.spi.PeriodTaskResolver.class, value)); return true;
         case "periodtaskscheduler":
@@ -144,8 +142,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ModelineFactory": return org.apache.camel.spi.ModelineFactory.class;
         case "name":
         case "Name": return java.lang.String.class;
-        case "packagescanresourceresolver":
-        case "PackageScanResourceResolver": return org.apache.camel.spi.PackageScanResourceResolver.class;
         case "periodtaskresolver":
         case "PeriodTaskResolver": return org.apache.camel.spi.PeriodTaskResolver.class;
         case "periodtaskscheduler":
@@ -224,8 +220,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ModelineFactory": return target.getModelineFactory();
         case "name":
         case "Name": return target.getName();
-        case "packagescanresourceresolver":
-        case "PackageScanResourceResolver": return target.getPackageScanResourceResolver();
         case "periodtaskresolver":
         case "PeriodTaskResolver": return target.getPeriodTaskResolver();
         case "periodtaskscheduler":
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 0d159be27f3..fed1fa2282f 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
@@ -61,7 +61,6 @@ import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.ModelToXMLDumper;
 import org.apache.camel.spi.ModelineFactory;
 import org.apache.camel.spi.NormalizedEndpointUri;
-import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.PeriodTaskResolver;
 import org.apache.camel.spi.PeriodTaskScheduler;
 import org.apache.camel.spi.PluginManager;
@@ -265,16 +264,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public PackageScanResourceResolver getPackageScanResourceResolver() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setPackageScanResourceResolver(PackageScanResourceResolver resolver) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public FactoryFinder getDefaultFactoryFinder() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolverTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolverTest.java
index 298b67f4df5..e54d8524858 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolverTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/engine/DefaultPackageScanResourceResolverTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.impl.engine;
 
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.PackageScanResourceResolver;
+import org.apache.camel.support.PluginHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -26,7 +27,7 @@ public class DefaultPackageScanResourceResolverTest {
     @Test
     public void testFileResourcesScan() throws Exception {
         final DefaultCamelContext ctx = new DefaultCamelContext();
-        final PackageScanResourceResolver resolver = ctx.getCamelContextExtension().getPackageScanResourceResolver();
+        final PackageScanResourceResolver resolver = PluginHelper.getPackageScanResourceResolver(ctx);
 
         assertThat(resolver.findResources("file:src/test/resources/org/apache/camel/impl/engine/**/*.xml"))
                 .hasSize(4)
diff --git a/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java b/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java
index 780e1e23e26..d9f6eb684f6 100644
--- a/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java
+++ b/core/camel-health/src/main/java/org/apache/camel/impl/health/DefaultHealthChecksLoader.java
@@ -24,6 +24,7 @@ import org.apache.camel.health.HealthCheck;
 import org.apache.camel.health.HealthCheckResolver;
 import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,7 +43,7 @@ public class DefaultHealthChecksLoader {
 
     public DefaultHealthChecksLoader(CamelContext camelContext) {
         this.camelContext = camelContext;
-        this.resolver = camelContext.getCamelContextExtension().getPackageScanResourceResolver();
+        this.resolver = PluginHelper.getPackageScanResourceResolver(camelContext);
         this.healthCheckResolver = camelContext.getCamelContextExtension().getHealthCheckResolver();
     }
 
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 f93fdead26c..a7e2d6df380 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
@@ -29,6 +29,7 @@ import org.apache.camel.builder.LambdaRouteBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.Resource;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.AntPathMatcher;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StopWatch;
@@ -169,8 +170,7 @@ public class DefaultRoutesCollector implements RoutesCollector {
             CamelContext camelContext,
             String excludePattern,
             String includePattern) {
-        final ExtendedCamelContext ecc = camelContext.getCamelContextExtension();
-        final PackageScanResourceResolver resolver = ecc.getPackageScanResourceResolver();
+        final PackageScanResourceResolver resolver = PluginHelper.getPackageScanResourceResolver(camelContext);
         final String[] includes = includePattern != null ? includePattern.split(",") : null;
         final String[] excludes = excludePattern != null ? excludePattern.split(",") : null;
 
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 e8291f23521..12655450c28 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
@@ -29,6 +29,7 @@ import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.PackageScanClassResolver;
+import org.apache.camel.spi.PackageScanResourceResolver;
 import org.apache.camel.spi.UriFactoryResolver;
 
 public final class PluginHelper {
@@ -205,4 +206,22 @@ public final class PluginHelper {
     public static PackageScanClassResolver getPackageScanClassResolver(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(PackageScanClassResolver.class);
     }
+
+    /**
+     * Returns the package scanning resource resolver
+     *
+     * @return the resolver
+     */
+    public static PackageScanResourceResolver getPackageScanResourceResolver(CamelContext camelContext) {
+        return getPackageScanResourceResolver(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Returns the package scanning resource resolver
+     *
+     * @return the resolver
+     */
+    public static PackageScanResourceResolver getPackageScanResourceResolver(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(PackageScanResourceResolver.class);
+    }
 }
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 71cac713ec8..0dc8f84c024 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
@@ -310,7 +310,7 @@ public class KameletMain extends MainCommandLineSupport {
             ClassLoader dynamicCL = createApplicationContextClassLoader();
             answer.setApplicationContextClassLoader(dynamicCL);
             PluginHelper.getPackageScanClassResolver(answer).addClassLoader(dynamicCL);
-            answer.getCamelContextExtension().getPackageScanResourceResolver().addClassLoader(dynamicCL);
+            PluginHelper.getPackageScanResourceResolver(answer).addClassLoader(dynamicCL);
 
             KnownReposResolver known = new KnownReposResolver(camelContext);
             known.loadKnownDependencies();