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/03/31 07:13:50 UTC

[camel] 04/06: CAMEL-15105: make the CamelDependencyInjectionAnnotationFactory 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 138d6712f56d882500894deebd95e468de05d580
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Thu Mar 30 18:09:45 2023 +0200

    CAMEL-15105: make the CamelDependencyInjectionAnnotationFactory a plugin of the context
---
 .../java/org/apache/camel/ExtendedCamelContext.java   | 11 -----------
 .../camel/impl/engine/AbstractCamelContext.java       |  3 ++-
 .../impl/engine/DefaultCamelBeanPostProcessor.java    | 11 +++++------
 .../impl/engine/DefaultCamelContextExtension.java     | 19 -------------------
 .../camel/impl/ExtendedCamelContextConfigurer.java    |  6 ------
 .../impl/lw/LightweightCamelContextExtension.java     | 11 -----------
 .../java/org/apache/camel/support/PluginHelper.java   | 17 +++++++++++++++++
 7 files changed, 24 insertions(+), 54 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 a0f73453a80..e2317dc9fed 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
@@ -30,7 +30,6 @@ 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.CamelDependencyInjectionAnnotationFactory;
 import org.apache.camel.spi.ComponentNameResolver;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.ConfigurerResolver;
@@ -269,16 +268,6 @@ public interface ExtendedCamelContext {
      */
     void setProcessorExchangeFactory(ProcessorExchangeFactory processorExchangeFactory);
 
-    /**
-     * Returns the annotation dependency injection factory.
-     */
-    CamelDependencyInjectionAnnotationFactory getDependencyInjectionAnnotationFactory();
-
-    /**
-     * Sets a custom annotation dependency injection factory.
-     */
-    void setDependencyInjectionAnnotationFactory(CamelDependencyInjectionAnnotationFactory factory);
-
     /**
      * Returns the management mbean assembler
      *
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 1b61b6019f1..aa3b4cdd64c 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
@@ -212,7 +212,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile ProcessorExchangeFactory processorExchangeFactory;
     volatile ReactiveExecutor reactiveExecutor;
     volatile Registry registry;
-    volatile CamelDependencyInjectionAnnotationFactory dependencyInjectionAnnotationFactory;
     volatile ComponentResolver componentResolver;
     volatile ComponentNameResolver componentNameResolver;
     volatile LanguageResolver languageResolver;
@@ -384,6 +383,8 @@ public abstract class AbstractCamelContext extends BaseService
         this.internalServiceManager = new InternalServiceManager(this, internalRouteStartupManager, startupListeners);
 
         camelContextExtension.addContextPlugin(CamelBeanPostProcessor.class, createBeanPostProcessor());
+        camelContextExtension.addContextPlugin(CamelDependencyInjectionAnnotationFactory.class,
+                createDependencyInjectionAnnotationFactory());
 
         if (build) {
             try {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
index fcc6f914473..d2e717ad575 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelBeanPostProcessor.java
@@ -35,6 +35,7 @@ import org.apache.camel.PropertyInject;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelBeanPostProcessorInjector;
 import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.support.PluginHelper;
 import org.apache.camel.util.ReflectionHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -493,8 +494,8 @@ public class DefaultCamelBeanPostProcessor implements CamelBeanPostProcessor, Ca
             getOrLookupCamelContext().getRegistry().unbind(name);
         }
         // use dependency injection factory to perform the task of binding the bean to registry
-        Runnable task = getOrLookupCamelContext().getCamelContextExtension()
-                .getDependencyInjectionAnnotationFactory().createBindToRegistryFactory(name, bean, beanName, beanPostProcess);
+        Runnable task = PluginHelper.getDependencyInjectionAnnotationFactory(getOrLookupCamelContext())
+                .createBindToRegistryFactory(name, bean, beanName, beanPostProcess);
         task.run();
     }
 
@@ -509,8 +510,7 @@ public class DefaultCamelBeanPostProcessor implements CamelBeanPostProcessor, Ca
                 getOrLookupCamelContext().getRegistry().unbind(name);
             }
             // use dependency injection factory to perform the task of binding the bean to registry
-            Runnable task = getOrLookupCamelContext().getCamelContextExtension()
-                    .getDependencyInjectionAnnotationFactory()
+            Runnable task = PluginHelper.getDependencyInjectionAnnotationFactory(getOrLookupCamelContext())
                     .createBindToRegistryFactory(name, value, beanName, beanPostProcess);
             task.run();
         }
@@ -528,8 +528,7 @@ public class DefaultCamelBeanPostProcessor implements CamelBeanPostProcessor, Ca
                 getOrLookupCamelContext().getRegistry().unbind(name);
             }
             // use dependency injection factory to perform the task of binding the bean to registry
-            Runnable task = getOrLookupCamelContext().getCamelContextExtension()
-                    .getDependencyInjectionAnnotationFactory()
+            Runnable task = PluginHelper.getDependencyInjectionAnnotationFactory(getOrLookupCamelContext())
                     .createBindToRegistryFactory(name, value, beanName, beanPostProcess);
             task.run();
         }
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 957a688daf9..380d702235c 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
@@ -44,7 +44,6 @@ 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.CamelDependencyInjectionAnnotationFactory;
 import org.apache.camel.spi.ComponentNameResolver;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.ConfigurerResolver;
@@ -245,24 +244,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         return text;
     }
 
-    @Override
-    public CamelDependencyInjectionAnnotationFactory getDependencyInjectionAnnotationFactory() {
-        if (camelContext.dependencyInjectionAnnotationFactory == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.dependencyInjectionAnnotationFactory == null) {
-                    setDependencyInjectionAnnotationFactory(camelContext.createDependencyInjectionAnnotationFactory());
-                }
-            }
-        }
-        return camelContext.dependencyInjectionAnnotationFactory;
-    }
-
-    @Override
-    public void setDependencyInjectionAnnotationFactory(
-            CamelDependencyInjectionAnnotationFactory dependencyInjectionAnnotationFactory) {
-        camelContext.dependencyInjectionAnnotationFactory = dependencyInjectionAnnotationFactory;
-    }
-
     @Override
     public ManagementMBeanAssembler getManagementMBeanAssembler() {
         return camelContext.managementMBeanAssembler;
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 b31d6e5e66e..a584868bc90 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
@@ -43,8 +43,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "DataFormatResolver": target.setDataFormatResolver(property(camelContext, org.apache.camel.spi.DataFormatResolver.class, value)); return true;
         case "deferservicefactory":
         case "DeferServiceFactory": target.setDeferServiceFactory(property(camelContext, org.apache.camel.spi.DeferServiceFactory.class, value)); return true;
-        case "dependencyinjectionannotationfactory":
-        case "DependencyInjectionAnnotationFactory": target.setDependencyInjectionAnnotationFactory(property(camelContext, org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory.class, value)); return true;
         case "description":
         case "Description": target.setDescription(property(camelContext, java.lang.String.class, value)); return true;
         case "devconsoleresolver":
@@ -140,8 +138,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "DataFormatResolver": return org.apache.camel.spi.DataFormatResolver.class;
         case "deferservicefactory":
         case "DeferServiceFactory": return org.apache.camel.spi.DeferServiceFactory.class;
-        case "dependencyinjectionannotationfactory":
-        case "DependencyInjectionAnnotationFactory": return org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory.class;
         case "description":
         case "Description": return java.lang.String.class;
         case "devconsoleresolver":
@@ -238,8 +234,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
         case "DataFormatResolver": return target.getDataFormatResolver();
         case "deferservicefactory":
         case "DeferServiceFactory": return target.getDeferServiceFactory();
-        case "dependencyinjectionannotationfactory":
-        case "DependencyInjectionAnnotationFactory": return target.getDependencyInjectionAnnotationFactory();
         case "description":
         case "Description": return target.getDescription();
         case "devconsoleresolver":
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 b6141635ab2..bd9e016d4b8 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
@@ -45,7 +45,6 @@ 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.CamelDependencyInjectionAnnotationFactory;
 import org.apache.camel.spi.ComponentNameResolver;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.ConfigurerResolver;
@@ -289,16 +288,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public CamelDependencyInjectionAnnotationFactory getDependencyInjectionAnnotationFactory() {
-        return camelContext.getCamelContextExtension().getDependencyInjectionAnnotationFactory();
-    }
-
-    @Override
-    public void setDependencyInjectionAnnotationFactory(CamelDependencyInjectionAnnotationFactory factory) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public ManagementMBeanAssembler getManagementMBeanAssembler() {
         throw new UnsupportedOperationException();
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 c9713d823d5..b18a6312719 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
@@ -20,6 +20,7 @@ package org.apache.camel.support;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.CamelBeanPostProcessor;
+import org.apache.camel.spi.CamelDependencyInjectionAnnotationFactory;
 
 public final class PluginHelper {
     private PluginHelper() {
@@ -43,4 +44,20 @@ public final class PluginHelper {
     public static CamelBeanPostProcessor getBeanPostProcessor(ExtendedCamelContext extendedCamelContext) {
         return extendedCamelContext.getContextPlugin(CamelBeanPostProcessor.class);
     }
+
+    /**
+     * Returns the annotation dependency injection factory.
+     */
+    public static CamelDependencyInjectionAnnotationFactory getDependencyInjectionAnnotationFactory(CamelContext camelContext) {
+        return getDependencyInjectionAnnotationFactory(camelContext.getCamelContextExtension());
+
+    }
+
+    /**
+     * Returns the annotation dependency injection factory.
+     */
+    public static CamelDependencyInjectionAnnotationFactory getDependencyInjectionAnnotationFactory(
+            ExtendedCamelContext extendedCamelContext) {
+        return extendedCamelContext.getContextPlugin(CamelDependencyInjectionAnnotationFactory.class);
+    }
 }