This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch rcmd in repository https://gitbox.apache.org/repos/asf/camel.git
commit fc13ac59ec3c1408df3bea7c962484cc74c63269 Author: Claus Ibsen <[email protected]> AuthorDate: Wed Oct 9 20:39:43 2024 +0200 CAMEL-21193: camel-jbang - Add listen command --- .../camel/impl/console/ReceiveDevConsole.java | 3 +- .../camel/cli/connector/LocalCliConnector.java | 7 +++ .../core/commands/action/CamelListenAction.java | 59 +++++++++++++++++++--- 3 files changed, 60 insertions(+), 9 deletions(-) diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ReceiveDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ReceiveDevConsole.java index 51452deeb6c..1d794f55a52 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ReceiveDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ReceiveDevConsole.java @@ -269,12 +269,13 @@ public class ReceiveDevConsole extends AbstractDevConsole { } } - root.put("enabled", true); + root.put("enabled", this.enabled.get()); root.put("total", uuid.get()); JsonArray arr = new JsonArray(); for (Consumer c : consumers) { JsonObject jo = new JsonObject(); jo.put("uri", c.getEndpoint().toString()); + jo.put("remote", c.getEndpoint().isRemote()); arr.add(jo); } root.put("endpoints", arr); 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 e7d6d3620e5..279eecc1f0c 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 @@ -1155,6 +1155,13 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C root.put("main-configuration", json); } } + DevConsole dc23 = dcr.resolveById("receive"); + if (dc23 != null) { + JsonObject json = (JsonObject) dc23.call(DevConsole.MediaType.JSON); + if (json != null && !json.isEmpty()) { + root.put("receive", json); + } + } } // various details JsonObject mem = collectMemory(); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelListenAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelListenAction.java index 3539f450e4d..33dce4074ac 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelListenAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelListenAction.java @@ -149,6 +149,14 @@ public class CamelListenAction extends ActionBaseCommand { description = "Compact output (no empty line separating messages)") boolean compact = true; + @CommandLine.Option(names = { "--short-uri" }, + description = "List endpoint URI without query parameters (short)") + boolean shortUri; + + @CommandLine.Option(names = { "--wide-uri" }, + description = "List endpoint URI in full details") + boolean wideUri; + @CommandLine.Option(names = { "--mask" }, description = "Whether to mask endpoint URIs to avoid printing sensitive information such as password or access keys") boolean mask; @@ -225,14 +233,25 @@ public class CamelListenAction extends ActionBaseCommand { row.pid = Long.toString(ph.pid()); row.uptime = extractSince(ph); row.age = TimeUtils.printSince(row.uptime); - // TODO: receive - JsonObject jo = root.getMap("trace"); + JsonObject jo = root.getMap("receive"); if (jo != null) { row.enabled = jo.getBoolean("enabled"); - row.counter = jo.getLong("counter"); - row.pattern = jo.getString("tracePattern"); + row.counter = jo.getLong("total"); + JsonArray arr = jo.getCollection("endpoints"); + if (arr != null) { + for (Object e : arr) { + jo = (JsonObject) e; + row.uri = jo.getString("uri"); + if (mask) { + row.uri = URISupport.sanitizeUri(row.uri); + } + rows.add(row); + row = row.copy(); + } + } else { + rows.add(row); + } } - rows.add(row); } }); @@ -246,8 +265,13 @@ public class CamelListenAction extends ActionBaseCommand { .with(r -> r.name), new Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.age), new Column().header("STATUS").with(this::getStatus), - new Column().header("TOTAL").with(r -> "" + r.counter), - new Column().header("PATTERN").with(r -> r.pattern)))); + new Column().header("COUNTER").with(r -> "" + r.counter), + new Column().header("ENDPOINT").visible(!wideUri).dataAlign(HorizontalAlign.LEFT) + .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT) + .with(this::getEndpointUri), + new Column().header("ENDPOINT").visible(wideUri).dataAlign(HorizontalAlign.LEFT) + .maxWidth(140, OverflowBehaviour.NEWLINE) + .with(r -> r.uri)))); } return 0; @@ -696,6 +720,17 @@ public class CamelListenAction extends ActionBaseCommand { return tableHelper.getDataAsTable(null, null, r.endpoint, r.endpointService, r.message, null); } + protected String getEndpointUri(StatusRow r) { + String u = r.uri; + if (shortUri) { + int pos = u.indexOf('?'); + if (pos > 0) { + u = u.substring(0, pos); + } + } + return u; + } + private static class Pid { String pid; String name; @@ -726,7 +761,15 @@ public class CamelListenAction extends ActionBaseCommand { long uptime; boolean enabled; long counter; - String pattern; + String uri; + + StatusRow copy() { + try { + return (StatusRow) clone(); + } catch (CloneNotSupportedException e) { + return null; + } + } } }
