You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2018/03/09 17:46:31 UTC
[camel] 02/02: 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
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 <cl...@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
davsclaus@apache.org.