You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/06/22 10:42:00 UTC

svn commit: r1138337 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/management/mbean/ManagedCamelContext.java test/java/org/apache/camel/management/ManagedCamelContextTest.java

Author: davsclaus
Date: Wed Jun 22 08:42:00 2011
New Revision: 1138337

URL: http://svn.apache.org/viewvc?rev=1138337&view=rev
Log:
CAMEL-4122: Added API on ManagedCamelContext to create/remove endpoints.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java?rev=1138337&r1=1138336&r2=1138337&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java Wed Jun 22 08:42:00 2011
@@ -17,11 +17,13 @@
 package org.apache.camel.management.mbean;
 
 import java.io.InputStream;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.model.RouteDefinition;
@@ -238,4 +240,40 @@ public class ManagedCamelContext {
         context.addRouteDefinitions(def.getRoutes());
     }
 
+    /**
+     * Creates the endpoint by the given uri
+     *
+     * @param uri uri of endpoint to create
+     * @return <tt>true</tt> if a new endpoint was created, <tt>false</tt> if the endpoint already existed
+     * @throws Exception is thrown if error occurred
+     */
+    @ManagedOperation(description = "Creates the endpoint by the given uri")
+    public boolean createEndpoint(String uri) throws Exception {
+        if (context.hasEndpoint(uri) != null) {
+            // endpoint already exists
+            return false;
+        }
+        // create new endpoint by just getting it
+        context.getEndpoint(uri);
+        return true;
+    }
+
+    /**
+     * Removes the endpoint by the given pattern
+     *
+     * @param pattern the pattern
+     * @return number of endpoints removed
+     * @throws Exception is thrown if error occurred
+     * @see CamelContext#removeEndpoints(String)
+     */
+    @ManagedOperation(description = "Removes endpoints by the given pattern")
+    public int removeEndpoints(String pattern) throws Exception {
+        Collection<Endpoint> removed = context.removeEndpoints(pattern);
+        if (removed == null) {
+            return 0;
+        } else {
+            return removed.size();
+        }
+    }
+
 }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java?rev=1138337&r1=1138336&r2=1138337&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java Wed Jun 22 08:42:00 2011
@@ -82,6 +82,50 @@ public class ManagedCamelContextTest ext
         mbeanServer.invoke(on, "stop", null, null);
     }
 
+    public void testManagedCamelContextCreateEndpoint() throws Exception {
+        MBeanServer mbeanServer = getMBeanServer();
+
+        ObjectName on = ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=context,name=\"camel-1\"");
+
+        assertNull(context.hasEndpoint("seda:bar"));
+
+        // create a new endpoint
+        Object reply = mbeanServer.invoke(on, "createEndpoint", new Object[]{"seda:bar"}, new String[]{"java.lang.String"});
+        assertEquals(Boolean.TRUE, reply);
+
+        assertNotNull(context.hasEndpoint("seda:bar"));
+
+        // create it again
+        reply = mbeanServer.invoke(on, "createEndpoint", new Object[]{"seda:bar"}, new String[]{"java.lang.String"});
+        assertEquals(Boolean.FALSE, reply);
+    }
+
+    public void testManagedCamelContextRemoveEndpoint() throws Exception {
+        MBeanServer mbeanServer = getMBeanServer();
+
+        ObjectName on = ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=context,name=\"camel-1\"");
+
+        assertNull(context.hasEndpoint("seda:bar"));
+
+        // create a new endpoint
+        Object reply = mbeanServer.invoke(on, "createEndpoint", new Object[]{"seda:bar"}, new String[]{"java.lang.String"});
+        assertEquals(Boolean.TRUE, reply);
+
+        assertNotNull(context.hasEndpoint("seda:bar"));
+
+        // remove it
+        Object num = mbeanServer.invoke(on, "removeEndpoints", new Object[]{"seda:*"}, new String[]{"java.lang.String"});
+        assertEquals(1, num);
+
+        assertNull(context.hasEndpoint("seda:bar"));
+
+        // remove it again
+        num = mbeanServer.invoke(on, "removeEndpoints", new Object[]{"seda:*"}, new String[]{"java.lang.String"});
+        assertEquals(0, num);
+
+        assertNull(context.hasEndpoint("seda:bar"));
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {