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;