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;
+            }
+        }
     }
 
 }

Reply via email to