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:42 UTC

[camel] 03/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 60aa6fbfde77ff37b1e7d649b329d8ee03ee0454
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Aug 19 13:38:38 2023 +0200

    CAMEL-19765: camel-core - SPI for DumpRouteStrategy.
---
 .../camel/impl/DefaultDumpRoutesStrategy.java      | 84 ++++++++++++++--------
 1 file changed, 56 insertions(+), 28 deletions(-)

diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java
index 7dc5d6e6a5b..390d52f3fe7 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java
@@ -51,6 +51,10 @@ import static org.apache.camel.support.LoggerHelper.stripSourceLocationLineNumbe
 @JdkService("default-" + DumpRoutesStrategy.FACTORY)
 public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelContextAware {
 
+    // TODO: configure what to log (routes,rests,route-templates) default routes
+    // TODO: xml customId=true
+    // TODO: LOG new file should use same LOG
+
     private static final Logger LOG = LoggerFactory.getLogger(DefaultDumpRoutesStrategy.class);
     private static final String DIVIDER = "--------------------------------------------------------------------------------";
 
@@ -75,18 +79,6 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
         }
     }
 
-    protected void onDump(Resource resource, String dump) {
-        String loc = null;
-        if (resource != null) {
-            loc = extractLocationName(resource.getLocation());
-        }
-        if (loc != null) {
-            LOG.info("\nSource: {}\n{}\n{}\n", loc, DIVIDER, dump);
-        } else {
-            LOG.info("\n\n{}\n", dump);
-        }
-    }
-
     protected void doDumpRoutesAsYaml(CamelContext camelContext) {
         final ModelToYAMLDumper dumper = PluginHelper.getModelToYAMLDumper(camelContext);
         final Model model = camelContext.getCamelContextExtension().getContextPlugin(Model.class);
@@ -94,7 +86,6 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
 
         int size = model.getRouteDefinitions().size();
         if (size > 0) {
-            LOG.info("Dumping {} routes as YAML", size);
             Map<Resource, RoutesDefinition> groups = new LinkedHashMap<>();
             for (RouteDefinition route : model.getRouteDefinitions()) {
                 Resource res = route.getResource();
@@ -104,16 +95,20 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
                 RoutesDefinition routes = groups.computeIfAbsent(res, resource -> new RoutesDefinition());
                 routes.getRoutes().add(route);
             }
+            StringBuilder sb = new StringBuilder();
             for (Map.Entry<Resource, RoutesDefinition> entry : groups.entrySet()) {
                 RoutesDefinition def = entry.getValue();
                 Resource resource = entry.getKey();
-                doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "routes");
+                doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "routes", sb);
+            }
+            if (!sb.isEmpty()) {
+                LOG.info("Dumping {} routes as YAML", size);
+                LOG.info("{}", sb);
             }
         }
 
         size = model.getRestDefinitions().size();
         if (size > 0) {
-            LOG.info("Dumping {} rests as YAML", size);
             Map<Resource, RestsDefinition> groups = new LinkedHashMap<>();
             for (RestDefinition rest : model.getRestDefinitions()) {
                 Resource res = rest.getResource();
@@ -123,16 +118,20 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
                 RestsDefinition rests = groups.computeIfAbsent(res, resource -> new RestsDefinition());
                 rests.getRests().add(rest);
             }
+            StringBuilder sb = new StringBuilder();
             for (Map.Entry<Resource, RestsDefinition> entry : groups.entrySet()) {
                 RestsDefinition def = entry.getValue();
                 Resource resource = entry.getKey();
-                doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "rests");
+                doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "rests", sb);
+            }
+            if (!sb.isEmpty()) {
+                LOG.info("Dumping {} rests as YAML", size);
+                LOG.info("{}", sb);
             }
         }
 
         size = model.getRouteTemplateDefinitions().size();
         if (size > 0) {
-            LOG.info("Dumping {} route templates as YAML", size);
             Map<Resource, RouteTemplatesDefinition> groups = new LinkedHashMap<>();
             for (RouteTemplateDefinition rt : model.getRouteTemplateDefinitions()) {
                 Resource res = rt.getResource();
@@ -142,19 +141,24 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
                 RouteTemplatesDefinition rests = groups.computeIfAbsent(res, resource -> new RouteTemplatesDefinition());
                 rests.getRouteTemplates().add(rt);
             }
+            StringBuilder sb = new StringBuilder();
             for (Map.Entry<Resource, RouteTemplatesDefinition> entry : groups.entrySet()) {
                 RouteTemplatesDefinition def = entry.getValue();
                 Resource resource = entry.getKey();
-                doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "route-templates");
+                doDumpYaml(camelContext, def, resource == dummy ? null : resource, dumper, "route-templates", sb);
+            }
+            if (!sb.isEmpty()) {
+                LOG.info("Dumping {} route templates as YAML", size);
+                LOG.info("{}", sb);
             }
         }
     }
 
     protected void doDumpYaml(CamelContext camelContext, NamedNode def, Resource resource,
-                              ModelToYAMLDumper dumper, String kind) {
+                              ModelToYAMLDumper dumper, String kind, StringBuilder sb) {
         try {
             String dump = dumper.dumpModelAsYaml(camelContext, def, true, false);
-            onDump(resource, dump);
+            appendDump(resource, dump, sb);
         } catch (Exception e) {
             LOG.warn("Error dumping {}} to YAML due to {}. This exception is ignored.", kind, e.getMessage(), e);
         }
@@ -167,7 +171,6 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
 
         int size = model.getRouteDefinitions().size();
         if (size > 0) {
-            LOG.info("Dumping {} routes as XML", size);
             Map<Resource, RoutesDefinition> groups = new LinkedHashMap<>();
             for (RouteDefinition route : model.getRouteDefinitions()) {
                 Resource res = route.getResource();
@@ -177,16 +180,20 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
                 RoutesDefinition routes = groups.computeIfAbsent(res, resource -> new RoutesDefinition());
                 routes.getRoutes().add(route);
             }
+            StringBuilder sb = new StringBuilder();
             for (Map.Entry<Resource, RoutesDefinition> entry : groups.entrySet()) {
                 RoutesDefinition def = entry.getValue();
                 Resource resource = entry.getKey();
-                doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "route", "routes");
+                doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "route", "routes", sb);
+            }
+            if (!sb.isEmpty()) {
+                LOG.info("Dumping {} routes as XML", size);
+                LOG.info("{}", sb);
             }
         }
 
         size = model.getRestDefinitions().size();
         if (size > 0) {
-            LOG.info("Dumping {} rests as XML", size);
             Map<Resource, RestsDefinition> groups = new LinkedHashMap<>();
             for (RestDefinition rest : model.getRestDefinitions()) {
                 Resource res = rest.getResource();
@@ -196,16 +203,20 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
                 RestsDefinition routes = groups.computeIfAbsent(res, resource -> new RestsDefinition());
                 routes.getRests().add(rest);
             }
+            StringBuilder sb = new StringBuilder();
             for (Map.Entry<Resource, RestsDefinition> entry : groups.entrySet()) {
                 RestsDefinition def = entry.getValue();
                 Resource resource = entry.getKey();
-                doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "rest", "rests");
+                doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "rest", "rests", sb);
+            }
+            if (!sb.isEmpty()) {
+                LOG.info("Dumping {} rests as XML", size);
+                LOG.info("{}", sb);
             }
         }
 
         size = model.getRouteTemplateDefinitions().size();
         if (size > 0) {
-            LOG.info("Dumping {} route templates as XML", size);
             Map<Resource, RouteTemplatesDefinition> groups = new LinkedHashMap<>();
             for (RouteTemplateDefinition rt : model.getRouteTemplateDefinitions()) {
                 Resource res = rt.getResource();
@@ -215,28 +226,45 @@ public class DefaultDumpRoutesStrategy implements DumpRoutesStrategy, CamelConte
                 RouteTemplatesDefinition routes = groups.computeIfAbsent(res, resource -> new RouteTemplatesDefinition());
                 routes.getRouteTemplates().add(rt);
             }
+            StringBuilder sb = new StringBuilder();
             for (Map.Entry<Resource, RouteTemplatesDefinition> entry : groups.entrySet()) {
                 RouteTemplatesDefinition def = entry.getValue();
                 Resource resource = entry.getKey();
-                doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "routeTemplate", "route-templates");
+                doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "routeTemplate", "route-templates", sb);
+            }
+            if (!sb.isEmpty()) {
+                LOG.info("Dumping {} route templates as XML", size);
+                LOG.info("{}", sb);
             }
         }
     }
 
     protected void doDumpXml(CamelContext camelContext, NamedNode def, Resource resource,
-                              ModelToXMLDumper dumper, String replace, String kind) {
+                              ModelToXMLDumper dumper, String replace, String kind, StringBuilder sb) {
         try {
             String xml = dumper.dumpModelAsXml(camelContext, def, true);
             // lets separate with empty line
             xml = StringHelper.replaceFirst(xml, "xmlns=\"http://camel.apache.org/schema/spring\">",
                     "xmlns=\"http://camel.apache.org/schema/spring\">\n");
             xml = xml.replace("</" + replace + ">", "</" + replace + ">\n");
-            onDump(resource, xml);
+            appendDump(resource, xml, sb);
         } catch (Exception e) {
             LOG.warn("Error dumping {}} to XML due to {}. This exception is ignored.", kind, e.getMessage(), e);
         }
     }
 
+    protected void appendDump(Resource resource, String dump, StringBuilder sb) {
+        String loc = null;
+        if (resource != null) {
+            loc = extractLocationName(resource.getLocation());
+        }
+        if (loc != null) {
+            sb.append(String.format("\nSource: %s%n%s%n%s%n", loc, DIVIDER, dump));
+        } else {
+            sb.append(String.format("%n%n%s%n", dump));
+        }
+    }
+
     private static final class DummyResource extends ResourceSupport {
 
         private DummyResource(String scheme, String location) {