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/10/17 11:20:51 UTC

[camel] 03/06: CAMEL-19998: cleanup injector API

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 194c7f6ae8707b8094eb16ad7e7252a17f1abb03
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Oct 17 09:01:11 2023 +0200

    CAMEL-19998: cleanup injector API
---
 .../camel/impl/engine/AbstractCamelContext.java    | 14 +++-----------
 .../impl/engine/DefaultCamelContextExtension.java  | 22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+), 11 deletions(-)

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 2ab1485665c..db0c9e47f0a 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
@@ -261,7 +261,6 @@ public abstract class AbstractCamelContext extends BaseService
     private Boolean autowiredEnabled = Boolean.TRUE;
     private Long delay;
     private Map<String, String> globalOptions = new HashMap<>();
-    private volatile Injector injector;
     private volatile ShutdownStrategy shutdownStrategy;
     private volatile ExecutorServiceManager executorServiceManager;
     private volatile RouteController routeController;
@@ -1583,19 +1582,12 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public Injector getInjector() {
-        if (injector == null) {
-            synchronized (lock) {
-                if (injector == null) {
-                    setInjector(createInjector());
-                }
-            }
-        }
-        return injector;
+        return camelContextExtension.getInjector();
     }
 
     @Override
     public void setInjector(Injector injector) {
-        this.injector = internalServiceManager.addService(injector);
+        camelContextExtension.setInjector(injector);
     }
 
     @Override
@@ -3167,7 +3159,7 @@ public abstract class AbstractCamelContext extends BaseService
      * Force clear lazy initialization so they can be re-created on restart
      */
     protected void forceStopLazyInitialization() {
-        injector = null;
+        camelContextExtension.resetInjector();
         camelContextExtension.resetTypeConverterRegistry();
         camelContextExtension.resetTypeConverter();
     }
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 d3a0bc2cfc0..f7ff8da84d4 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
@@ -50,6 +50,7 @@ import org.apache.camel.spi.ExchangeFactoryManager;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InflightRepository;
+import org.apache.camel.spi.Injector;
 import org.apache.camel.spi.InterceptStrategy;
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.LogListener;
@@ -124,6 +125,8 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
     private volatile TypeConverterRegistry typeConverterRegistry;
     private volatile TypeConverter typeConverter;
 
+    private volatile Injector injector;
+
     @Deprecated
     private ErrorHandlerFactory errorHandlerFactory;
     private String basePackageScan;
@@ -830,6 +833,25 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         return typeConverter;
     }
 
+    void resetInjector() {
+        injector = null;
+    }
+
+    Injector getInjector() {
+        if (injector == null) {
+            synchronized (lock) {
+                if (injector == null) {
+                    setInjector(camelContext.createInjector());
+                }
+            }
+        }
+        return injector;
+    }
+
+    void setInjector(Injector injector) {
+        this.injector = camelContext.getInternalServiceManager().addService(injector);
+    }
+
     @Override
     public RouteController getInternalRouteController() {
         return internalRouteController;