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

Reply via email to