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/04/03 19:13:26 UTC

[camel] 02/05: CAMEL-15105: move RouteController ownership to the context extension

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 9851e558350330451e9e59372be4fb745d366bec
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Apr 3 18:51:39 2023 +0200

    CAMEL-15105: move RouteController ownership to the context extension
---
 .../org/apache/camel/impl/engine/AbstractCamelContext.java     |  1 -
 .../apache/camel/impl/engine/DefaultCamelContextExtension.java |  4 +++-
 .../java/org/apache/camel/builder/AddRoutesAtRuntimeTest.java  | 10 +++++-----
 3 files changed, 8 insertions(+), 7 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 3c8728517f5..79795930364 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
@@ -199,7 +199,6 @@ public abstract class AbstractCamelContext extends BaseService
 
     protected final InternalServiceManager internalServiceManager;
 
-    final RouteController internalRouteController = new InternalRouteController(this);
     volatile StartupStepRecorder startupStepRecorder = new DefaultStartupStepRecorder();
     int defaultRouteStartupOrder = 1000;
 
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 06a7f54ca6b..dc728c9faec 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
@@ -78,6 +78,7 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
     private final Map<String, FactoryFinder> bootstrapFactories = new ConcurrentHashMap<>();
     private final Set<LogListener> logListeners = new LinkedHashSet<>();
     private final PluginManager pluginManager = new DefaultContextPluginManager();
+    private final RouteController internalRouteController;
 
     // start auto assigning route ids using numbering 1000 and upwards
     private final List<BootstrapCloseable> bootstraps = new CopyOnWriteArrayList<>();
@@ -104,6 +105,7 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
 
     public DefaultCamelContextExtension(AbstractCamelContext camelContext) {
         this.camelContext = camelContext;
+        this.internalRouteController = new InternalRouteController(camelContext);
     }
 
     @Override
@@ -536,7 +538,7 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
 
     @Override
     public RouteController getInternalRouteController() {
-        return camelContext.internalRouteController;
+        return internalRouteController;
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/AddRoutesAtRuntimeTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/AddRoutesAtRuntimeTest.java
index e28606849e9..5ade2f876cd 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/AddRoutesAtRuntimeTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/AddRoutesAtRuntimeTest.java
@@ -16,13 +16,12 @@
  */
 package org.apache.camel.builder;
 
-import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.impl.engine.AbstractCamelContext;
-import org.apache.camel.util.ReflectionHelper;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -47,8 +46,9 @@ public class AddRoutesAtRuntimeTest extends ContextTestSupport {
         assertEquals(2, context.getRoutes().size());
 
         // use reflection to test that we do not leak bootstraps when dynamic adding routes
-        Field f = AbstractCamelContext.class.getDeclaredField("bootstraps");
-        Assertions.assertEquals(0, ((List) ReflectionHelper.getField(f, context)).size());
+        Method m = AbstractCamelContext.class.getDeclaredMethod("getBootstraps");
+        m.setAccessible(true);
+        Assertions.assertEquals(0, ((List) m.invoke(context)).size());
 
         getMockEndpoint("mock:bar").expectedMessageCount(1);
         context.addRoutes(new MyDynamcRouteBuilder(context, "direct:bar", "mock:bar"));
@@ -57,7 +57,7 @@ public class AddRoutesAtRuntimeTest extends ContextTestSupport {
         assertEquals(3, context.getRoutes().size());
 
         // use reflection to test that we do not leak bootstraps when dynamic adding routes
-        Assertions.assertEquals(0, ((List) ReflectionHelper.getField(f, context)).size());
+        Assertions.assertEquals(0, ((List) m.invoke(context)).size());
     }
 
     @Override