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


The following commit(s) were added to refs/heads/main by this push:
     new be5b9764703 CAMEL-19998: reduce coupling between CamelContext and the 
InternalServiceManager
be5b9764703 is described below

commit be5b97647034d345675ae906e05c23a0cf68a93e
Author: Otavio Rodolfo Piske <angusyo...@gmail.com>
AuthorDate: Tue Oct 17 14:42:52 2023 +0200

    CAMEL-19998: reduce coupling between CamelContext and the 
InternalServiceManager
---
 .../camel/impl/engine/AbstractCamelContext.java    | 18 ++++----
 .../impl/engine/DefaultCamelContextExtension.java  | 52 +++++++++++-----------
 .../camel/impl/engine/InternalServiceManager.java  | 31 +++++++------
 3 files changed, 51 insertions(+), 50 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 288309f36ef..43015772e97 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
@@ -305,7 +305,7 @@ public abstract class AbstractCamelContext extends 
BaseService
         // add the default bootstrap closer
         camelContextExtension.addBootstrap(new 
DefaultServiceBootstrapCloseable(this));
 
-        this.internalServiceManager = new InternalServiceManager(this, 
internalRouteStartupManager, startupListeners);
+        this.internalServiceManager = new 
InternalServiceManager(internalRouteStartupManager, startupListeners);
 
         initPlugins();
 
@@ -1315,12 +1315,12 @@ public abstract class AbstractCamelContext extends 
BaseService
 
     @Override
     public void addService(Object object, boolean stopOnShutdown, boolean 
forceStart) throws Exception {
-        internalServiceManager.doAddService(object, stopOnShutdown, 
forceStart, true);
+        internalServiceManager.doAddService(this, object, stopOnShutdown, 
forceStart, true);
     }
 
     @Override
     public void addPrototypeService(Object object) throws Exception {
-        internalServiceManager.addService(object, false, true, false);
+        internalServiceManager.addService(this, object, false, true, false);
     }
 
     @Override
@@ -1357,7 +1357,7 @@ public abstract class AbstractCamelContext extends 
BaseService
 
     @Override
     public void deferStartService(Object object, boolean stopOnShutdown) 
