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