Repository: camel Updated Branches: refs/heads/master 6dc937a00 -> 3ba805987
CAMEL-9156: Add JMX api for the swagger api Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/35b59f13 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/35b59f13 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/35b59f13 Branch: refs/heads/master Commit: 35b59f1370781d858d7a0c468d5a8482055c2107 Parents: 6dc937a Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Sep 24 10:11:14 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Sep 24 10:11:14 2015 +0200 ---------------------------------------------------------------------- .../mbean/ManagedRestRegistryMBean.java | 3 ++ .../management/mbean/ManagedRestRegistry.java | 40 ++++++++++++++++++++ .../management/ManagedRestRegistryTest.java | 4 ++ 3 files changed, 47 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/35b59f13/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java index 804d294..1153b40 100644 --- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRestRegistryMBean.java @@ -29,4 +29,7 @@ public interface ManagedRestRegistryMBean extends ManagedServiceMBean { @ManagedOperation(description = "Lists all the Rest services in the registry (url, path, verb, consumes, produces)") TabularData listRestServices(); + @ManagedOperation(description = "Outputs the Rest services API documentation in JSon (requires camel-swagger-java on classpath)") + String apiDocAsJson(); + } http://git-wip-us.apache.org/repos/asf/camel/blob/35b59f13/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java index 244182e..e9e5f7c 100644 --- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java @@ -17,6 +17,7 @@ package org.apache.camel.management.mbean; import java.util.List; +import java.util.Map; import javax.management.openmbean.CompositeData; import javax.management.openmbean.CompositeDataSupport; import javax.management.openmbean.CompositeType; @@ -24,11 +25,15 @@ import javax.management.openmbean.TabularData; import javax.management.openmbean.TabularDataSupport; import org.apache.camel.CamelContext; +import org.apache.camel.Endpoint; +import org.apache.camel.Exchange; +import org.apache.camel.Producer; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes; import org.apache.camel.api.management.mbean.ManagedRestRegistryMBean; import org.apache.camel.spi.RestRegistry; import org.apache.camel.util.ObjectHelper; +import org.apache.camel.util.ServiceHelper; /** * @@ -82,4 +87,39 @@ public class ManagedRestRegistry extends ManagedService implements ManagedRestRe throw ObjectHelper.wrapRuntimeCamelException(e); } } + + @Override + public String apiDocAsJson() { + // see if there is a rest-api endpoint which would be the case if rest api-doc has been explicit enabled + Endpoint found = null; + for (Map.Entry<String, Endpoint> entry : getContext().getEndpointMap().entrySet()) { + String uri = entry.getKey(); + if (uri.startsWith("rest-api")) { + found = entry.getValue(); + break; + } + } + + try { + if (found != null) { + Producer producer = found.createProducer(); + ServiceHelper.startService(producer); + + try { + Exchange dummy = found.createExchange(); + producer.process(dummy); + + String json = dummy.hasOut() ? dummy.getOut().getBody(String.class) : dummy.getIn().getBody(String.class); + return json; + } finally { + ServiceHelper.stopService(producer); + } + } + } catch (Exception e) { + throw ObjectHelper.wrapRuntimeCamelException(e); + } + + return null; + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/35b59f13/camel-core/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java index a6976be..5f07d8c 100644 --- a/camel-core/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java +++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRestRegistryTest.java @@ -64,6 +64,10 @@ public class ManagedRestRegistryTest extends ManagementTestSupport { TabularData data = (TabularData) mbeanServer.invoke(name, "listRestServices", null, null); assertEquals(3, data.size()); + // should not be enabled as api-doc is not enabled or camel-swagger-java is not on classpath + String json = (String) mbeanServer.invoke(name, "apiDocAsJson", null, null); + assertNull(json); + // remove all routes for (Route route : context.getRoutes()) { context.stopRoute(route.getId());