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

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


The following commit(s) were added to refs/heads/main by this push:
     new ff04d28b150 camel-console - Add route console to dump route stats
ff04d28b150 is described below

commit ff04d28b150d8321e991cf772843f68b13541c57
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri May 27 09:53:43 2022 +0200

    camel-console - Add route console to dump route stats
---
 .../apache/camel/impl/console/RouteDevConsole.java | 26 ++++++++++++++++++----
 .../org/apache/camel/main/VertxHttpServer.java     | 15 ++++++++++---
 2 files changed, 34 insertions(+), 7 deletions(-)

diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
index 9a318c1a107..5ce143c2af9 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
@@ -16,24 +16,32 @@
  */
 package org.apache.camel.impl.console;
 
+import java.util.List;
+import java.util.Map;
+
 import org.apache.camel.Route;
 import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.spi.annotations.DevConsole;
+import org.apache.camel.support.PatternHelper;
 import org.apache.camel.util.TimeUtils;
 
-import java.util.List;
-import java.util.Map;
-
 @DevConsole("route")
 public class RouteDevConsole extends AbstractDevConsole {
 
+    /**
+     * Filters the routes matching by route id, route uri, and source location
+     */
+    public static final String FILTER = "filter";
+
     public RouteDevConsole() {
         super("camel", "route", "Route", "Route information");
     }
 
     @Override
     protected Object doCall(MediaType mediaType, Map<String, Object> options) {
+        String filter = (String) options.get(FILTER);
+
         // only text is supported
         StringBuilder sb = new StringBuilder();
 
@@ -43,7 +51,7 @@ public class RouteDevConsole extends AbstractDevConsole {
             routes.sort((o1, o2) -> 
o1.getRouteId().compareToIgnoreCase(o2.getRouteId()));
             for (Route route : routes) {
                 ManagedRouteMBean mrb = 
mcc.getManagedRoute(route.getRouteId());
-                if (mrb != null) {
+                if (mrb != null && accept(mrb, filter)) {
                     if (sb.length() > 0) {
                         sb.append("\n");
                     }
@@ -68,4 +76,14 @@ public class RouteDevConsole extends AbstractDevConsole {
         return sb.toString();
     }
 
+    private static boolean accept(ManagedRouteMBean mrb, String filter) {
+        if (filter == null) {
+            return true;
+        }
+
+        return PatternHelper.matchPattern(mrb.getRouteId(), filter)
+                || PatternHelper.matchPattern(mrb.getEndpointUri(), filter)
+                || PatternHelper.matchPattern(mrb.getSourceLocation(), filter);
+    }
+
 }
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
index 432f9804ea1..e9cc5703f09 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
@@ -20,10 +20,11 @@ import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Comparator;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -175,6 +176,10 @@ public final class VertxHttpServer {
                 String id = ctx.pathParam("id");
 
                 ctx.response().putHeader("content-type", "text/plain");
+                ctx.request().params();
+
+                Map<String, Object> params = new HashMap<>();
+                ctx.queryParams().forEach(params::put);
 
                 DevConsoleRegistry dcr = 
context.getExtension(DevConsoleRegistry.class);
                 if (dcr != null && dcr.isEnabled()) {
@@ -190,7 +195,7 @@ public final class VertxHttpServer {
                     }).forEach(c -> {
                         boolean include = id == null || id.contains(c.getId());
                         if (include && 
c.supportMediaType(DevConsole.MediaType.TEXT)) {
-                            String text = (String) 
c.call(DevConsole.MediaType.TEXT);
+                            String text = (String) 
c.call(DevConsole.MediaType.TEXT, params);
                             if (text != null) {
                                 sb.append(c.getDisplayName()).append(":");
                                 sb.append("\n\n");
@@ -202,7 +207,11 @@ public final class VertxHttpServer {
                     if (sb.length() > 0) {
                         ctx.end(sb.toString());
                     } else {
-                        ctx.end("Developer Console is not enabled");
+                        if (id != null) {
+                            ctx.end("Developer Console with id not found: " + 
id);
+                        } else {
+                            ctx.end("Developer Console is not enabled");
+                        }
                     }
                 } else {
                     ctx.end("Developer Console is not enabled");

Reply via email to