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 b0628855c3dad41cde66c221f41dbfb6107c5a64
Author: Otavio Rodolfo Piske <angusyo...@gmail.com>
AuthorDate: Thu Mar 30 18:36:25 2023 +0200

    CAMEL-15105: make the ComponentResolver a plugin of the context
---
 .../rest/openapi/RestOpenApiDelegateHttpsTest.java       |  3 ++-
 .../rest/openapi/RestOpenApiDelegateHttpsV3Test.java     |  3 ++-
 .../main/java/org/apache/camel/ExtendedCamelContext.java | 11 -----------
 .../apache/camel/impl/engine/AbstractCamelContext.java   | 10 +++++-----
 .../camel/impl/engine/DefaultCamelContextExtension.java  | 16 ----------------
 .../camel/impl/ExtendedCamelContextConfigurer.java       |  6 ------
 .../camel/impl/lw/LightweightCamelContextExtension.java  | 11 -----------
 .../main/java/org/apache/camel/support/PluginHelper.java | 15 +++++++++++++++
 .../src/main/java/org/apache/camel/main/KameletMain.java |  3 ++-
 9 files changed, 26 insertions(+), 52 deletions(-)

diff --git 
a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiDelegateHttpsTest.java
 
b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiDelegateHttpsTest.java
index 0528e94766d..6bd4da5204c 100644
--- 
a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiDelegateHttpsTest.java
+++ 
b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiDelegateHttpsTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.rest.openapi;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 
 public class RestOpenApiDelegateHttpsTest extends HttpsTest {
@@ -27,7 +28,7 @@ public class RestOpenApiDelegateHttpsTest extends HttpsTest {
         final CamelContext camelContext = super.createCamelContext();
 
         // since camel context is not started, then we need to manually 
initialize the delegate
-        final Component delegate = 
camelContext.getCamelContextExtension().getComponentResolver()
+        final Component delegate = 
PluginHelper.getComponentResolver(camelContext)
                 .resolveComponent(componentName, camelContext);
         delegate.setCamelContext(camelContext);
         delegate.init();
diff --git 
a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiDelegateHttpsV3Test.java
 
b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiDelegateHttpsV3Test.java
index a0d8b689924..8ae8329e620 100644
--- 
a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiDelegateHttpsV3Test.java
+++ 
b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiDelegateHttpsV3Test.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.rest.openapi;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 
 public class RestOpenApiDelegateHttpsV3Test extends HttpsV3Test {
@@ -27,7 +28,7 @@ public class RestOpenApiDelegateHttpsV3Test extends 
HttpsV3Test {
         final CamelContext camelContext = super.createCamelContext();
 
         // since camel context is not started, then we need to manually 
initialize the delegate
-        final Component delegate = 
camelContext.getCamelContextExtension().getComponentResolver()
+        final Component delegate = 
PluginHelper.getComponentResolver(camelContext)
                 .resolveComponent(componentName, camelContext);
         delegate.setCamelContext(camelContext);
         delegate.init();
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 e2317dc9fed..e15fc468a1f 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
@@ -31,7 +31,6 @@ import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.ComponentNameResolver;
-import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.DeferServiceFactory;
@@ -289,16 +288,6 @@ public interface ExtendedCamelContext {
      */
     void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory);
 
-    /**
-     * Gets the {@link ComponentResolver} to use.
-     */
-    ComponentResolver getComponentResolver();
-
-    /**
-     * Sets a custom {@link ComponentResolver} to use.
-     */
-    void setComponentResolver(ComponentResolver componentResolver);
-
     /**
      * Gets the {@link ComponentNameResolver} to use.
      */
diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index aa3b4cdd64c..dfb8924bdab 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
@@ -169,6 +169,7 @@ import org.apache.camel.support.EventHelper;
 import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.support.NormalizedUri;
 import org.apache.camel.support.OrderedComparator;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.ProcessorEndpoint;
 import org.apache.camel.support.ResolverHelper;
 import org.apache.camel.support.jsse.SSLContextParameters;
@@ -212,7 +213,6 @@ public abstract class AbstractCamelContext extends 
BaseService
     volatile ProcessorExchangeFactory processorExchangeFactory;
     volatile ReactiveExecutor reactiveExecutor;
     volatile Registry registry;
-    volatile ComponentResolver componentResolver;
     volatile ComponentNameResolver componentNameResolver;
     volatile LanguageResolver languageResolver;
     volatile ConfigurerResolver configurerResolver;
@@ -385,6 +385,7 @@ public abstract class AbstractCamelContext extends 
BaseService
         camelContextExtension.addContextPlugin(CamelBeanPostProcessor.class, 
createBeanPostProcessor());
         
camelContextExtension.addContextPlugin(CamelDependencyInjectionAnnotationFactory.class,
                 createDependencyInjectionAnnotationFactory());
+        camelContextExtension.addContextPlugin(ComponentResolver.class, 
createComponentResolver());
 
         if (build) {
             try {
@@ -578,7 +579,7 @@ public abstract class AbstractCamelContext extends 
BaseService
             try {
                 if (LOG.isDebugEnabled()) {
                     LOG.debug("Using ComponentResolver: {} to resolve 
component with name: {}",
-                            camelContextExtension.getComponentResolver(), 
name);
+                            
PluginHelper.getComponentResolver(camelContextExtension), name);
                 }
 
                 // Mark the component as being created so we can detect 
circular
@@ -618,7 +619,8 @@ public abstract class AbstractCamelContext extends 
BaseService
 
                 component = 
ResolverHelper.lookupComponentInRegistryWithFallback(getCamelContextReference(),
 name);
                 if (component == null) {
-                    component = 
camelContextExtension.getComponentResolver().resolveComponent(name, 
getCamelContextReference());
+                    component = 
PluginHelper.getComponentResolver(camelContextExtension).resolveComponent(name,
+                            getCamelContextReference());
                 }
 
                 if (component != null) {
@@ -3271,7 +3273,6 @@ public abstract class AbstractCamelContext extends 
BaseService
         getPropertiesComponent();
 
         camelContextExtension.getLanguageResolver();
-        camelContextExtension.getComponentResolver();
         camelContextExtension.getComponentNameResolver();
         camelContextExtension.getDataFormatResolver();
         camelContextExtension.getHealthCheckResolver();
@@ -3297,7 +3298,6 @@ public abstract class AbstractCamelContext extends 
BaseService
         injector = null;
         languageResolver = null;
         dataFormatResolver = null;
-        componentResolver = null;
         typeConverterRegistry = null;
         typeConverter = null;
         reactiveExecutor = null;
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 380d702235c..4d48d6498ce 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
@@ -45,7 +45,6 @@ import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.ComponentNameResolver;
-import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.Debugger;
@@ -249,21 +248,6 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
         return camelContext.managementMBeanAssembler;
     }
 
-    public ComponentResolver getComponentResolver() {
-        if (camelContext.componentResolver == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.componentResolver == null) {
-                    
setComponentResolver(camelContext.createComponentResolver());
-                }
-            }
-        }
-        return camelContext.componentResolver;
-    }
-
-    public void setComponentResolver(ComponentResolver componentResolver) {
-        camelContext.componentResolver = 
camelContext.getInternalServiceManager().addService(componentResolver);
-    }
-
     public ComponentNameResolver getComponentNameResolver() {
         if (camelContext.componentNameResolver == null) {
             synchronized (camelContext.lock) {
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 a584868bc90..c4a7ee9606a 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
@@ -35,8 +35,6 @@ public class ExtendedCamelContextConfigurer extends 
org.apache.camel.support.com
         case "BootstrapFactoryFinder": 
target.setBootstrapFactoryFinder(property(camelContext, 
org.apache.camel.spi.FactoryFinder.class, value)); return true;
         case "componentnameresolver":
         case "ComponentNameResolver": 
target.setComponentNameResolver(property(camelContext, 
org.apache.camel.spi.ComponentNameResolver.class, value)); return true;
-        case "componentresolver":
-        case "ComponentResolver": 
target.setComponentResolver(property(camelContext, 
org.apache.camel.spi.ComponentResolver.class, value)); return true;
         case "configurerresolver":
         case "ConfigurerResolver": 
target.setConfigurerResolver(property(camelContext, 
org.apache.camel.spi.ConfigurerResolver.class, value)); return true;
         case "dataformatresolver":
@@ -130,8 +128,6 @@ public class ExtendedCamelContextConfigurer extends 
org.apache.camel.support.com
         case "BootstrapFactoryFinder": return 
org.apache.camel.spi.FactoryFinder.class;
         case "componentnameresolver":
         case "ComponentNameResolver": return 
org.apache.camel.spi.ComponentNameResolver.class;
-        case "componentresolver":
-        case "ComponentResolver": return 
org.apache.camel.spi.ComponentResolver.class;
         case "configurerresolver":
         case "ConfigurerResolver": return 
org.apache.camel.spi.ConfigurerResolver.class;
         case "dataformatresolver":
@@ -226,8 +222,6 @@ public class ExtendedCamelContextConfigurer extends 
org.apache.camel.support.com
         case "BootstrapFactoryFinder": return 
target.getBootstrapFactoryFinder();
         case "componentnameresolver":
         case "ComponentNameResolver": return target.getComponentNameResolver();
-        case "componentresolver":
-        case "ComponentResolver": return target.getComponentResolver();
         case "configurerresolver":
         case "ConfigurerResolver": return target.getConfigurerResolver();
         case "dataformatresolver":
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 bd9e016d4b8..53a2e4a86d4 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
@@ -46,7 +46,6 @@ import org.apache.camel.spi.BeanProcessorFactory;
 import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.ComponentNameResolver;
-import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.DeferServiceFactory;
@@ -128,16 +127,6 @@ class LightweightCamelContextExtension implements 
ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public ComponentResolver getComponentResolver() {
-        return camelContext.getCamelContextExtension().getComponentResolver();
-    }
-
-    @Override
-    public void setComponentResolver(ComponentResolver componentResolver) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public ComponentNameResolver getComponentNameResolver() {
         return 
camelContext.getCamelContextExtension().getComponentNameResolver();
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 b18a6312719..1cb505705a6 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -21,6 +21,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory;
+import org.apache.camel.spi.ComponentResolver;
 
 public final class PluginHelper {
     private PluginHelper() {
@@ -60,4 +61,18 @@ public final class PluginHelper {
             ExtendedCamelContext extendedCamelContext) {
         return 
extendedCamelContext.getContextPlugin(CamelDependencyInjectionAnnotationFactory.class);
     }
+
+    /**
+     * Gets the {@link ComponentResolver} to use.
+     */
+    public static ComponentResolver getComponentResolver(CamelContext 
camelContext) {
+        return getComponentResolver(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link ComponentResolver} to use.
+     */
+    public static ComponentResolver getComponentResolver(ExtendedCamelContext 
extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(ComponentResolver.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 dc76811244c..4fceccc1343 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
@@ -56,6 +56,7 @@ import 
org.apache.camel.main.injection.AnnotationDependencyInjection;
 import org.apache.camel.main.util.ExtraFilesClassLoader;
 import org.apache.camel.spi.CliConnector;
 import org.apache.camel.spi.CliConnectorFactory;
+import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.startup.jfr.FlightRecorderStartupStepRecorder;
 import org.apache.camel.support.service.ServiceHelper;
@@ -441,7 +442,7 @@ public class KameletMain extends MainCommandLineSupport {
             
answer.getCamelContextExtension().getRegistry().bind(DependencyDownloaderStrategy.class.getSimpleName(),
                     new DependencyDownloaderStrategy(answer));
             answer.setClassResolver(new 
DependencyDownloaderClassResolver(answer, known));
-            answer.getCamelContextExtension().setComponentResolver(new 
DependencyDownloaderComponentResolver(answer, stub));
+            
answer.getCamelContextExtension().addContextPlugin(ComponentResolver.class, new 
DependencyDownloaderComponentResolver(answer, stub));
             answer.getCamelContextExtension().setUriFactoryResolver(new 
DependencyDownloaderUriFactoryResolver(answer));
             answer.setDataFormatResolver(new 
DependencyDownloaderDataFormatResolver(answer));
             answer.getCamelContextExtension().setLanguageResolver(new 
DependencyDownloaderLanguageResolver(answer));

Reply via email to