This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 8fda60ba759ead7bfa0f8d3a1e09dc8c22381e67 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri Mar 9 18:46:14 2018 +0100 CAMEL-12341: Add dump method to camel-spring-boot actuator to dump route in XML format if not in read-only mode (not by default). Polsihed maven archetype --- .../src/main/resources/application.properties | 4 ++++ .../boot/actuate/endpoint/CamelRoutesEndpoint.java | 11 ++++++++++ .../actuate/endpoint/CamelRoutesMvcEndpoint.java | 25 ++++++++++++++++++++++ .../endpoint/CamelRoutesMvcEndpointTest.java | 8 +++++++ 4 files changed, 48 insertions(+) diff --git a/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/src/main/resources/application.properties b/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/src/main/resources/application.properties index cde1260..2fb8185 100644 --- a/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/src/main/resources/application.properties +++ b/archetypes/camel-archetype-spring-boot/src/main/resources/archetype-resources/src/main/resources/application.properties @@ -29,6 +29,10 @@ management.security.enabled = false # turn on actuator health check endpoints.health.enabled = true +# allow to obtain basic information about camel routes (read only mode) +endpoints.camelroutes.enabled = true +endpoints.camelroutes.read-only = true + # to configure logging levels #logging.level.org.springframework = INFO #logging.level.org.apache.camel.spring.boot = INFO diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java index 5a5d314..e96ac6b 100644 --- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java +++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java @@ -24,6 +24,8 @@ import java.util.stream.Collectors; import org.apache.camel.CamelContext; import org.apache.camel.Route; import org.apache.camel.api.management.mbean.ManagedRouteMBean; +import org.apache.camel.model.ModelHelper; +import org.apache.camel.model.RouteDefinition; import org.apache.camel.spring.boot.model.RouteDetailsInfo; import org.apache.camel.spring.boot.model.RouteInfo; import org.springframework.boot.actuate.endpoint.Endpoint; @@ -69,6 +71,15 @@ public class CamelRoutesEndpoint extends AbstractCamelEndpoint<List<RouteInfo>> return null; } + public String getRouteDump(String id) throws Exception { + RouteDefinition route = getCamelContext().getRouteDefinition(id); + if (route != null) { + return ModelHelper.dumpModelAsXml(getCamelContext(), route); + } + + return null; + } + public void startRoute(String id) throws Exception { getCamelContext().getRouteController().startRoute(id); } diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesMvcEndpoint.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesMvcEndpoint.java index 5e852be..722cd75 100644 --- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesMvcEndpoint.java +++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesMvcEndpoint.java @@ -48,6 +48,31 @@ public class CamelRoutesMvcEndpoint extends AbstractCamelMvcEndpoint<CamelRoutes @ResponseBody @GetMapping( + value = "/{id}/dump", + produces = { + MediaType.APPLICATION_XML_VALUE, + MediaType.APPLICATION_XML_VALUE + } + ) + public Object dump( + @PathVariable String id) { + + return doIfEnabledAndNotReadOnly(() -> { + try { + Object result = delegate().getRouteDump(id); + if (result == null) { + throw new NoSuchRouteException("No such route " + id); + } + + return result; + } catch (Exception e) { + throw new GenericException("Error dumping route " + id, e); + } + }); + } + + @ResponseBody + @GetMapping( value = "/{id}/detail", produces = { ActuatorMediaTypes.APPLICATION_ACTUATOR_V1_JSON_VALUE, diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesMvcEndpointTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesMvcEndpointTest.java index ff9187b..8eb41a3 100644 --- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesMvcEndpointTest.java +++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesMvcEndpointTest.java @@ -78,4 +78,12 @@ public class CamelRoutesMvcEndpointTest extends Assert { assertEquals(200, ent.getStatusCodeValue()); } + @Test + public void testMvcRouteDump() throws Exception { + Object result = endpoint.dump("foo-route"); + + assertTrue(result instanceof String); + assertTrue(result.toString().contains("<from uri=\"timer:foo\"/>")); + } + } -- To stop receiving notification emails like this one, please contact davscl...@apache.org.