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

Reply via email to