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 d23ab6e2e69 CAMEL-22224: camel-jbang - Add route group column and 
filter in camel get route command
d23ab6e2e69 is described below

commit d23ab6e2e692bfb9b8a92875913b566fc8f9c885
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Jul 9 15:58:42 2025 +0200

    CAMEL-22224: camel-jbang - Add route group column and filter in camel get 
route command
---
 .../apache/camel/impl/console/RouteDevConsole.java | 22 ++++++++++---
 .../core/commands/process/CamelRouteStatus.java    | 38 ++++++++++++++++++++++
 2 files changed, 55 insertions(+), 5 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 a3b746d0bf2..e883d648b37 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
@@ -110,7 +110,6 @@ public class RouteDevConsole extends AbstractDevConsole {
                 Throwable cause = mrb.getLastError().getException();
                 if (cause != null) {
                     sb.append(String.format("\n    Error Message: %s", 
cause.getMessage()));
-
                     final String stackTrace = 
ExceptionHelper.stackTraceToString(cause);
                     sb.append("\n\n");
                     sb.append(stackTrace);
@@ -258,6 +257,9 @@ public class RouteDevConsole extends AbstractDevConsole {
             JsonObject jo = new JsonObject();
             list.add(jo);
             jo.put("routeId", mrb.getRouteId());
+            if (mrb.getRouteGroup() != null) {
+                jo.put("group", mrb.getRouteGroup());
+            }
             if (mrb.getNodePrefixId() != null) {
                 jo.put("nodePrefixId", mrb.getNodePrefixId());
             }
@@ -447,6 +449,11 @@ public class RouteDevConsole extends AbstractDevConsole {
             return true;
         }
 
+        if (filter.startsWith("group:")) {
+            filter = filter.substring(6);
+            return PatternHelper.matchPattern(mrb.getRouteGroup(), filter);
+        }
+
         String onlyName = LoggerHelper.sourceNameOnly(mrb.getSourceLocation());
         return PatternHelper.matchPattern(mrb.getRouteId(), filter)
                 || PatternHelper.matchPattern(mrb.getEndpointUri(), filter)
@@ -529,16 +536,21 @@ public class RouteDevConsole extends AbstractDevConsole {
         String[] patterns = filter.split(",");
         // find matching IDs
         List<String> ids = camelContext.getRoutes()
-                .stream().map(Route::getRouteId)
-                .filter(routeId -> {
+                .stream()
+                .filter(r -> {
                     for (String p : patterns) {
-                        if (PatternHelper.matchPattern(routeId, p)) {
+                        String source = r.getRouteId();
+                        if (p.startsWith("group:")) {
+                            source = r.getGroup();
+                            p = p.substring(6);
+                        }
+                        if (PatternHelper.matchPattern(source, p)) {
                             return true;
                         }
                     }
                     return false;
                 })
-                .toList();
+                .map(Route::getRouteId).toList();
         for (String id : ids) {
             try {
                 if ("start".equals(command)) {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
index f487d7a9b94..ca6d9129545 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
@@ -29,6 +29,7 @@ import com.github.freva.asciitable.OverflowBehaviour;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates;
 import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
+import org.apache.camel.support.PatternHelper;
 import org.apache.camel.tooling.model.Strings;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.TimeUtils;
@@ -68,6 +69,14 @@ public class CamelRouteStatus extends ProcessWatchCommand {
                         description = "Filter routes that must be slower than 
the given time (ms)")
     long mean;
 
+    @CommandLine.Option(names = { "--filter" },
+                        description = "Filter routes by id, or url")
+    String[] filter;
+
+    @CommandLine.Option(names = { "--group" },
+                        description = "Filter routes by group")
+    String[] group;
+
     @CommandLine.Option(names = { "--error" },
                         description = "Shows detailed information for routes 
that has error status")
     boolean error;
@@ -76,6 +85,10 @@ public class CamelRouteStatus extends ProcessWatchCommand {
                         description = "Include description in the ID column 
(if available)")
     boolean description;
 
+    @CommandLine.Option(names = { "--show-group" },
+                        description = "Include group column")
+    boolean showGroup;
+
     public CamelRouteStatus(CamelJBangMain main) {
         super(main);
     }
@@ -105,6 +118,7 @@ public class CamelRouteStatus extends ProcessWatchCommand {
                             }
                             row.pid = Long.toString(ph.pid());
                             row.routeId = o.getString("routeId");
+                            row.group = o.getString("group");
                             row.description = o.getString("description");
                             row.from = o.getString("from");
                             Boolean bool = o.getBoolean("remote");
@@ -187,6 +201,22 @@ public class CamelRouteStatus extends ProcessWatchCommand {
                             if (limit > 0 && rows.size() >= limit) {
                                 add = false;
                             }
+                            if (add && filter != null) {
+                                boolean match = false;
+                                for (String f : filter) {
+                                    if (!match) {
+                                        String from = 
StringHelper.before(row.from, "?", row.from);
+                                        String w = f.endsWith("*") ? f : f + 
"*"; // use wildcard in matching url
+                                        match = 
PatternHelper.matchPattern(row.routeId, f) || PatternHelper.matchPattern(from, 
w);
+                                    }
+                                }
+                                if (!match) {
+                                    add = false;
+                                }
+                            }
+                            if (add && group != null) {
+                                add = PatternHelper.matchPatterns(row.group, 
group);
+                            }
                             if (add) {
                                 rows.add(row);
                             }
@@ -218,6 +248,9 @@ public class CamelRouteStatus extends ProcessWatchCommand {
                 new 
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
                 new 
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30, 
OverflowBehaviour.ELLIPSIS_RIGHT)
                         .with(r -> r.name),
+                new 
Column().header("GROUP").visible(showGroup).dataAlign(HorizontalAlign.LEFT)
+                        .maxWidth(20, OverflowBehaviour.ELLIPSIS_RIGHT)
+                        .with(this::getGroup),
                 new 
Column().header("ID").visible(!description).dataAlign(HorizontalAlign.LEFT)
                         .maxWidth(20, OverflowBehaviour.ELLIPSIS_RIGHT)
                         .with(this::getId),
@@ -360,6 +393,10 @@ public class CamelRouteStatus extends ProcessWatchCommand {
         return r.state;
     }
 
+    protected String getGroup(Row r) {
+        return r.group;
+    }
+
     protected String getId(Row r) {
         if (source && r.source != null) {
             return sourceLocLine(r.source);
@@ -409,6 +446,7 @@ public class CamelRouteStatus extends ProcessWatchCommand {
         String name;
         long uptime;
         String routeId;
+        String group;
         String description;
         String from;
         boolean remote;

Reply via email to