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));