You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/04/02 06:26:29 UTC

[camel] 01/04: CAMEL-15105: make the DevConsoleResolver a plugin of the context

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 59c57596808c8d822a993d027aed2b6c378693e5
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 13:04:27 2023 +0200

    CAMEL-15105: make the DevConsoleResolver a plugin of the context
---
 .../org/apache/camel/ExtendedCamelContext.java     | 15 ---------------
 .../camel/impl/engine/AbstractCamelContext.java    |  2 +-
 .../impl/engine/DefaultCamelContextExtension.java  | 15 ---------------
 .../impl/console/DefaultDevConsoleRegistry.java    |  3 ++-
 .../impl/console/DefaultDevConsolesLoader.java     |  2 +-
 .../camel/impl/console/ContextDevConsoleTest.java  |  5 +++--
 .../camel/impl/ExtendedCamelContextConfigurer.java |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java  | 10 ----------
 .../org/apache/camel/support/PluginHelper.java     | 19 +++++++++++++++++++
 .../camel/cli/connector/LocalCliConnector.java     | 22 ++++++++--------------
 10 files changed, 34 insertions(+), 65 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 e1f660b45f6..d365aceda38 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
@@ -22,7 +22,6 @@ import java.util.Set;
 import java.util.function.Supplier;
 
 import org.apache.camel.catalog.RuntimeCamelCatalog;
-import org.apache.camel.console.DevConsoleResolver;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
@@ -275,20 +274,6 @@ public interface ExtendedCamelContext {
      */
     void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory);
 
