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