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:52 UTC

[camel] 04/06: CAMEL-19998: cleanup route controller 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 76db106418efec4b9a5fc3cd1d4a261daac1b25f
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Oct 17 09:15:55 2023 +0200

    CAMEL-19998: cleanup route controller API
---
 .../camel/impl/engine/AbstractCamelContext.java      | 18 +++++-------------
 .../impl/engine/DefaultCamelContextExtension.java    | 20 ++++++++++++++++++++
 2 files changed, 25 insertions(+), 13 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 db0c9e47f0a..e4f86be0781 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
@@ -263,7 +263,6 @@ public abstract class AbstractCamelContext extends BaseService
     private Map<String, String> globalOptions = new HashMap<>();
     private volatile ShutdownStrategy shutdownStrategy;
     private volatile ExecutorServiceManager executorServiceManager;
-    private volatile RouteController routeController;
     private EndpointRegistry<NormalizedUri> endpoints;
     private RuntimeEndpointRegistry runtimeEndpointRegistry;
     private ShutdownRoute shutdownRoute = ShutdownRoute.Default;
@@ -922,19 +921,12 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public RouteController getRouteController() {
-        if (routeController == null) {
-            synchronized (lock) {
-                if (routeController == null) {
-                    setRouteController(createRouteController());
-                }
-            }
-        }
-        return routeController;
+        return camelContextExtension.getRouteController();
     }
 
     @Override
     public void setRouteController(RouteController routeController) {
-        this.routeController = internalServiceManager.addService(routeController);
+        camelContextExtension.setRouteController(routeController);
     }
 
     @Override
@@ -2130,7 +2122,7 @@ public abstract class AbstractCamelContext extends BaseService
         StartupStep step = startupStepRecorder.beginStep(CamelContext.class, null, "Init CamelContext");
 
         // init the route controller
-        this.routeController = getRouteController();
+        final RouteController routeController = getRouteController();
         if (startupSummaryLevel == StartupSummaryLevel.Verbose) {
             // verbose startup should let route controller do the route startup logging
             if (routeController.getLoggingLevel().ordinal() < LoggingLevel.INFO.ordinal()) {
@@ -2372,7 +2364,7 @@ public abstract class AbstractCamelContext extends BaseService
         stopWatch.restart();
 
         // Start the route controller
-        startService(this.routeController);
+        startService(camelContextExtension.getRouteController());
 
         doNotStartRoutesOnFirstStart = !firstStartDone && !isAutoStartup();
 
@@ -2759,7 +2751,7 @@ public abstract class AbstractCamelContext extends BaseService
         EventHelper.notifyCamelContextRoutesStopping(this);
 
         // Stop the route controller
-        ServiceHelper.stopAndShutdownService(this.routeController);
+        camelContextExtension.stopAndShutdownRouteController();
 
         // stop route inputs in the same order as they were started, so we stop
         // the very first inputs at first
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 f7ff8da84d4..7fe9c766e05 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
@@ -124,6 +124,7 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
     private volatile ValidatorRegistry<ValidatorKey> validatorRegistry;
     private volatile TypeConverterRegistry typeConverterRegistry;
     private volatile TypeConverter typeConverter;
+    private volatile RouteController routeController;
 
     private volatile Injector injector;
 
@@ -852,6 +853,25 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         this.injector = camelContext.getInternalServiceManager().addService(injector);
     }
 
+    void stopAndShutdownRouteController() {
+        ServiceHelper.stopAndShutdownService(this.routeController);
+    }
+
+    RouteController getRouteController() {
+        if (routeController == null) {
+            synchronized (lock) {
+                if (routeController == null) {
+                    setRouteController(camelContext.createRouteController());
+                }
+            }
+        }
+        return routeController;
+    }
+
+    void setRouteController(RouteController routeController) {
+        this.routeController = camelContext.getInternalServiceManager().addService(routeController);
+    }
+
     @Override
     public RouteController getInternalRouteController() {
         return internalRouteController;