-    /**
-     * Gets the current dev console resolver
-     *
-     * @return the resolver
-     */
-    DevConsoleResolver getDevConsoleResolver();
-
-    /**
-     * Sets a custom dev console resolver
-     *
-     * @param devConsoleResolver the resolver
-     */
-    void setDevConsoleResolver(DevConsoleResolver devConsoleResolver);
-
     /**
      * 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 e757fe2ce8b..36c172cfab7 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
@@ -211,7 +211,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ProcessorExchangeFactory processorExchangeFactory;
     volatile ReactiveExecutor reactiveExecutor;
     volatile Registry registry;
-    volatile DevConsoleResolver devConsoleResolver;
     volatile ManagementStrategy managementStrategy;
     volatile ManagementMBeanAssembler managementMBeanAssembler;
     volatile HeadersMapFactory headersMapFactory;
@@ -380,6 +379,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(PeriodTaskResolver.class, this::createPeriodTaskResolver);
         camelContextExtension.lazyAddContextPlugin(PeriodTaskScheduler.class, this::createPeriodTaskScheduler);
         camelContextExtension.lazyAddContextPlugin(HealthCheckResolver.class, this::createHealthCheckResolver);
+        camelContextExtension.lazyAddContextPlugin(DevConsoleResolver.class, this::createDevConsoleResolver);
 
         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 620cc38228c..8423dba0a54 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
@@ -458,21 +458,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         this.basePackageScan = basePackageScan;
     }
 
-    public DevConsoleResolver getDevConsoleResolver() {
-        if (camelContext.devConsoleResolver == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.devConsoleResolver == null) {
-                    setDevConsoleResolver(camelContext.createDevConsoleResolver());
-                }
-            }
-        }
-        return camelContext.devConsoleResolver;
-    }
-
-    public void setDevConsoleResolver(DevConsoleResolver devConsoleResolver) {
-        camelContext.devConsoleResolver = camelContext.getInternalServiceManager().addService(devConsoleResolver);
-    }
-
     @Override
     public boolean isLightweight() {
         return lightweight;
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
index b352c16269c..ad59c206b3f 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/DefaultDevConsoleRegistry.java
@@ -28,6 +28,7 @@ import org.apache.camel.DeferredContextBinding;
 import org.apache.camel.console.DevConsole;
 import org.apache.camel.console.DevConsoleRegistry;
 import org.apache.camel.console.DevConsoleResolver;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.StopWatch;
@@ -117,7 +118,7 @@ public class DefaultDevConsoleRegistry extends ServiceSupport implements DevCons
         DevConsole answer = consoles.stream().filter(h -> h.getId().equals(id)).findFirst()
                 .orElse(camelContext.getRegistry().findByTypeWithName(DevConsole.class).get(id));
         if (answer == null) {
-            DevConsoleResolver resolver = camelContext.getCamelContextExtension().getDevConsoleResolver();
+            DevConsoleResolver resolver = PluginHelper.getDevConsoleResolver(camelContext);
             answer = resolver.resolveDevConsole(id);
             if (answer != null) {
                 register(answer);
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 6f60960ddbc..7c640a59894 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
@@ -44,7 +44,7 @@ public class DefaultDevConsolesLoader {
     public DefaultDevConsolesLoader(CamelContext camelContext) {
         this.camelContext = camelContext;
         this.resolver = PluginHelper.getPackageScanResourceResolver(camelContext);
-        this.devConsoleResolver = camelContext.getCamelContextExtension().getDevConsoleResolver();
+        this.devConsoleResolver = PluginHelper.getDevConsoleResolver(camelContext);
     }
 
     public Collection<DevConsole> loadDevConsoles() {
diff --git a/core/camel-console/src/test/java/org/apache/camel/impl/console/ContextDevConsoleTest.java b/core/camel-console/src/test/java/org/apache/camel/impl/console/ContextDevConsoleTest.java
index cc8c9379440..79004b13da0 100644
--- a/core/camel-console/src/test/java/org/apache/camel/impl/console/ContextDevConsoleTest.java
+++ b/core/camel-console/src/test/java/org/apache/camel/impl/console/ContextDevConsoleTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.impl.console;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.console.DevConsole;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.json.JsonObject;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -26,7 +27,7 @@ public class ContextDevConsoleTest extends ContextTestSupport {
 
     @Test
     public void testContextTest() throws Exception {
-        DevConsole con = context.getCamelContextExtension().getDevConsoleResolver().resolveDevConsole("context");
+        DevConsole con = PluginHelper.getDevConsoleResolver(context).resolveDevConsole("context");
         Assertions.assertNotNull(con);
         Assertions.assertEquals("camel", con.getGroup());
         Assertions.assertEquals("context", con.getId());
@@ -39,7 +40,7 @@ public class ContextDevConsoleTest extends ContextTestSupport {
 
     @Test
     public void testContextJson() throws Exception {
-        DevConsole con = context.getCamelContextExtension().getDevConsoleResolver().resolveDevConsole("context");
+        DevConsole con = PluginHelper.getDevConsoleResolver(context).resolveDevConsole("context");
         Assertions.assertNotNull(con);
         Assertions.assertEquals("camel", con.getGroup());
         Assertions.assertEquals("context", con.getId());
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 982cebd9d75..7c3ea5cc9c2 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 "DeferServiceFactory": target.setDeferServiceFactory(property(camelContext, org.apache.camel.spi.DeferServiceFactory.class, value)); return true;
         case "description":
         case "Description": target.setDescription(property(camelContext, java.lang.String.class, value)); return true;
-        case "devconsoleresolver":
-        case "DevConsoleResolver": target.setDevConsoleResolver(property(camelContext, org.apache.camel.console.DevConsoleResolver.class, value)); return true;
         case "errorhandlerfactory":
         case "ErrorHandlerFactory": target.setErrorHandlerFactory(property(camelContext, org.apache.camel.ErrorHandlerFactory.class, value)); return true;
         case "eventnotificationapplicable":
@@ -100,8 +98,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "DeferServiceFactory": return org.apache.camel.spi.DeferServiceFactory.class;
         case "description":
         case "Description": return java.lang.String.class;
-        case "devconsoleresolver":
-        case "DevConsoleResolver": return org.apache.camel.console.DevConsoleResolver.class;
         case "errorhandlerfactory":
         case "ErrorHandlerFactory": return org.apache.camel.ErrorHandlerFactory.class;
         case "eventnotificationapplicable":
@@ -166,8 +162,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "DeferServiceFactory": return target.getDeferServiceFactory();
         case "description":
         case "Description": return target.getDescription();
-        case "devconsoleresolver":
-        case "DevConsoleResolver": return target.getDevConsoleResolver();
         case "errorhandlerfactory":
         case "ErrorHandlerFactory": return target.getErrorHandlerFactory();
         case "eventnotificationapplicable":
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 35da047b4ee..f38d25c1c73 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
@@ -104,16 +104,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public DevConsoleResolver getDevConsoleResolver() {
-        return camelContext.getCamelContextExtension().getDevConsoleResolver();
-    }
-
-    @Override
-    public void setDevConsoleResolver(DevConsoleResolver devConsoleResolver) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public String getName() {
         return camelContext.getCamelContextExtension().getName();
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 9e2c84da612..ebd084d0b00 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.console.DevConsoleResolver;
 import org.apache.camel.health.HealthCheckResolver;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory;
@@ -326,4 +327,22 @@ public final class PluginHelper {
     public static HealthCheckResolver getHealthCheckResolver(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(HealthCheckResolver.class);
     }
+
+    /**
+     * Gets the current dev console resolver
+     *
+     * @return the resolver
+     */
+    public static DevConsoleResolver getDevConsoleResolver(CamelContext camelContext) {
+        return getDevConsoleResolver(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the current dev console resolver
+     *
+     * @return the resolver
+     */
+    public static DevConsoleResolver getDevConsoleResolver(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(DevConsoleResolver.class);
+    }
 }
diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index 580d704d625..b63e17482d9 100644
--- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -47,6 +47,7 @@ import org.apache.camel.spi.CliConnectorFactory;
 import org.apache.camel.spi.ContextReloadStrategy;
 import org.apache.camel.support.DefaultContextReloadStrategy;
 import org.apache.camel.support.PatternHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.FileUtil;
@@ -539,8 +540,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
     private JsonObject collectVaults() {
         JsonObject root = new JsonObject();
         // aws-secrets is optional
-        Optional<DevConsole> dcAws = camelContext.getCamelContextExtension()
-                .getDevConsoleResolver().lookupDevConsole("aws-secrets");
+        Optional<DevConsole> dcAws = PluginHelper.getDevConsoleResolver(camelContext).lookupDevConsole("aws-secrets");
         if (dcAws.isPresent()) {
             JsonObject json = (JsonObject) dcAws.get().call(DevConsole.MediaType.JSON);
             if (json != null) {
@@ -548,8 +548,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
             }
         }
         // gcp-secrets is optional
-        Optional<DevConsole> dcGcp = camelContext.getCamelContextExtension()
-                .getDevConsoleResolver().lookupDevConsole("gcp-secrets");
+        Optional<DevConsole> dcGcp = PluginHelper.getDevConsoleResolver(camelContext).lookupDevConsole("gcp-secrets");
         if (dcGcp.isPresent()) {
             JsonObject json = (JsonObject) dcGcp.get().call(DevConsole.MediaType.JSON);
             if (json != null) {
@@ -557,8 +556,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
             }
         }
         // azure-secrets is optional
-        Optional<DevConsole> dcAzure = camelContext.getCamelContextExtension()
-                .getDevConsoleResolver().lookupDevConsole("azure-secrets");
+        Optional<DevConsole> dcAzure = PluginHelper.getDevConsoleResolver(camelContext).lookupDevConsole("azure-secrets");
         if (dcAzure.isPresent()) {
             JsonObject json = (JsonObject) dcAzure.get().call(DevConsole.MediaType.JSON);
             if (json != null) {
@@ -573,8 +571,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
 
         // platform-http is optional
         if (camelContext.hasComponent("platform-http") != null) {
-            Optional<DevConsole> dc = camelContext.getCamelContextExtension()
-                    .getDevConsoleResolver().lookupDevConsole("platform-http");
+            Optional<DevConsole> dc = PluginHelper.getDevConsoleResolver(camelContext).lookupDevConsole("platform-http");
             if (dc.isPresent()) {
                 JsonObject json = (JsonObject) dc.get().call(DevConsole.MediaType.JSON);
                 if (json != null) {
@@ -583,8 +580,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
             }
         }
         // netty is optional
-        Optional<DevConsole> dc = camelContext.getCamelContextExtension()
-                .getDevConsoleResolver().lookupDevConsole("netty");
+        Optional<DevConsole> dc = PluginHelper.getDevConsoleResolver(camelContext).lookupDevConsole("netty");
         if (dc.isPresent()) {
             JsonObject json = (JsonObject) dc.get().call(DevConsole.MediaType.JSON);
             if (json != null) {
@@ -592,8 +588,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
             }
         }
         // mina is optional
-        dc = camelContext.getCamelContextExtension()
-                .getDevConsoleResolver().lookupDevConsole("mina");
+        dc = PluginHelper.getDevConsoleResolver(camelContext).lookupDevConsole("mina");
         if (dc.isPresent()) {
             JsonObject json = (JsonObject) dc.get().call(DevConsole.MediaType.JSON);
             if (json != null) {
@@ -601,8 +596,7 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
             }
         }
         // mllp is optional
-        dc = camelContext.getCamelContextExtension()
-                .getDevConsoleResolver().lookupDevConsole("mllp");
+        dc = PluginHelper.getDevConsoleResolver(camelContext).lookupDevConsole("mllp");
         if (dc.isPresent()) {
             JsonObject json = (JsonObject) dc.get().call(DevConsole.MediaType.JSON);
             if (json != null) {