CAMEL-7620: Rest DSL. Enlist rest services in RestRegistry and JMX.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e30fd9f5 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e30fd9f5 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e30fd9f5 Branch: refs/heads/master Commit: e30fd9f5717511e531edfb4660d619b5c46f62e7 Parents: 93ae72f Author: Claus Ibsen <davscl...@apache.org> Authored: Wed Jul 30 16:22:14 2014 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Jul 30 16:22:14 2014 +0200 ---------------------------------------------------------------------- .../api/management/mbean/CamelOpenMBeanTypes.java | 7 ++++--- .../org/apache/camel/impl/DefaultRestRegistry.java | 15 +++++++++++++++ .../camel/management/mbean/ManagedRestRegistry.java | 5 +++-- .../main/java/org/apache/camel/spi/RestRegistry.java | 2 ++ 4 files changed, 24 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/e30fd9f5/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 d5736bc..6ef4b81 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 @@ -42,12 +42,13 @@ public final class CamelOpenMBeanTypes { public static TabularType listRestServicesTabularType() throws OpenDataException { CompositeType ct = listRestServicesCompositeType(); - return new TabularType("listRestServices", "Lists all the rest services in the registry", ct, new String[]{"url", "path", "verb", "consumes", "produces"}); + return new TabularType("listRestServices", "Lists all the rest services in the registry", ct, new String[]{"url", "path", "verb", "consumes", "produces", "state"}); } public static CompositeType listRestServicesCompositeType() throws OpenDataException { - return new CompositeType("types", "types", new String[]{"url", "path", "verb", "consumes", "produces"}, - new String[]{"Url", "Path", "Verb", "Consumes", "Produces"}, new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING}); + return new CompositeType("types", "types", new String[]{"url", "path", "verb", "consumes", "produces", "state"}, + new String[]{"Url", "Path", "Verb", "Consumes", "Produces", "State"}, + new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING}); } http://git-wip-us.apache.org/repos/asf/camel/blob/e30fd9f5/camel-core/src/main/java/org/apache/camel/impl/DefaultRestRegistry.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRestRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRestRegistry.java index 612e9ed..6d8ea81 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRestRegistry.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRestRegistry.java @@ -22,6 +22,8 @@ import java.util.List; import java.util.Map; import org.apache.camel.Consumer; +import org.apache.camel.ServiceStatus; +import org.apache.camel.StatefulService; import org.apache.camel.StaticService; import org.apache.camel.spi.RestRegistry; @@ -102,5 +104,18 @@ public class DefaultRestRegistry extends ServiceSupport implements StaticService public String getProduces() { return produces; } + + public String getState() { + // must use String type to be sure remote JMX can read the attribute without requiring Camel classes. + ServiceStatus status = null; + if (consumer instanceof StatefulService) { + status = ((StatefulService) consumer).getStatus(); + } + // if no status exists then its stopped + if (status == null) { + status = ServiceStatus.Stopped; + } + return status.name(); + } } } http://git-wip-us.apache.org/repos/asf/camel/blob/e30fd9f5/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 99bf3f5..89c3030 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 @@ -64,8 +64,9 @@ public class ManagedRestRegistry extends ManagedService implements ManagedRestRe String verb = entry.getVerb(); String consumes = entry.getConsumes(); String produces = entry.getProduces(); - CompositeData data = new CompositeDataSupport(ct, new String[]{"url", "path", "verb", "consumes", "produces"}, - new Object[]{url, path, verb, consumes, produces}); + String state = entry.getState(); + CompositeData data = new CompositeDataSupport(ct, new String[]{"url", "path", "verb", "consumes", "produces", "state"}, + new Object[]{url, path, verb, consumes, produces, state}); answer.put(data); } return answer; http://git-wip-us.apache.org/repos/asf/camel/blob/e30fd9f5/camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java b/camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java index 3509b6d..1b0d6af 100644 --- a/camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java +++ b/camel-core/src/main/java/org/apache/camel/spi/RestRegistry.java @@ -36,6 +36,8 @@ public interface RestRegistry extends Service { String getConsumes(); String getProduces(); + + String getState(); } void addRestService(Consumer consumer, String url, String path, String verb, String consumes, String produces);