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 2023/08/21 11:55:50 UTC

[camel] 11/14: CAMEL-19765: camel-core - SPI for DumpRouteStrategy.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch ds
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6b8080ec9e08fdcc06031c0d9cd33134c6464e3e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Aug 21 12:58:47 2023 +0200

    CAMEL-19765: camel-core - SPI for DumpRouteStrategy.
---
 .../apache/camel/impl/DefaultDumpRoutesStrategy.java    | 17 ++++++++++-------
 .../camel/management/ManagedRouteDumpStrategyTest.java  | 12 +++++++++++-
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java
index 7c9797c8824..ca28c5fa828 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java
@@ -170,7 +170,7 @@ public class DefaultDumpRoutesStrategy extends ServiceSupport implements DumpRou
                     Resource resource = entry.getKey();
 
                     StringBuilder local = new StringBuilder();
-                    doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "rests", sb);
+                    doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "rests", local);
                     sb.append(local);
                     // dump each resource into its own file
                     doDumpTiDisk(resource, local, "rests", "yaml");
@@ -201,7 +201,7 @@ public class DefaultDumpRoutesStrategy extends ServiceSupport implements DumpRou
                     Resource resource = entry.getKey();
 
                     StringBuilder local = new StringBuilder();
-                    doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "route-templates", sb);
+                    doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "route-templates", local);
                     sb.append(local);
                     // dump each resource into its own file
                     doDumpTiDisk(resource, local, "route-templates", "yaml");
@@ -248,7 +248,7 @@ public class DefaultDumpRoutesStrategy extends ServiceSupport implements DumpRou
                     Resource resource = entry.getKey();
 
                     StringBuilder local = new StringBuilder();
-                    doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "route", "routes", sb);
+                    doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "route", "routes", local);
                     sb.append(local);
                     // dump each resource into its own file
                     doDumpTiDisk(resource, local, "routes", "xml");
@@ -278,7 +278,7 @@ public class DefaultDumpRoutesStrategy extends ServiceSupport implements DumpRou
                     Resource resource = entry.getKey();
 
                     StringBuilder local = new StringBuilder();
-                    doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "rest", "rests", sb);
+                    doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "rest", "rests", local);
                     sb.append(local);
                     // dump each resource into its own file
                     doDumpTiDisk(resource, local, "rests", "xml");
@@ -310,7 +310,7 @@ public class DefaultDumpRoutesStrategy extends ServiceSupport implements DumpRou
 
                     StringBuilder local = new StringBuilder();
                     doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "routeTemplate",
-                            "route-templates", sb);
+                            "route-templates", local);
                     sb.append(local);
                     // dump each resource into its own file
                     doDumpTiDisk(resource, local, "route-templates", "xml");
@@ -339,12 +339,15 @@ public class DefaultDumpRoutesStrategy extends ServiceSupport implements DumpRou
     }
 
     protected void doDumpTiDisk(Resource resource, StringBuilder local, String kind, String ext) {
-        if (directory != null) {
+        if (directory != null && !local.isEmpty()) {
             // make sure directory exists
             File dir = new File(directory);
             dir.mkdirs();
 
-            String name = resource != null ? resource.getLocation() : "dump" + counter.incrementAndGet();
+            String name = resource != null ? resource.getLocation() : null;
+            if (name == null) {
+                name = "dump" + counter.incrementAndGet();
+            }
             // strip scheme
             if (name.contains(":")) {
                 name = StringHelper.after(name, ":");
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteDumpStrategyTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteDumpStrategyTest.java
index 56d7cbab2f6..080dcb55c7e 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteDumpStrategyTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteDumpStrategyTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.management;
 
+import java.io.File;
 import java.util.Set;
 
 import javax.management.MBeanServer;
@@ -38,8 +39,11 @@ public class ManagedRouteDumpStrategyTest extends ManagementTestSupport {
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
+        testDirectory(true);
+        String dir = testDirectory().toString();
+
         CamelContext context = super.createCamelContext();
-        context.setDumpRoutes("xml?include=all&log=false"); // dump route is lazy
+        context.setDumpRoutes("xml?include=all&log=false&directory=" + dir); // dump route is lazy
         return context;
     }
 
@@ -66,6 +70,12 @@ public class ManagedRouteDumpStrategyTest extends ManagementTestSupport {
         assertEquals("all", include);
         Boolean log = (Boolean) mbeanServer.getAttribute(on, "Log");
         assertFalse(log);
+
+        // dump should pre-exist
+        File dir = testDirectory().toFile();
+        String[] files = dir.list();
+        assertEquals(1, files.length);
+        assertEquals("dump1.xml", files[0]);
     }
 
     @Override