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:32 UTC

[camel] 04/04: CAMEL-15105: make the InterceptEndpointFactory 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 0d22038e18e2fc726bfd7d5269bbd6223c35f45f
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 14:49:33 2023 +0200

    CAMEL-15105: make the InterceptEndpointFactory a plugin of the context
---
 .../java/org/apache/camel/ExtendedCamelContext.java   | 15 ---------------
 .../camel/impl/engine/AbstractCamelContext.java       |  2 +-
 .../impl/engine/DefaultCamelContextExtension.java     | 18 ------------------
 .../camel/impl/ExtendedCamelContextConfigurer.java    |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java     | 11 -----------
 .../processor/InterceptSendToEndpointCallback.java    |  3 ++-
 .../java/org/apache/camel/support/PluginHelper.java   | 19 +++++++++++++++++++
 7 files changed, 22 insertions(+), 52 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 c1850cfb5c7..21778d95d9d 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
@@ -35,7 +35,6 @@ import org.apache.camel.spi.ExchangeFactory;
 import org.apache.camel.spi.ExchangeFactoryManager;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.HeadersMapFactory;
-import org.apache.camel.spi.InterceptEndpointFactory;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.LogListener;
@@ -315,20 +314,6 @@ public interface ExtendedCamelContext {
      */
     FactoryFinder getFactoryFinder(String path);
 
-    /**
-     * Gets the current {@link org.apache.camel.spi.InterceptEndpointFactory}
-     *
-     * @return the factory
-     */
-    InterceptEndpointFactory getInterceptEndpointFactory();
-
-    /**
-     * Sets a custom {@link org.apache.camel.spi.InterceptEndpointFactory}
-     *
-     * @param interceptEndpointFactory the custom factory
-     */
-    void setInterceptEndpointFactory(InterceptEndpointFactory interceptEndpointFactory);
-
     /**
      * Gets the current {@link org.apache.camel.spi.RouteFactory}
      *
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 2e288f9763c..1553ed0759a 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
@@ -221,7 +221,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ModelToXMLDumper modelToXMLDumper;
     volatile RestBindingJaxbDataFormatFactory restBindingJaxbDataFormatFactory;
     volatile RuntimeCamelCatalog runtimeCamelCatalog;
-    volatile InterceptEndpointFactory interceptEndpointFactory;
     volatile RouteFactory routeFactory;
     volatile AsyncProcessorAwaitManager asyncProcessorAwaitManager;
     volatile UnitOfWorkFactory unitOfWorkFactory;
@@ -380,6 +379,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(DevConsoleResolver.class, this::createDevConsoleResolver);
         camelContextExtension.lazyAddContextPlugin(ProcessorFactory.class, this::createProcessorFactory);
         camelContextExtension.lazyAddContextPlugin(InternalProcessorFactory.class, this::createInternalProcessorFactory);
+        camelContextExtension.lazyAddContextPlugin(InterceptEndpointFactory.class, this::createInterceptEndpointFactory);
 
         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 482ef419e07..b4fc2578ce2 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
@@ -52,7 +52,6 @@ import org.apache.camel.spi.ExchangeFactory;
 import org.apache.camel.spi.ExchangeFactoryManager;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.HeadersMapFactory;
-import org.apache.camel.spi.InterceptEndpointFactory;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.LogListener;
@@ -465,23 +464,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         this.lightweight = lightweight;
     }
 
-    @Override
-    public InterceptEndpointFactory getInterceptEndpointFactory() {
-        if (camelContext.interceptEndpointFactory == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.interceptEndpointFactory == null) {
-                    setInterceptEndpointFactory(camelContext.createInterceptEndpointFactory());
-                }
-            }
-        }
-        return camelContext.interceptEndpointFactory;
-    }
-
-    @Override
-    public void setInterceptEndpointFactory(InterceptEndpointFactory interceptEndpointFactory) {
-        camelContext.interceptEndpointFactory = camelContext.getInternalServiceManager().addService(interceptEndpointFactory);
-    }
-
     @Override
     public RouteFactory getRouteFactory() {
         if (camelContext.routeFactory == 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 d4a7548ee8a..347ed5bb27d 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
@@ -45,8 +45,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ExchangeFactoryManager": target.setExchangeFactoryManager(property(camelContext, org.apache.camel.spi.ExchangeFactoryManager.class, value)); return true;
         case "headersmapfactory":
         case "HeadersMapFactory": target.setHeadersMapFactory(property(camelContext, org.apache.camel.spi.HeadersMapFactory.class, value)); return true;
-        case "interceptendpointfactory":
-        case "InterceptEndpointFactory": target.setInterceptEndpointFactory(property(camelContext, org.apache.camel.spi.InterceptEndpointFactory.class, value)); return true;
         case "lightweight":
         case "Lightweight": target.setLightweight(property(camelContext, boolean.class, value)); return true;
         case "modeltoxmldumper":
@@ -104,8 +102,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ExchangeFactoryManager": return org.apache.camel.spi.ExchangeFactoryManager.class;
         case "headersmapfactory":
         case "HeadersMapFactory": return org.apache.camel.spi.HeadersMapFactory.class;
-        case "interceptendpointfactory":
-        case "InterceptEndpointFactory": return org.apache.camel.spi.InterceptEndpointFactory.class;
         case "lightweight":
         case "Lightweight": return boolean.class;
         case "modeltoxmldumper":
@@ -164,8 +160,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "ExchangeFactoryManager": return target.getExchangeFactoryManager();
         case "headersmapfactory":
         case "HeadersMapFactory": return target.getHeadersMapFactory();
-        case "interceptendpointfactory":
-        case "InterceptEndpointFactory": return target.getInterceptEndpointFactory();
         case "lightweight":
         case "Lightweight": return target.isLightweight();
         case "modeltoxmldumper":
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 14d389a7e31..62449a13059 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
@@ -50,7 +50,6 @@ import org.apache.camel.spi.ExchangeFactory;
 import org.apache.camel.spi.ExchangeFactoryManager;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.HeadersMapFactory;
-import org.apache.camel.spi.InterceptEndpointFactory;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.spi.ManagementMBeanAssembler;
@@ -241,16 +240,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public InterceptEndpointFactory getInterceptEndpointFactory() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setInterceptEndpointFactory(InterceptEndpointFactory interceptEndpointFactory) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public RouteFactory getRouteFactory() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/InterceptSendToEndpointCallback.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/InterceptSendToEndpointCallback.java
index 93c4828d5f5..a6bca20f705 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/InterceptSendToEndpointCallback.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/InterceptSendToEndpointCallback.java
@@ -22,6 +22,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.spi.EndpointStrategy;
 import org.apache.camel.spi.InterceptSendToEndpoint;
 import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.URISupport;
 
 /**
@@ -51,7 +52,7 @@ public class InterceptSendToEndpointCallback implements EndpointStrategy {
         } else if (matchURI == null || matchPattern(uri, matchURI)) {
             // only proxy if the uri is matched decorate endpoint with
             // our proxy should be false by default
-            return camelContext.getCamelContextExtension().getInterceptEndpointFactory()
+            return PluginHelper.getInterceptEndpointFactory(camelContext)
                     .createInterceptSendToEndpoint(camelContext, endpoint, skip, before, after);
         } else {
             // no proxy so return regular endpoint
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 5396ed47732..8ddf5cff349 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
@@ -30,6 +30,7 @@ import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.FactoryFinderResolver;
+import org.apache.camel.spi.InterceptEndpointFactory;
 import org.apache.camel.spi.InternalProcessorFactory;
 import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.ModelJAXBContextFactory;
@@ -383,4 +384,22 @@ public final class PluginHelper {
     public static InternalProcessorFactory getInternalProcessorFactory(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(InternalProcessorFactory.class);
     }
+
+    /**
+     * Gets the current {@link org.apache.camel.spi.InterceptEndpointFactory}
+     *
+     * @return the factory
+     */
+    public static InterceptEndpointFactory getInterceptEndpointFactory(CamelContext camelContext) {
+        return getInterceptEndpointFactory(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the current {@link org.apache.camel.spi.InterceptEndpointFactory}
+     *
+     * @return the factory
+     */
+    public static InterceptEndpointFactory getInterceptEndpointFactory(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(InterceptEndpointFactory.class);
+    }
 }