Added mbean operation to browse endpoint registry as tabular data.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bea785f6 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bea785f6 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bea785f6 Branch: refs/heads/master Commit: bea785f64ab0cbcb3d30637ee4dde680037e3874 Parents: 125a4e9 Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Nov 6 11:52:39 2014 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Nov 7 13:25:18 2014 +0100 ---------------------------------------------------------------------- .../management/mbean/CamelOpenMBeanTypes.java | 11 +++++++ .../mbean/ManagedEndpointRegistryMBean.java | 5 ++++ .../mbean/ManagedEndpointRegistry.java | 31 ++++++++++++++++++++ .../management/ManagedEndpointRegistryTest.java | 7 +++++ 4 files changed, 54 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/bea785f6/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java index 3102713..52eee75 100644 --- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java @@ -53,4 +53,15 @@ public final class CamelOpenMBeanTypes { SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING}); } + public static TabularType listEndpointsTabularType() throws OpenDataException { + CompositeType ct = listEndpointsCompositeType(); + return new TabularType("listEndpoints", "Lists all the endpoints in the registry", ct, new String[]{"url"}); + } + + public static CompositeType listEndpointsCompositeType() throws OpenDataException { + return new CompositeType("url", "Endpoints", new String[]{"url"}, + new String[]{"Url"}, + new OpenType[]{SimpleType.STRING}); + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/bea785f6/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java index b2391f4..0cf0930 100644 --- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointRegistryMBean.java @@ -16,6 +16,8 @@ */ package org.apache.camel.api.management.mbean; +import javax.management.openmbean.TabularData; + import org.apache.camel.api.management.ManagedAttribute; import org.apache.camel.api.management.ManagedOperation; @@ -33,4 +35,7 @@ public interface ManagedEndpointRegistryMBean extends ManagedServiceMBean { @ManagedOperation(description = "Purges the cache") void purge(); + @ManagedOperation(description = "Lists all the endpoints in the registry (url)") + TabularData listEndpoints(); + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/bea785f6/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java index 80cd79d..7468b09 100644 --- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java @@ -16,10 +16,20 @@ */ package org.apache.camel.management.mbean; +import java.util.Collection; +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.CompositeDataSupport; +import javax.management.openmbean.CompositeType; +import javax.management.openmbean.TabularData; +import javax.management.openmbean.TabularDataSupport; + import org.apache.camel.CamelContext; +import org.apache.camel.Endpoint; import org.apache.camel.api.management.ManagedResource; +import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes; import org.apache.camel.api.management.mbean.ManagedEndpointRegistryMBean; import org.apache.camel.impl.EndpointRegistry; +import org.apache.camel.util.ObjectHelper; /** * @version @@ -53,4 +63,25 @@ public class ManagedEndpointRegistry extends ManagedService implements ManagedEn endpointRegistry.purge(); } + @Override + public TabularData listEndpoints() { + try { + TabularData answer = new TabularDataSupport(CamelOpenMBeanTypes.listEndpointsTabularType()); + Collection<Endpoint> endpoints = endpointRegistry.values(); + for (Endpoint endpoint : endpoints) { + CompositeType ct = CamelOpenMBeanTypes.listEndpointsCompositeType(); + String url = endpoint.getEndpointUri(); + + CompositeData data = new CompositeDataSupport(ct, new String[] + {"url"}, + new Object[]{url}); + answer.put(data); + } + return answer; + } catch (Exception e) { + throw ObjectHelper.wrapRuntimeCamelException(e); + } + } + + } http://git-wip-us.apache.org/repos/asf/camel/blob/bea785f6/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java index cf4ba59..6334331 100644 --- a/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java +++ b/camel-core/src/test/java/org/apache/camel/management/ManagedEndpointRegistryTest.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Set; import javax.management.MBeanServer; import javax.management.ObjectName; +import javax.management.openmbean.TabularData; import org.apache.camel.builder.RouteBuilder; @@ -65,11 +66,17 @@ public class ManagedEndpointRegistryTest extends ManagementTestSupport { assertTrue(source.startsWith("EndpointRegistry")); assertTrue(source.endsWith("capacity: 1000")); + TabularData data = (TabularData) mbeanServer.invoke(on, "listEndpoints", null, null); + assertEquals(2, data.size()); + // purge mbeanServer.invoke(on, "purge", null, null); current = (Integer) mbeanServer.getAttribute(on, "Size"); assertEquals(0, current.intValue()); + + data = (TabularData) mbeanServer.invoke(on, "listEndpoints", null, null); + assertEquals(0, data.size()); } @Override