throws Exception {
-        internalServiceManager.deferStartService(object, stopOnShutdown, 
false);
+        internalServiceManager.deferStartService(this, object, stopOnShutdown, 
false);
     }
 
     protected List<StartupListener> getStartupListeners() {
@@ -1824,7 +1824,7 @@ public abstract class AbstractCamelContext extends 
BaseService
 
     @Override
     public void setRuntimeEndpointRegistry(RuntimeEndpointRegistry 
runtimeEndpointRegistry) {
-        this.runtimeEndpointRegistry = 
internalServiceManager.addService(runtimeEndpointRegistry);
+        this.runtimeEndpointRegistry = internalServiceManager.addService(this, 
runtimeEndpointRegistry);
     }
 
     @Override
@@ -2246,7 +2246,7 @@ public abstract class AbstractCamelContext extends 
BaseService
 
         // re-create endpoint registry as the cache size limit may be set 
after the constructor of this instance was called.
         // and we needed to create endpoints up-front as it may be accessed 
before this context is started
-        endpoints = 
internalServiceManager.addService(createEndpointRegistry(endpoints));
+        endpoints = internalServiceManager.addService(this, 
createEndpointRegistry(endpoints));
 
         // optimised to not include runtimeEndpointRegistry unless 
startServices
         // is enabled or JMX statistics is in extended mode
@@ -2813,7 +2813,7 @@ public abstract class AbstractCamelContext extends 
BaseService
         // consumer (eg @Consumer)
         // which we need to stop after the routes, as a POJO consumer is
         // essentially a route also
-        internalServiceManager.stopConsumers();
+        internalServiceManager.stopConsumers(this);
 
         // the stop order is important
 
@@ -2837,7 +2837,7 @@ public abstract class AbstractCamelContext extends 
BaseService
         languages.clear();
 
         // shutdown services as late as possible (except type converters as 
they may be needed during the remainder of the stopping)
-        internalServiceManager.shutdownServices();
+        internalServiceManager.shutdownServices(this);
 
         try {
             for (LifecycleStrategy strategy : lifecycleStrategies) {
@@ -3595,7 +3595,7 @@ public abstract class AbstractCamelContext extends 
BaseService
         if (isStartingOrStarted()) {
             throw new IllegalStateException("Cannot set debugger on a started 
CamelContext");
         }
-        this.debugger = internalServiceManager.addService(debugger, true, 
false, true);
+        this.debugger = internalServiceManager.addService(this, debugger, 
true, false, true);
     }
 
     @Override
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 36a00c93d2d..ba5683459c5 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
@@ -170,7 +170,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setNameStrategy(CamelContextNameStrategy nameStrategy) {
-        this.nameStrategy = 
camelContext.getInternalServiceManager().addService(nameStrategy);
+        this.nameStrategy = 
camelContext.getInternalServiceManager().addService(camelContext, nameStrategy);
     }
 
     ManagementNameStrategy getManagementNameStrategy() {
@@ -185,7 +185,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setManagementNameStrategy(ManagementNameStrategy 
managementNameStrategy) {
-        this.managementNameStrategy = 
camelContext.getInternalServiceManager().addService(managementNameStrategy);
+        this.managementNameStrategy = 
camelContext.getInternalServiceManager().addService(camelContext, 
managementNameStrategy);
     }
 
     PropertiesComponent getPropertiesComponent() {
@@ -200,7 +200,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setPropertiesComponent(PropertiesComponent propertiesComponent) {
-        this.propertiesComponent = 
camelContext.getInternalServiceManager().addService(propertiesComponent);
+        this.propertiesComponent = 
camelContext.getInternalServiceManager().addService(camelContext, 
propertiesComponent);
     }
 
     @Override
@@ -342,7 +342,8 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setManagementMBeanAssembler(ManagementMBeanAssembler 
managementMBeanAssembler) {
-        this.managementMBeanAssembler = 
camelContext.getInternalServiceManager().addService(managementMBeanAssembler, 
false);
+        this.managementMBeanAssembler
+                = 
camelContext.getInternalServiceManager().addService(camelContext, 
managementMBeanAssembler, false);
     }
 
     void stopRegistry() {
@@ -526,7 +527,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
 
     @Override
     public void setHeadersMapFactory(HeadersMapFactory headersMapFactory) {
-        this.headersMapFactory = 
camelContext.getInternalServiceManager().addService(headersMapFactory);
+        this.headersMapFactory = 
camelContext.getInternalServiceManager().addService(camelContext, 
headersMapFactory);
     }
 
     void initEagerMandatoryServices(boolean caseInsensitive, 
Supplier<HeadersMapFactory> headersMapFactorySupplier) {
@@ -579,7 +580,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
 
     @Override
     public void setExchangeFactoryManager(ExchangeFactoryManager 
exchangeFactoryManager) {
-        this.exchangeFactoryManager = 
camelContext.getInternalServiceManager().addService(exchangeFactoryManager);
+        this.exchangeFactoryManager = 
camelContext.getInternalServiceManager().addService(camelContext, 
exchangeFactoryManager);
     }
 
     @Override
@@ -617,7 +618,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     public void setReactiveExecutor(ReactiveExecutor reactiveExecutor) {
         // special for executorServiceManager as want to stop it manually so
         // false in stopOnShutdown
-        this.reactiveExecutor = 
camelContext.getInternalServiceManager().addService(reactiveExecutor, false);
+        this.reactiveExecutor = 
camelContext.getInternalServiceManager().addService(camelContext, 
reactiveExecutor, false);
     }
 
     RestRegistryFactory getRestRegistryFactory() {
@@ -632,7 +633,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setRestRegistryFactory(RestRegistryFactory restRegistryFactory) {
-        this.restRegistryFactory = 
camelContext.getInternalServiceManager().addService(restRegistryFactory);
+        this.restRegistryFactory = 
camelContext.getInternalServiceManager().addService(camelContext, 
restRegistryFactory);
     }
 
     RestRegistry getRestRegistry() {
@@ -647,7 +648,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setRestRegistry(RestRegistry restRegistry) {
-        this.restRegistry = 
camelContext.getInternalServiceManager().addService(restRegistry);
+        this.restRegistry = 
camelContext.getInternalServiceManager().addService(camelContext, restRegistry);
     }
 
     RestConfiguration getRestConfiguration() {
@@ -677,7 +678,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setClassResolver(ClassResolver classResolver) {
-        this.classResolver = 
camelContext.getInternalServiceManager().addService(classResolver);
+        this.classResolver = 
camelContext.getInternalServiceManager().addService(camelContext, 
classResolver);
     }
 
     MessageHistoryFactory getMessageHistoryFactory() {
@@ -692,7 +693,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setMessageHistoryFactory(MessageHistoryFactory messageHistoryFactory) 
{
-        this.messageHistoryFactory = 
camelContext.getInternalServiceManager().addService(messageHistoryFactory);
+        this.messageHistoryFactory = 
camelContext.getInternalServiceManager().addService(camelContext, 
messageHistoryFactory);
     }
 
     StreamCachingStrategy getStreamCachingStrategy() {
@@ -708,7 +709,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
 
     void setStreamCachingStrategy(StreamCachingStrategy streamCachingStrategy) 
{
         this.streamCachingStrategy
-                = 
camelContext.getInternalServiceManager().addService(streamCachingStrategy, 
true, false, true);
+                = 
camelContext.getInternalServiceManager().addService(camelContext, 
streamCachingStrategy, true, false, true);
     }
 
     InflightRepository getInflightRepository() {
@@ -723,7 +724,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setInflightRepository(InflightRepository repository) {
-        this.inflightRepository = 
camelContext.getInternalServiceManager().addService(repository);
+        this.inflightRepository = 
camelContext.getInternalServiceManager().addService(camelContext, repository);
     }
 
     UuidGenerator getUuidGenerator() {
@@ -738,7 +739,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setUuidGenerator(UuidGenerator uuidGenerator) {
-        this.uuidGenerator = 
camelContext.getInternalServiceManager().addService(uuidGenerator);
+        this.uuidGenerator = 
camelContext.getInternalServiceManager().addService(camelContext, 
uuidGenerator);
     }
 
     Tracer getTracer() {
@@ -753,7 +754,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setTracer(Tracer tracer) {
-        this.tracer = 
camelContext.getInternalServiceManager().addService(tracer, true, false, true);
+        this.tracer = 
camelContext.getInternalServiceManager().addService(camelContext, tracer, true, 
false, true);
     }
 
     TransformerRegistry getTransformerRegistry() {
@@ -768,7 +769,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setTransformerRegistry(TransformerRegistry transformerRegistry) {
-        this.transformerRegistry = 
camelContext.getInternalServiceManager().addService(transformerRegistry);
+        this.transformerRegistry = 
camelContext.getInternalServiceManager().addService(camelContext, 
transformerRegistry);
     }
 
     ValidatorRegistry getValidatorRegistry() {
@@ -783,7 +784,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     public void setValidatorRegistry(ValidatorRegistry validatorRegistry) {
-        this.validatorRegistry = 
camelContext.getInternalServiceManager().addService(validatorRegistry);
+        this.validatorRegistry = 
camelContext.getInternalServiceManager().addService(camelContext, 
validatorRegistry);
     }
 
     void stopTypeConverterRegistry() {
@@ -811,7 +812,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setTypeConverterRegistry(TypeConverterRegistry typeConverterRegistry) 
{
-        this.typeConverterRegistry = 
camelContext.getInternalServiceManager().addService(typeConverterRegistry);
+        this.typeConverterRegistry = 
camelContext.getInternalServiceManager().addService(camelContext, 
typeConverterRegistry);
     }
 
     void stopTypeConverter() {
@@ -827,7 +828,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setTypeConverter(TypeConverter typeConverter) {
-        this.typeConverter = 
camelContext.getInternalServiceManager().addService(typeConverter);
+        this.typeConverter = 
camelContext.getInternalServiceManager().addService(camelContext, 
typeConverter);
     }
 
     TypeConverter getOrCreateTypeConverter() {
@@ -857,7 +858,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setInjector(Injector injector) {
-        this.injector = 
camelContext.getInternalServiceManager().addService(injector);
+        this.injector = 
camelContext.getInternalServiceManager().addService(camelContext, injector);
     }
 
     void stopAndShutdownRouteController() {
@@ -876,7 +877,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setRouteController(RouteController routeController) {
-        this.routeController = 
camelContext.getInternalServiceManager().addService(routeController);
+        this.routeController = 
camelContext.getInternalServiceManager().addService(camelContext, 
routeController);
     }
 
     ShutdownStrategy getShutdownStrategy() {
@@ -891,7 +892,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     }
 
     void setShutdownStrategy(ShutdownStrategy shutdownStrategy) {
-        this.shutdownStrategy = 
camelContext.getInternalServiceManager().addService(shutdownStrategy);
+        this.shutdownStrategy = 
camelContext.getInternalServiceManager().addService(camelContext, 
shutdownStrategy);
     }
 
     ExecutorServiceManager getExecutorServiceManager() {
@@ -908,7 +909,8 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     void setExecutorServiceManager(ExecutorServiceManager 
executorServiceManager) {
         // special for executorServiceManager as want to stop it manually so
         // false in stopOnShutdown
-        this.executorServiceManager = 
camelContext.getInternalServiceManager().addService(executorServiceManager, 
false);
+        this.executorServiceManager
+                = 
camelContext.getInternalServiceManager().addService(camelContext, 
executorServiceManager, false);
     }
 
     @Override
@@ -980,7 +982,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
 
     @Override
     public <T> void addContextPlugin(Class<T> type, T module) {
-        final T addedModule = 
camelContext.getInternalServiceManager().addService(module);
+        final T addedModule = 
camelContext.getInternalServiceManager().addService(camelContext, module);
         pluginManager.addContextPlugin(type, addedModule);
     }
 
@@ -992,7 +994,7 @@ class DefaultCamelContextExtension implements 
ExtendedCamelContext {
     private <T> T lazyInitAndAdd(Supplier<T> supplier) {
         T module = supplier.get();
 
-        return camelContext.getInternalServiceManager().addService(module);
+        return 
camelContext.getInternalServiceManager().addService(camelContext, module);
     }
 
     /*
diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalServiceManager.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalServiceManager.java
index e2502da0e2f..affe6b7677c 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalServiceManager.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalServiceManager.java
@@ -47,46 +47,45 @@ import org.slf4j.LoggerFactory;
 final class InternalServiceManager {
     private static final Logger LOG = 
LoggerFactory.getLogger(InternalServiceManager.class);
 
-    private final CamelContext camelContext;
     private final InternalRouteStartupManager internalRouteStartupManager;
 
     private final DeferServiceStartupListener deferStartupListener = new 
DeferServiceStartupListener();
     private final List<Service> services = new CopyOnWriteArrayList<>();
 
-    InternalServiceManager(CamelContext camelContext, 
InternalRouteStartupManager internalRouteStartupManager,
-                           List<StartupListener> startupListeners) {
+    InternalServiceManager(InternalRouteStartupManager 
internalRouteStartupManager, List<StartupListener> startupListeners) {
         /*
          Note: this is an internal API and not meant to be public, so it uses 
assertion for lightweight nullability
          checking for extremely unlikely scenarios that should be found during 
development time.
          */
-        assert camelContext != null : "the Camel context cannot be null";
         assert internalRouteStartupManager != null : "the 
internalRouteStartupManager cannot be null";
         assert startupListeners != null : "the startupListeners cannot be 
null";
 
-        this.camelContext = camelContext;
         this.internalRouteStartupManager = internalRouteStartupManager;
 
         startupListeners.add(deferStartupListener);
     }
 
-    public <T> T addService(T object) {
-        return addService(object, true);
+    public <T> T addService(CamelContext camelContext, T object) {
+        return addService(camelContext, object, true);
     }
 
-    public <T> T addService(T object, boolean stopOnShutdown) {
-        return addService(object, stopOnShutdown, true, true);
+    public <T> T addService(CamelContext camelContext, T object, boolean 
stopOnShutdown) {
+        return addService(camelContext, object, stopOnShutdown, true, true);
     }
 
-    public <T> T addService(T object, boolean stopOnShutdown, boolean 
forceStart, boolean useLifecycleStrategies) {
+    public <T> T addService(
+            CamelContext camelContext, T object, boolean stopOnShutdown, 
boolean forceStart, boolean useLifecycleStrategies) {
         try {
-            doAddService(object, stopOnShutdown, forceStart, 
useLifecycleStrategies);
+            doAddService(camelContext, object, stopOnShutdown, forceStart, 
useLifecycleStrategies);
         } catch (Exception e) {
             throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
         return object;
     }
 
-    public void doAddService(Object object, boolean stopOnShutdown, boolean 
forceStart, boolean useLifecycleStrategies)
+    public void doAddService(
+            CamelContext camelContext, Object object, boolean stopOnShutdown, 
boolean forceStart,
+            boolean useLifecycleStrategies)
             throws Exception {
 
         if (object == null) {
@@ -147,14 +146,14 @@ final class InternalServiceManager {
                         ServiceHelper.startService(service);
                     } else {
                         ServiceHelper.initService(service);
-                        deferStartService(object, stopOnShutdown, true);
+                        deferStartService(camelContext, object, 
stopOnShutdown, true);
                     }
                 }
             }
         }
     }
 
-    public void deferStartService(Object object, boolean stopOnShutdown, 
boolean startEarly) {
+    public void deferStartService(CamelContext camelContext, Object object, 
boolean stopOnShutdown, boolean startEarly) {
         if (object instanceof Service) {
             Service service = (Service) object;
 
@@ -223,7 +222,7 @@ final class InternalServiceManager {
         return null;
     }
 
-    public void stopConsumers() {
+    public void stopConsumers(CamelContext camelContext) {
         for (Service service : services) {
             if (service instanceof Consumer) {
                 InternalServiceManager.shutdownServices(camelContext, service);
@@ -231,7 +230,7 @@ final class InternalServiceManager {
         }
     }
 
-    public void shutdownServices() {
+    public void shutdownServices(CamelContext camelContext) {
         InternalServiceManager.shutdownServices(camelContext, services);
         services.clear();
     }

Reply via email to