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 14:08:44 UTC

[camel] 01/02: CAMEL-15105: cleanup BootstrapFactories handling

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 b1cd3423bbf2d705a73ca4f045a5faf7b16007c9
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Mar 31 14:02:10 2023 +0200

    CAMEL-15105: cleanup BootstrapFactories handling
---
 .../camel/impl/engine/AbstractCamelContext.java       |  6 +-----
 .../impl/engine/DefaultCamelContextExtension.java     | 19 ++++++++++++-------
 2 files changed, 13 insertions(+), 12 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 09d6ea72808..bc523f62dd4 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
@@ -201,8 +201,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     // start auto assigning route ids using numbering 1000 and upwards
     final List<BootstrapCloseable> bootstraps = new CopyOnWriteArrayList<>();
-    final Map<String, FactoryFinder> bootstrapFactories = new ConcurrentHashMap<>();
-    volatile FactoryFinder bootstrapFactoryFinder;
+
     final Object lock = new Object();
     final RouteController internalRouteController = new InternalRouteController(this);
     volatile DeferServiceFactory deferServiceFactory;
@@ -370,9 +369,6 @@ public abstract class AbstractCamelContext extends BaseService
         // add the default bootstrap closer
         this.bootstraps.add(new DefaultServiceBootstrapCloseable(this));
 
-        // add a cleaner for FactoryFinder used only when bootstrapping the context
-        this.bootstraps.add(bootstrapFactories::clear);
-
         this.internalServiceManager = new InternalServiceManager(this, internalRouteStartupManager, startupListeners);
 
         camelContextExtension.addContextPlugin(CamelBeanPostProcessor.class, createBeanPostProcessor());
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 eb9aa0c961c..d4574b68dd2 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
@@ -98,6 +98,7 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
     private final ThreadLocal<Boolean> isSetupRoutes = new ThreadLocal<>();
     private final List<InterceptStrategy> interceptStrategies = new ArrayList<>();
     private final Map<String, FactoryFinder> factories = new ConcurrentHashMap<>();
+    private final Map<String, FactoryFinder> bootstrapFactories = new ConcurrentHashMap<>();
     private final Set<LogListener> logListeners = new LinkedHashSet<>();
     private final PluginManager pluginManager = new DefaultContextPluginManager();
     private volatile String description;
@@ -106,6 +107,10 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
     private String basePackageScan;
     private boolean lightweight;
 
+    private final Object lock = new Object();
+
+    private volatile FactoryFinder bootstrapFactoryFinder;
+
     public DefaultCamelContextExtension(AbstractCamelContext camelContext) {
         this.camelContext = camelContext;
     }
@@ -338,26 +343,26 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
 
     @Override
     public FactoryFinder getBootstrapFactoryFinder() {
-        if (camelContext.bootstrapFactoryFinder == null) {
-            synchronized (camelContext.lock) {
-                if (camelContext.bootstrapFactoryFinder == null) {
-                    camelContext.bootstrapFactoryFinder
+        if (bootstrapFactoryFinder == null) {
+            synchronized (lock) {
+                if (bootstrapFactoryFinder == null) {
+                    bootstrapFactoryFinder
                             = PluginHelper.getFactoryFinderResolver(this)
                                     .resolveBootstrapFactoryFinder(camelContext.getClassResolver());
                 }
             }
         }
-        return camelContext.bootstrapFactoryFinder;
+        return bootstrapFactoryFinder;
     }
 
     @Override
     public void setBootstrapFactoryFinder(FactoryFinder factoryFinder) {
-        camelContext.bootstrapFactoryFinder = factoryFinder;
+        bootstrapFactoryFinder = factoryFinder;
     }
 
     @Override
     public FactoryFinder getBootstrapFactoryFinder(String path) {
-        return camelContext.bootstrapFactories.computeIfAbsent(path, camelContext::createBootstrapFactoryFinder);
+        return bootstrapFactories.computeIfAbsent(path, camelContext::createBootstrapFactoryFinder);
     }
 
     @Override