CAMEL-8531: Make it easy to get the management mbean for a given process by its id
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a24a781b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a24a781b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a24a781b Branch: refs/heads/master Commit: a24a781b13a46577843fee06f0f0b7b1b67b6bb7 Parents: 2fcd594 Author: Claus Ibsen <davscl...@apache.org> Authored: Tue Mar 24 08:40:36 2015 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Mar 24 08:41:24 2015 +0100 ---------------------------------------------------------------------- .../java/org/apache/camel/CamelContext.java | 10 ++++++++-- .../apache/camel/impl/DefaultCamelContext.java | 10 ++++++++++ .../management/ManagedCamelContextTest.java | 20 +++++++++++++++++++- 3 files changed, 37 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/a24a781b/camel-core/src/main/java/org/apache/camel/CamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java index 51888c8..4b2b246 100644 --- a/camel-core/src/main/java/org/apache/camel/CamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java @@ -25,6 +25,7 @@ import java.util.Properties; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import org.apache.camel.api.management.mbean.ManagedCamelContextMBean; import org.apache.camel.api.management.mbean.ManagedProcessorMBean; import org.apache.camel.api.management.mbean.ManagedRouteMBean; import org.apache.camel.builder.ErrorHandlerBuilder; @@ -534,7 +535,7 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { <T extends Processor> T getProcessor(String id, Class<T> type); /** - * Gets the managed processor from any of the routes which with the given id + * Gets the managed processor client api from any of the routes which with the given id * * @param id id of the processor * @param type the managed processor type from the {@link org.apache.camel.api.management.mbean} package. @@ -544,7 +545,7 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { <T extends ManagedProcessorMBean> T getManagedProcessor(String id, Class<T> type); /** - * Gets the managed route with the given route id + * Gets the managed route client api with the given route id * * @param routeId id of the route * @param type the managed route type from the {@link org.apache.camel.api.management.mbean} package. @@ -554,6 +555,11 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { <T extends ManagedRouteMBean> T getManagedRoute(String routeId, Class<T> type); /** + * Gets the managed Camel context client api + */ + ManagedCamelContextMBean getManagedCamelContext(); + + /** * Gets the processor definition from any of the routes which with the given id * * @param id id of the processor definition http://git-wip-us.apache.org/repos/asf/camel/blob/a24a781b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index 25956e0..1152600 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -74,6 +74,7 @@ import org.apache.camel.StatefulService; import org.apache.camel.SuspendableService; import org.apache.camel.TypeConverter; import org.apache.camel.VetoCamelContextStartException; +import org.apache.camel.api.management.mbean.ManagedCamelContextMBean; import org.apache.camel.api.management.mbean.ManagedProcessorMBean; import org.apache.camel.api.management.mbean.ManagedRouteMBean; import org.apache.camel.builder.ErrorHandlerBuilder; @@ -762,6 +763,15 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon return null; } + public ManagedCamelContextMBean getManagedCamelContext() { + try { + ObjectName on = getManagementStrategy().getManagementNamingStrategy().getObjectNameForCamelContext(this); + return getManagementStrategy().getManagementAgent().newProxyClient(on, ManagedCamelContextMBean.class); + } catch (MalformedObjectNameException e) { + throw ObjectHelper.wrapRuntimeCamelException(e); + } + } + public ProcessorDefinition getProcessorDefinition(String id) { for (RouteDefinition route : getRouteDefinitions()) { Iterator<ProcessorDefinition> it = ProcessorDefinitionHelper.filterTypeInOutputs(route.getOutputs(), ProcessorDefinition.class); http://git-wip-us.apache.org/repos/asf/camel/blob/a24a781b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java index c92eead..3807dc0 100644 --- a/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java +++ b/camel-core/src/test/java/org/apache/camel/management/ManagedCamelContextTest.java @@ -17,13 +17,14 @@ package org.apache.camel.management; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Properties; - import javax.management.MBeanServer; import javax.management.ObjectName; import org.apache.camel.CamelContext; +import org.apache.camel.api.management.mbean.ManagedCamelContextMBean; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.util.StringHelper; @@ -41,6 +42,23 @@ public class ManagedCamelContextTest extends ManagementTestSupport { return context; } + public void testManagedCamelContextClient() throws Exception { + // JMX tests dont work well on AIX CI servers (hangs them) + if (isPlatform("aix")) { + return; + } + + ManagedCamelContextMBean client = context.getManagedCamelContext(); + assertNotNull(client); + + assertEquals("camel-1", client.getCamelId()); + assertEquals("Started", client.getState()); + + List<String> names = client.findComponentNames(); + assertNotNull(names); + assertTrue(names.contains("mock")); + } + public void testManagedCamelContext() throws Exception { // JMX tests dont work well on AIX CI servers (hangs them) if (isPlatform("aix")) {