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.

Reply via email to