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 12:50:11 UTC

[camel] 07/09: CAMEL-15105: make the BeanProxyFactory 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 a0bfe1d27aaddfbfcf5210b731abbb391d3cdecb
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Sat Apr 1 17:06:52 2023 +0200

    CAMEL-15105: make the BeanProxyFactory a plugin of the context
---
 .../main/java/org/apache/camel/ExtendedCamelContext.java   |  8 +-------
 .../org/apache/camel/impl/engine/AbstractCamelContext.java |  6 +-----
 .../apache/camel/impl/engine/CamelPostProcessorHelper.java |  3 +--
 .../camel/impl/engine/DefaultCamelContextExtension.java    | 13 -------------
 .../camel/impl/lw/LightweightCamelContextExtension.java    |  6 ------
 .../main/java/org/apache/camel/builder/ProxyBuilder.java   |  3 ++-
 .../main/java/org/apache/camel/support/PluginHelper.java   | 14 ++++++++++++++
 7 files changed, 19 insertions(+), 34 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 56407a31044..2f4885dbd1f 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
@@ -25,7 +25,6 @@ import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.DeferServiceFactory;
 import org.apache.camel.spi.EndpointStrategy;
@@ -340,11 +339,6 @@ public interface ExtendedCamelContext {
      */
     void setAnnotationBasedProcessorFactory(AnnotationBasedProcessorFactory annotationBasedProcessorFactory);
 
-    /**
-     * Gets the {@link BeanProxyFactory} to use.
-     */
-    BeanProxyFactory getBeanProxyFactory();
-
     /**
      * Gets the {@link BeanProcessorFactory} to use.
      */
@@ -459,7 +453,6 @@ public interface ExtendedCamelContext {
      */
     EndpointUriFactory getEndpointUriFactory(String scheme);
 
-
     /**
      * Gets the {@link RuntimeCamelCatalog} if available on the classpath.
      */
@@ -467,6 +460,7 @@ public interface ExtendedCamelContext {
     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 61c202c8e9d..b63c7d32501 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
@@ -214,7 +214,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ManagementStrategy managementStrategy;
     volatile ManagementMBeanAssembler managementMBeanAssembler;
     volatile HeadersMapFactory headersMapFactory;
-    volatile BeanProxyFactory beanProxyFactory;
     volatile BeanProcessorFactory beanProcessorFactory;
     volatile ResourceLoader resourceLoader;
     volatile ModelToXMLDumper modelToXMLDumper;
@@ -379,6 +378,7 @@ public abstract class AbstractCamelContext extends BaseService
         camelContextExtension.lazyAddContextPlugin(RoutesLoader.class, this::createRoutesLoader);
         camelContextExtension.lazyAddContextPlugin(AsyncProcessorAwaitManager.class, this::createAsyncProcessorAwaitManager);
         camelContextExtension.lazyAddContextPlugin(RuntimeCamelCatalog.class, this::createRuntimeCamelCatalog);
+        camelContextExtension.lazyAddContextPlugin(BeanProxyFactory.class, this::createBeanProxyFactory);
 
         if (build) {
             try {
@@ -3945,10 +3945,6 @@ public abstract class AbstractCamelContext extends BaseService
         this.startupSummaryLevel = startupSummaryLevel;
     }
 
-    public void setBeanProxyFactory(BeanProxyFactory beanProxyFactory) {
-        this.beanProxyFactory = internalServiceManager.addService(beanProxyFactory);
-    }
-
     public void setBeanProcessorFactory(BeanProcessorFactory beanProcessorFactory) {
         this.beanProcessorFactory = internalServiceManager.addService(beanProcessorFactory);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
index 34bd21840ad..dc951d3a011 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelPostProcessorHelper.java
@@ -254,8 +254,7 @@ public class CamelPostProcessorHelper implements CamelContextAware {
                     // lets create a proxy
                     try {
                         // use proxy service
-                        BeanProxyFactory factory
-                                = endpoint.getCamelContext().getCamelContextExtension().getBeanProxyFactory();
+                        BeanProxyFactory factory = PluginHelper.getBeanProxyFactory(endpoint.getCamelContext());
                         return factory.createProxy(endpoint, binding, type);
                     } catch (Exception e) {
                         throw createProxyInstantiationRuntimeException(type, endpoint, e);
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 29a7a12f9ad..d0931843446 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
@@ -38,7 +38,6 @@ import org.apache.camel.Service;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.Debugger;
 import org.apache.camel.spi.DebuggerFactory;
@@ -589,18 +588,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         camelContext.annotationBasedProcessorFactory = annotationBasedProcessorFactory;
     }
 
-    @Override
-    public BeanProxyFactory getBeanProxyFactory() {
-        if (camelContext.beanProxyFactory == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.beanProxyFactory == null) {
-                    camelContext.setBeanProxyFactory(camelContext.createBeanProxyFactory());
-                }
-            }
-        }
-        return camelContext.beanProxyFactory;
-    }
-
     @Override
     public BeanProcessorFactory getBeanProcessorFactory() {
         if (camelContext.beanProcessorFactory == null) {
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 ac1a2a935f4..b31188177b0 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
@@ -39,7 +39,6 @@ import org.apache.camel.ServiceStatus;
 import org.apache.camel.spi.AnnotationBasedProcessorFactory;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
-import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.BootstrapCloseable;
 import org.apache.camel.spi.DeferServiceFactory;
 import org.apache.camel.spi.EndpointStrategy;
@@ -265,11 +264,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public BeanProxyFactory getBeanProxyFactory() {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public BeanProcessorFactory getBeanProcessorFactory() {
         throw new UnsupportedOperationException();
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
index caa183f7708..cea91778dfb 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/ProxyBuilder.java
@@ -19,6 +19,7 @@ package org.apache.camel.builder;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.BeanProxyFactory;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -81,7 +82,7 @@ public final class ProxyBuilder {
     public <T> T build(Class<T>... interfaceClasses) throws Exception {
         ObjectHelper.notNull(endpoint, "endpoint");
         // use proxy service
-        BeanProxyFactory factory = camelContext.getCamelContextExtension().getBeanProxyFactory();
+        BeanProxyFactory factory = PluginHelper.getBeanProxyFactory(camelContext);
         return factory.createProxy(endpoint, binding, interfaceClasses);
     }
 
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 0f95f511c41..a50bff03a3f 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
@@ -25,6 +25,7 @@ import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.console.DevConsoleResolver;
 import org.apache.camel.health.HealthCheckResolver;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
+import org.apache.camel.spi.BeanProxyFactory;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory;
 import org.apache.camel.spi.ComponentNameResolver;
@@ -485,6 +486,19 @@ public final class PluginHelper {
     public static RestBindingJaxbDataFormatFactory getRestBindingJaxbDataFormatFactory(
             ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(RestBindingJaxbDataFormatFactory.class);
+    }
 
+    /**
+     * Gets the {@link BeanProxyFactory} to use.
+     */
+    public static BeanProxyFactory getBeanProxyFactory(CamelContext camelContext) {
+        return getBeanProxyFactory(camelContext.getCamelContextExtension());
+    }
+
+    /**
+     * Gets the {@link BeanProxyFactory} to use.
+     */
+    public static BeanProxyFactory getBeanProxyFactory(ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(BeanProxyFactory.class);
     }
 }