CAMEL-8313: rest-dsl include route id in the rest service jmx api.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/994483a7 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/994483a7 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/994483a7 Branch: refs/heads/camel-2.14.x Commit: 994483a754aa15395d6162c152262794650b0545 Parents: 92135be Author: Claus Ibsen <[email protected]> Authored: Mon Dec 8 14:50:33 2014 +0100 Committer: Claus Ibsen <[email protected]> Committed: Mon Dec 8 14:51:08 2014 +0100 ---------------------------------------------------------------------- .../camel/api/management/mbean/CamelOpenMBeanTypes.java | 6 +++--- .../org/apache/camel/component/rest/RestEndpoint.java | 6 ++++-- .../java/org/apache/camel/impl/DefaultRestRegistry.java | 12 +++++++++--- .../camel/management/mbean/ManagedRestRegistry.java | 5 +++-- .../org/apache/camel/model/rest/RestDefinition.java | 4 ++++ .../main/java/org/apache/camel/spi/RestRegistry.java | 8 +++++++- .../camel/management/ManagedRestRegistryTest.java | 9 ++++----- 7 files changed, 34 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/994483a7/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..45b3745 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 @@ -47,9 +47,9 @@ public final class CamelOpenMBeanTypes { } public static CompositeType listRestServicesCompositeType() throws OpenDataException { - return new CompositeType("rests", "Rest Services", new String[]{"url", "baseUrl", "basePath", "uriTemplate", "method", "consumes", "produces", "inType", "outType", "state"}, - new String[]{"Url", "Base Url", "Base Path", "Uri Template", "Method", "Consumes", "Produces", "Input Type", "Output Type", "State"}, - new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, + return new CompositeType("rests", "Rest Services", new String[]{"url", "baseUrl", "basePath", "uriTemplate", "method", "consumes", "produces", "inType", "outType", "state", "routeId"}, + new String[]{"Url", "Base Url", "Base Path", "Uri Template", "Method", "Consumes", "Produces", "Input Type", "Output Type", "State", "Route Id"}, + new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING}); } http://git-wip-us.apache.org/repos/asf/camel/blob/994483a7/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java index 1e2aac8..0ea94ac 100644 --- a/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java +++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestEndpoint.java @@ -228,11 +228,13 @@ public class RestEndpoint extends DefaultEndpoint { String inType = (String) getParameters().get("inType"); String outType = (String) getParameters().get("outType"); + // the route id when using rest-dsl + String routeId = (String) getParameters().get("routeId"); + // add to rest registry so we can keep track of them, we will remove from the registry when the consumer is removed // the rest registry will automatic keep track when the consumer is removed, // and un-register the REST service from the registry - getCamelContext().getRestRegistry().addRestService(consumer, url, baseUrl, getPath(), getUriTemplate(), getMethod(), getConsumes(), getProduces(), inType, outType); - + getCamelContext().getRestRegistry().addRestService(consumer, url, baseUrl, getPath(), getUriTemplate(), getMethod(), getConsumes(), getProduces(), inType, outType, routeId); return consumer; } else { throw new IllegalStateException("Cannot find RestConsumerFactory in Registry or as a Component to use"); http://git-wip-us.apache.org/repos/asf/camel/blob/994483a7/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 f32c5c5..4da2987 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 @@ -40,8 +40,8 @@ public class DefaultRestRegistry extends ServiceSupport implements StaticService private final Map<Consumer, RestService> registry = new LinkedHashMap<Consumer, RestService>(); public void addRestService(Consumer consumer, String url, String baseUrl, String basePath, String uriTemplate, String method, - String consumes, String produces, String inType, String outType) { - RestServiceEntry entry = new RestServiceEntry(consumer, url, baseUrl, basePath, uriTemplate, method, consumes, produces, inType, outType); + String consumes, String produces, String inType, String outType, String routeId) { + RestServiceEntry entry = new RestServiceEntry(consumer, url, baseUrl, basePath, uriTemplate, method, consumes, produces, inType, outType, routeId); registry.put(consumer, entry); } @@ -94,9 +94,10 @@ public class DefaultRestRegistry extends ServiceSupport implements StaticService private final String produces; private final String inType; private final String outType; + private final String routeId; private RestServiceEntry(Consumer consumer, String url, String baseUrl, String basePath, String uriTemplate, - String method, String consumes, String produces, String inType, String outType) { + String method, String consumes, String produces, String inType, String outType, String routeId) { this.consumer = consumer; this.url = url; this.baseUrl = baseUrl; @@ -107,6 +108,7 @@ public class DefaultRestRegistry extends ServiceSupport implements StaticService this.produces = produces; this.inType = inType; this.outType = outType; + this.routeId = routeId; } public Consumer getConsumer() { @@ -161,6 +163,10 @@ public class DefaultRestRegistry extends ServiceSupport implements StaticService } return status.name(); } + + public String getRouteId() { + return routeId; + } } /** http://git-wip-us.apache.org/repos/asf/camel/blob/994483a7/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 b2264d2..97af622 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 @@ -69,10 +69,11 @@ public class ManagedRestRegistry extends ManagedService implements ManagedRestRe String state = entry.getState(); String inType = entry.getInType(); String outType = entry.getOutType(); + String routeId = entry.getRouteId(); CompositeData data = new CompositeDataSupport(ct, new String[] - {"url", "baseUrl", "basePath", "uriTemplate", "method", "consumes", "produces", "inType", "outType", "state"}, - new Object[]{url, baseUrl, basePath, uriTemplate, method, consumes, produces, inType, outType, state}); + {"url", "baseUrl", "basePath", "uriTemplate", "method", "consumes", "produces", "inType", "outType", "state", "routeId"}, + new Object[]{url, baseUrl, basePath, uriTemplate, method, consumes, produces, inType, outType, state, routeId}); answer.put(data); } return answer; http://git-wip-us.apache.org/repos/asf/camel/blob/994483a7/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java index 2ddbcca..42a3bf4 100644 --- a/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java @@ -433,6 +433,10 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition> if (outType != null) { options.put("outType", outType); } + // include route id + String routeId = route.idOrCreate(camelContext.getNodeIdFactory()); + options.put("routeId", routeId); + if (!options.isEmpty()) { String query; try { http://git-wip-us.apache.org/repos/asf/camel/blob/994483a7/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 92ac05d..62c8542 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 @@ -91,6 +91,11 @@ public interface RestRegistry extends Service { */ String getOutType(); + /** + * Gets the id of the route this rest service will be using. + */ + String getRouteId(); + } /** @@ -106,9 +111,10 @@ public interface RestRegistry extends Service { * @param produces optional details about what media-types the REST service returns * @param inType optional detail input binding to a FQN class name * @param outType optional detail output binding to a FQN class name + * @param routeId the id of the route this rest service will be using */ void addRestService(Consumer consumer, String url, String baseUrl, String basePath, String uriTemplate, String method, String consumes, String produces, - String inType, String outType); + String inType, String outType, String routeId); /** * Removes the REST service from the registry http://git-wip-us.apache.org/repos/asf/camel/blob/994483a7/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 be78174..b023a92 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 @@ -84,14 +84,13 @@ public class ManagedRestRegistryTest extends ManagementTestSupport { .get().to("direct:hello"); rest("/say/bye") - .get().consumes("application/json").to("direct:bye") - .post().to("mock:update"); + .get().consumes("application/json") + .route().routeId("myRestRoute").transform().constant("Bye World").endRest() + .post() + .to("mock:update"); from("direct:hello") .transform().simple("Hello ${header.name}"); - - from("direct:bye") - .transform().constant("Bye World"); } }; }
