This is an automated email from the ASF dual-hosted git repository. davsclaus 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 d882a8c8eb4 CAMEL-22126: camel-core - Add API in JMX to get all managed route mbeans d882a8c8eb4 is described below commit d882a8c8eb4cc82ef46c1b4db4813734a97cc6dc Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri May 30 14:19:39 2025 +0200 CAMEL-22126: camel-core - Add API in JMX to get all managed route mbeans --- .../camel/api/management/ManagedCamelContext.java | 9 ++++++++ .../camel/management/ManagedCamelContextImpl.java | 24 +++++++++++++++++++++- .../camel/management/ManagedCamelContextTest.java | 6 ++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedCamelContext.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedCamelContext.java index d8a11acd886..02b33095543 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedCamelContext.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/ManagedCamelContext.java @@ -22,6 +22,8 @@ import org.apache.camel.api.management.mbean.ManagedProcessorMBean; import org.apache.camel.api.management.mbean.ManagedRouteMBean; import org.apache.camel.api.management.mbean.ManagedStepMBean; +import java.util.List; + public interface ManagedCamelContext { /** @@ -79,6 +81,13 @@ public interface ManagedCamelContext { */ <T extends ManagedRouteMBean> T getManagedRoute(String routeId, Class<T> type); + /** + * Gets all the managed routes + * + * @return the routes or an empty list if no routes exists + */ + List<ManagedRouteMBean> getManagedRoutes(); + /** * Gets the managed consumer client api from any of the routes which with the given route id * diff --git a/core/camel-management/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java b/core/camel-management/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java index 59ec9fac7d4..6ce6925fe84 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/ManagedCamelContextImpl.java @@ -16,6 +16,9 @@ */ package org.apache.camel.management; +import java.util.ArrayList; +import java.util.List; + import javax.management.MalformedObjectNameException; import javax.management.ObjectName; @@ -107,7 +110,6 @@ public class ManagedCamelContextImpl implements ManagedCamelContext { } Route route = camelContext.getRoute(routeId); - if (route != null) { try { ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForRoute(route); @@ -120,6 +122,26 @@ public class ManagedCamelContextImpl implements ManagedCamelContext { return null; } + @Override + public List<ManagedRouteMBean> getManagedRoutes() { + // jmx must be enabled + if (getManagementStrategy().getManagementAgent() == null) { + return null; + } + + List<ManagedRouteMBean> answer = new ArrayList<>(); + for (Route route : camelContext.getRoutes()) { + try { + ObjectName on = getManagementStrategy().getManagementObjectNameStrategy().getObjectNameForRoute(route); + ManagedRouteMBean mr = getManagementStrategy().getManagementAgent().newProxyClient(on, ManagedRouteMBean.class); + answer.add(mr); + } catch (MalformedObjectNameException e) { + throw RuntimeCamelException.wrapRuntimeCamelException(e); + } + } + return answer; + } + @Override public <T extends ManagedConsumerMBean> T getManagedConsumer(String id, Class<T> type) { // jmx must be enabled diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java index 9bafe81bae9..df72f03f8fb 100644 --- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java +++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java @@ -17,6 +17,7 @@ package org.apache.camel.management; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Set; @@ -26,6 +27,7 @@ import javax.management.ObjectName; import org.apache.camel.CamelContext; import org.apache.camel.api.management.ManagedCamelContext; import org.apache.camel.api.management.mbean.ManagedCamelContextMBean; +import org.apache.camel.api.management.mbean.ManagedRouteMBean; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.impl.RefDataFormatTest; @@ -66,6 +68,10 @@ public class ManagedCamelContextTest extends ManagementTestSupport { assertEquals("my-camel-context", client.getCamelId()); assertEquals("My special Camel description", client.getCamelDescription()); assertEquals("Started", client.getState()); + + List<ManagedRouteMBean> routes + = context.getCamelContextExtension().getContextPlugin(ManagedCamelContext.class).getManagedRoutes(); + assertEquals(2, routes.size()); } @Test