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

Reply via email to