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 2025/08/02 16:41:46 UTC
(camel) 11/13: CAMEL-22310: camel-core - Add route group jbang command
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch jmxgroup
in repository https://gitbox.apache.org/repos/asf/camel.git
commit bc4c1a213c5961482fc5c6f4d0836597de215211
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Aug 2 17:47:20 2025 +0200
CAMEL-22310: camel-core - Add route group jbang command
---
.../apache/camel/cli/connector/LocalCliConnector.java | 19 ++++++++++++++++---
.../jbang/core/commands/action/CamelRouteAction.java | 5 +++++
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index 133cfae5ab9..d527061f8a9 100644
--- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -34,6 +34,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -801,16 +802,18 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
// id is a pattern
String[] patterns = root.getString("id").split(",");
boolean all = patterns.length == 1 && "*".equals(patterns[0]);
+ boolean group = root.getBooleanOrDefault("group", false);
List<String> ids;
if (all) {
ids = List.of("*");
} else {
// find matching IDs
ids = camelContext.getRoutes()
- .stream().map(Route::getRouteId)
- .filter(routeId -> {
+ .stream().map(r -> group ? r.getGroup() : r.getRouteId())
+ .filter(Objects::nonNull)
+ .filter(name -> {
for (String p : patterns) {
- if (PatternHelper.matchPattern(routeId, p)) {
+ if (PatternHelper.matchPattern(name, p)) {
return true;
}
}
@@ -824,12 +827,16 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
if ("start".equals(command)) {
if ("*".equals(id)) {
camelContext.getRouteController().startAllRoutes();
+ } else if (group) {
+ camelContext.getRouteController().startRouteGroup(id);
} else {
camelContext.getRouteController().startRoute(id);
}
} else if ("stop".equals(command)) {
if ("*".equals(id)) {
camelContext.getRouteController().stopAllRoutes();
+ } else if (group) {
+ camelContext.getRouteController().stopRouteGroup(id);
} else {
camelContext.getRouteController().stopRoute(id);
}
@@ -838,6 +845,9 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
for (Route r : camelContext.getRoutes()) {
camelContext.getRouteController().suspendRoute(r.getRouteId());
}
+ } else if (group) {
+ // we do not have suspend for a group
+ camelContext.getRouteController().stopRouteGroup(id);
} else {
camelContext.getRouteController().suspendRoute(id);
}
@@ -846,6 +856,9 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C
for (Route r : camelContext.getRoutes()) {
camelContext.getRouteController().resumeRoute(r.getRouteId());
}
+ } else if (group) {
+ // we do not have resume for a group
+ camelContext.getRouteController().startRouteGroup(id);
} else {
camelContext.getRouteController().resumeRoute(id);
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteAction.java
index a4122151298..d652a4ab0f9 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteAction.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelRouteAction.java
@@ -33,6 +33,10 @@ public abstract class CamelRouteAction extends ActionBaseCommand {
description = "Route ids (multiple ids can be separated by comma)", defaultValue = "*")
String id = "*";
+ @CommandLine.Option(names = { "--group" },
+ description = "Perform the action on a group of routes")
+ boolean group;
+
public CamelRouteAction(CamelJBangMain main) {
super(main);
}
@@ -44,6 +48,7 @@ public abstract class CamelRouteAction extends ActionBaseCommand {
for (long pid : pids) {
JsonObject root = new JsonObject();
root.put("action", "route");
+ root.put("group", group);
root.put("id", id);
Path f = getActionFile(Long.toString(pid));
onAction(root);