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 <[email protected]>
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