This is an automated email from the ASF dual-hosted git repository.
gnodet 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 8e9f69130650 CAMEL-23228: Add consistent --json output support across
camel-jbang commands
8e9f69130650 is described below
commit 8e9f69130650973ef73863143ff5d1f35d91f79c
Author: Guillaume Nodet <[email protected]>
AuthorDate: Mon Mar 23 11:12:48 2026 +0100
CAMEL-23228: Add consistent --json output support across camel-jbang
commands
- Move --json flag from ListProcess to ProcessWatchCommand base class
- Add JSON output to all 26 process-related commands
- Uses Camel's camel-util-json (Jsoner) for serialization
- Flat JSON array of objects with camelCase field names
---
.../core/commands/process/CamelContextStatus.java | 72 +++++++++++++++-------
.../core/commands/process/CamelContextTop.java | 54 +++++++++++-----
.../jbang/core/commands/process/CamelCount.java | 30 ++++++---
.../commands/process/CamelProcessorStatus.java | 24 ++++++++
.../commands/process/CamelRouteGroupStatus.java | 26 ++++++++
.../core/commands/process/CamelRouteStatus.java | 28 +++++++++
.../jbang/core/commands/process/ListBlocked.java | 38 +++++++++---
.../core/commands/process/ListCircuitBreaker.java | 53 +++++++++++-----
.../jbang/core/commands/process/ListConsumer.java | 19 ++++++
.../jbang/core/commands/process/ListEndpoint.java | 17 +++++
.../dsl/jbang/core/commands/process/ListEvent.java | 29 ++++++---
.../jbang/core/commands/process/ListGroovy.java | 39 +++++++++---
.../jbang/core/commands/process/ListHealth.java | 61 +++++++++++-------
.../jbang/core/commands/process/ListInflight.java | 46 ++++++++++----
.../core/commands/process/ListInternalTask.java | 51 ++++++++++-----
.../dsl/jbang/core/commands/process/ListKafka.java | 64 ++++++++++++-------
.../jbang/core/commands/process/ListMetric.java | 62 +++++++++++++------
.../core/commands/process/ListPlatformHttp.java | 30 ++++++---
.../jbang/core/commands/process/ListProcess.java | 4 --
.../jbang/core/commands/process/ListProducer.java | 16 +++++
.../core/commands/process/ListProperties.java | 52 +++++++++++-----
.../dsl/jbang/core/commands/process/ListRest.java | 37 ++++++++---
.../jbang/core/commands/process/ListService.java | 54 +++++++++++-----
.../core/commands/process/ListTransformer.java | 19 ++++++
.../jbang/core/commands/process/ListVariable.java | 39 ++++++++----
.../dsl/jbang/core/commands/process/ListVault.java | 41 ++++++++----
.../core/commands/process/ProcessWatchCommand.java | 4 ++
27 files changed, 752 insertions(+), 257 deletions(-)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
index 626facf712ea..e2955e86e36a 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -32,6 +33,7 @@ import org.apache.camel.dsl.jbang.core.common.VersionHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -167,29 +169,53 @@ public class CamelContextStatus extends
ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("CAMEL").dataAlign(HorizontalAlign.LEFT).with(r ->
r.camelVersion),
- new
Column().header("PLATFORM").dataAlign(HorizontalAlign.LEFT).with(this::getPlatform),
- new
Column().header("PROFILE").dataAlign(HorizontalAlign.LEFT).with(this::getProfile),
- new
Column().header("READY").dataAlign(HorizontalAlign.CENTER).with(r -> r.ready),
- new
Column().header("STATUS").headerAlign(HorizontalAlign.CENTER)
- .with(this::getStatus),
- new Column().header("RELOAD").with(this::getReloaded),
- new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.age),
- new Column().header("ROUTE").with(this::getRoutes),
- new Column().header("MSG/S").with(this::getThroughput),
- new Column().header("TOTAL").with(this::getTotal),
- new Column().header("FAIL").with(this::getFailed),
- new Column().header("INFLIGHT").with(this::getInflight),
- new Column().header("LAST").with(r -> r.last),
- new Column().header("SINCE-LAST").with(this::getSinceLast),
- new Column().header("") // empty header as we only show
info when there is an error
-
.headerAlign(HorizontalAlign.LEFT).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(70, OverflowBehaviour.NEWLINE)
- .with(this::getDescription))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("camelVersion", r.camelVersion);
+ jo.put("platform", getPlatform(r));
+ jo.put("profile", getProfile(r));
+ jo.put("ready", r.ready);
+ jo.put("status", getStatus(r));
+ jo.put("reload", getReloaded(r));
+ jo.put("age", r.age);
+ jo.put("route", getRoutes(r));
+ jo.put("throughput", getThroughput(r));
+ jo.put("total", r.total);
+ jo.put("failed", r.failed);
+ jo.put("inflight", r.inflight);
+ jo.put("last", r.last);
+ jo.put("sinceLast", getSinceLast(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("CAMEL").dataAlign(HorizontalAlign.LEFT).with(r ->
r.camelVersion),
+ new
Column().header("PLATFORM").dataAlign(HorizontalAlign.LEFT).with(this::getPlatform),
+ new
Column().header("PROFILE").dataAlign(HorizontalAlign.LEFT).with(this::getProfile),
+ new
Column().header("READY").dataAlign(HorizontalAlign.CENTER).with(r -> r.ready),
+ new
Column().header("STATUS").headerAlign(HorizontalAlign.CENTER)
+ .with(this::getStatus),
+ new Column().header("RELOAD").with(this::getReloaded),
+ new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.age),
+ new Column().header("ROUTE").with(this::getRoutes),
+ new Column().header("MSG/S").with(this::getThroughput),
+ new Column().header("TOTAL").with(this::getTotal),
+ new Column().header("FAIL").with(this::getFailed),
+ new
Column().header("INFLIGHT").with(this::getInflight),
+ new Column().header("LAST").with(r -> r.last),
+ new
Column().header("SINCE-LAST").with(this::getSinceLast),
+ new Column().header("") // empty header as we only
show info when there is an error
+
.headerAlign(HorizontalAlign.LEFT).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(70, OverflowBehaviour.NEWLINE)
+ .with(this::getDescription))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java
index 100ff41d3621..4b67469c5ae9 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -31,6 +32,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.dsl.jbang.core.common.VersionHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -144,22 +146,42 @@ public class CamelContextTop extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("JAVA").dataAlign(HorizontalAlign.LEFT).with(this::getJavaVersion),
- new
Column().header("CAMEL").dataAlign(HorizontalAlign.LEFT).with(r ->
r.camelVersion),
- new
Column().header("PLATFORM").dataAlign(HorizontalAlign.LEFT).with(this::getPlatform),
- new
Column().header("STATUS").headerAlign(HorizontalAlign.CENTER)
- .with(r -> extractState(r.state)),
- new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.ago),
- new
Column().header("LOAD").headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER)
- .with(this::getLoad),
- new
Column().header("HEAP").headerAlign(HorizontalAlign.CENTER).with(this::getHeapMemory),
- new
Column().header("NON-HEAP").headerAlign(HorizontalAlign.CENTER).with(this::getNonHeapMemory),
- new
Column().header("GC").headerAlign(HorizontalAlign.CENTER).with(this::getGC),
- new
Column().header("THREADS").headerAlign(HorizontalAlign.CENTER).with(this::getThreads))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("javaVersion", getJavaVersion(r));
+ jo.put("camelVersion", r.camelVersion);
+ jo.put("platform", getPlatform(r));
+ jo.put("status", extractState(r.state));
+ jo.put("age", r.ago);
+ jo.put("load", getLoad(r));
+ jo.put("heap", getHeapMemory(r));
+ jo.put("nonHeap", getNonHeapMemory(r));
+ jo.put("gc", getGC(r));
+ jo.put("threads", getThreads(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("JAVA").dataAlign(HorizontalAlign.LEFT).with(this::getJavaVersion),
+ new
Column().header("CAMEL").dataAlign(HorizontalAlign.LEFT).with(r ->
r.camelVersion),
+ new
Column().header("PLATFORM").dataAlign(HorizontalAlign.LEFT).with(this::getPlatform),
+ new
Column().header("STATUS").headerAlign(HorizontalAlign.CENTER)
+ .with(r -> extractState(r.state)),
+ new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.ago),
+ new
Column().header("LOAD").headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER)
+ .with(this::getLoad),
+ new
Column().header("HEAP").headerAlign(HorizontalAlign.CENTER).with(this::getHeapMemory),
+ new
Column().header("NON-HEAP").headerAlign(HorizontalAlign.CENTER).with(this::getNonHeapMemory),
+ new
Column().header("GC").headerAlign(HorizontalAlign.CENTER).with(this::getGC),
+ new
Column().header("THREADS").headerAlign(HorizontalAlign.CENTER).with(this::getThreads))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelCount.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelCount.java
index 16f5ef89a988..6695856f9d75 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelCount.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelCount.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -30,6 +31,7 @@ import
org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates;
import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -93,14 +95,26 @@ public class CamelCount extends ProcessWatchCommand {
if (!total && !fail) {
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
- 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("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.age),
- new Column().header("TOTAL").with(r -> r.total),
- new Column().header("FAIL").with(r -> r.failed))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("age", r.age);
+ jo.put("total", r.total);
+ jo.put("failed", r.failed);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
+ 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("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.age),
+ new Column().header("TOTAL").with(r -> r.total),
+ new Column().header("FAIL").with(r -> r.failed))));
+ }
}
} else {
StringBuilder builder = new StringBuilder();
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java
index 44f6d63ffa1a..3b9d8b877aa4 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -302,6 +303,29 @@ public class CamelProcessorStatus extends
ProcessWatchCommand {
}
protected void printTable(List<Row> rows) {
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", getName(r));
+ jo.put("routeId", r.routeId);
+ jo.put("group", r.group);
+ jo.put("id", getId(r));
+ jo.put("processor", r.processor);
+ jo.put("status", getStatus(r));
+ jo.put("total", r.total);
+ jo.put("failed", r.failed);
+ jo.put("inflight", r.inflight);
+ jo.put("mean", r.mean);
+ jo.put("min", r.min);
+ jo.put("max", r.max);
+ jo.put("last", r.last);
+ jo.put("delta", getDelta(r));
+ jo.put("sinceLast", getSinceLast(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ return;
+ }
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(this::getPid),
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteGroupStatus.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteGroupStatus.java
index 0e5228c09d72..705559d0c95e 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteGroupStatus.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteGroupStatus.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -32,6 +33,7 @@ import org.apache.camel.support.PatternHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -202,6 +204,30 @@ public class CamelRouteGroupStatus extends
ProcessWatchCommand {
}
protected void printTable(List<Row> rows) {
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("group", getGroup(r));
+ jo.put("routes", r.size);
+ jo.put("status", r.state);
+ jo.put("age", r.age);
+ jo.put("coverage", getCoverage(r));
+ jo.put("throughput", getThroughput(r));
+ jo.put("total", r.total);
+ jo.put("failed", r.failed);
+ jo.put("inflight", r.inflight);
+ jo.put("mean", r.mean);
+ jo.put("min", r.min);
+ jo.put("max", r.max);
+ jo.put("last", r.last);
+ jo.put("delta", getDelta(r));
+ jo.put("sinceLast", getSinceLast(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ return;
+ }
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
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 84b068964686..0ace6069aedb 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
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -35,6 +36,7 @@ import org.apache.camel.util.StringHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -257,6 +259,32 @@ public class CamelRouteStatus extends ProcessWatchCommand {
}
protected void printTable(List<Row> rows, boolean remoteVisible) {
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("routeId", r.routeId);
+ jo.put("group", r.group);
+ jo.put("from", r.from);
+ jo.put("remote", r.remote);
+ jo.put("status", getStatus(r));
+ jo.put("age", r.age);
+ jo.put("coverage", r.coverage);
+ jo.put("throughput", getThroughput(r));
+ jo.put("total", r.total);
+ jo.put("failed", r.failed);
+ jo.put("inflight", r.inflight);
+ jo.put("mean", r.mean);
+ jo.put("min", r.min);
+ jo.put("max", r.max);
+ jo.put("last", r.last);
+ jo.put("delta", getDelta(r));
+ jo.put("sinceLast", getSinceLast(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ return;
+ }
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListBlocked.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListBlocked.java
index f4eddc904195..6fb432f00a5f 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListBlocked.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListBlocked.java
@@ -19,6 +19,7 @@ package org.apache.camel.dsl.jbang.core.commands.process;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -30,6 +31,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -94,16 +96,32 @@ public class ListBlocked extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("EXCHANGE-ID").dataAlign(HorizontalAlign.LEFT).with(r ->
r.exchangeId),
- new
Column().header("ROUTE").dataAlign(HorizontalAlign.LEFT).maxWidth(25,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.routeId),
- new
Column().header("ID").dataAlign(HorizontalAlign.LEFT).maxWidth(25,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.nodeId),
- new
Column().header("DURATION").dataAlign(HorizontalAlign.RIGHT).with(this::getDuration))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("exchangeId", r.exchangeId);
+ jo.put("route", r.routeId);
+ jo.put("id", r.nodeId);
+ jo.put("duration", getDuration(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("EXCHANGE-ID").dataAlign(HorizontalAlign.LEFT).with(r ->
r.exchangeId),
+ new
Column().header("ROUTE").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(25, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.routeId),
+ new
Column().header("ID").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(25, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.nodeId),
+ new
Column().header("DURATION").dataAlign(HorizontalAlign.RIGHT).with(this::getDuration))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java
index ed49cd22d09d..e82c941f2753 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java
@@ -19,6 +19,7 @@ package org.apache.camel.dsl.jbang.core.commands.process;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -30,6 +31,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -132,22 +134,41 @@ public class ListCircuitBreaker extends
ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("COMPONENT").dataAlign(HorizontalAlign.LEFT).with(r ->
r.component),
- new
Column().header("ROUTE").dataAlign(HorizontalAlign.LEFT).with(r -> r.routeId),
- new
Column().header("ID").dataAlign(HorizontalAlign.LEFT).with(r -> r.id),
- new
Column().header("STATE").dataAlign(HorizontalAlign.LEFT).with(r -> r.state),
- new
Column().header("PENDING").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
- .with(this::getPending),
- new
Column().header("SUCCESS").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
- .with(this::getSuccess),
- new
Column().header("FAIL").headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.RIGHT)
- .with(this::getFailure),
- new
Column().header("REJECT").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
- .with(this::getReject))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("component", r.component);
+ jo.put("route", r.routeId);
+ jo.put("id", r.id);
+ jo.put("state", r.state);
+ jo.put("bufferedCalls", r.bufferedCalls);
+ jo.put("successfulCalls", r.successfulCalls);
+ jo.put("failedCalls", r.failedCalls);
+ jo.put("notPermittedCalls", r.notPermittedCalls);
+ jo.put("failureRate", r.failureRate);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("COMPONENT").dataAlign(HorizontalAlign.LEFT).with(r ->
r.component),
+ new
Column().header("ROUTE").dataAlign(HorizontalAlign.LEFT).with(r -> r.routeId),
+ new
Column().header("ID").dataAlign(HorizontalAlign.LEFT).with(r -> r.id),
+ new
Column().header("STATE").dataAlign(HorizontalAlign.LEFT).with(r -> r.state),
+ new
Column().header("PENDING").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
+ .with(this::getPending),
+ new
Column().header("SUCCESS").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
+ .with(this::getSuccess),
+ new
Column().header("FAIL").headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.RIGHT)
+ .with(this::getFailure),
+ new
Column().header("REJECT").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
+ .with(this::getReject))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java
index 45498ab0d396..5b5ec2a2b501 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListConsumer.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -32,6 +33,7 @@ import org.apache.camel.support.PatternHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -167,6 +169,23 @@ public class ListConsumer extends ProcessWatchCommand {
}
protected void printTable(List<Row> rows) {
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("age", r.age);
+ jo.put("id", r.id);
+ jo.put("status", getState(r));
+ jo.put("type", getType(r));
+ jo.put("inflight", r.inflight);
+ jo.put("poll", getTotal(r));
+ jo.put("sinceLast", getSinceLast(r));
+ jo.put("uri", r.uri);
+ return jo;
+ }).collect(Collectors.toList())));
+ return;
+ }
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java
index e06df90564a9..bb85f9afa337 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -31,6 +32,7 @@ import org.apache.camel.support.PatternHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -161,6 +163,21 @@ public class ListEndpoint extends ProcessWatchCommand {
}
protected void printTable(List<Row> rows) {
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("age", r.age);
+ jo.put("direction", r.direction);
+ jo.put("total", r.total);
+ jo.put("stub", r.stub);
+ jo.put("remote", r.remote);
+ jo.put("uri", r.endpoint);
+ return jo;
+ }).collect(Collectors.toList())));
+ return;
+ }
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEvent.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEvent.java
index b47115d61729..6bacad5501a3 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEvent.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEvent.java
@@ -19,6 +19,7 @@ package org.apache.camel.dsl.jbang.core.commands.process;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -30,6 +31,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -90,13 +92,26 @@ public class ListEvent extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("TYPE").dataAlign(HorizontalAlign.LEFT).with(r -> r.type),
- new
Column().header("AGE").dataAlign(HorizontalAlign.RIGHT).with(this::getTimestamp),
- new
Column().header("MESSAGE").dataAlign(HorizontalAlign.LEFT).with(r ->
r.message))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("type", r.type);
+ jo.put("age", getTimestamp(r));
+ jo.put("message", r.message);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("TYPE").dataAlign(HorizontalAlign.LEFT).with(r -> r.type),
+ new
Column().header("AGE").dataAlign(HorizontalAlign.RIGHT).with(this::getTimestamp),
+ new
Column().header("MESSAGE").dataAlign(HorizontalAlign.LEFT).with(r ->
r.message))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListGroovy.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListGroovy.java
index 613e5499bfed..fdc34ae24b4d 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListGroovy.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListGroovy.java
@@ -19,6 +19,7 @@ package org.apache.camel.dsl.jbang.core.commands.process;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -29,6 +30,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -94,16 +96,33 @@ public class ListGroovy extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("PRELOAD").headerAlign(HorizontalAlign.CENTER).with(r -> "" +
r.preloaddCounter),
- new
Column().header("COMPILE").headerAlign(HorizontalAlign.CENTER).with(r -> "" +
r.compiledCounter),
- new
Column().header("TIME").headerAlign(HorizontalAlign.CENTER).with(this::getTime),
- new
Column().header("SINCE").headerAlign(HorizontalAlign.CENTER).with(this::getLast),
- new
Column().header("CLASSES").headerAlign(HorizontalAlign.LEFT).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(60,
OverflowBehaviour.ELLIPSIS_LEFT).with(this::getClasses))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("preload", r.preloaddCounter);
+ jo.put("compile", r.compiledCounter);
+ jo.put("time", getTime(r));
+ jo.put("since", getLast(r));
+ jo.put("classes", getClasses(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("PRELOAD").headerAlign(HorizontalAlign.CENTER)
+ .with(r -> "" + r.preloaddCounter),
+ new
Column().header("COMPILE").headerAlign(HorizontalAlign.CENTER)
+ .with(r -> "" + r.compiledCounter),
+ new
Column().header("TIME").headerAlign(HorizontalAlign.CENTER).with(this::getTime),
+ new
Column().header("SINCE").headerAlign(HorizontalAlign.CENTER).with(this::getLast),
+ new
Column().header("CLASSES").headerAlign(HorizontalAlign.LEFT).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(60,
OverflowBehaviour.ELLIPSIS_LEFT).with(this::getClasses))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListHealth.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListHealth.java
index a9d75a60379a..508e04c1aff6 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListHealth.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListHealth.java
@@ -37,6 +37,7 @@ import org.apache.camel.util.StringHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -189,28 +190,44 @@ public class ListHealth extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
- new Column().header("NAME").dataAlign(HorizontalAlign.LEFT)
- .maxWidth(40, OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.name),
- new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.ago),
- new Column().header("ID").dataAlign(HorizontalAlign.LEFT)
- .maxWidth(40, OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(this::getId),
- new
Column().header("RL").minWidth(4).maxWidth(4).with(this::getLR),
- new
Column().header("STATUS").headerAlign(HorizontalAlign.CENTER)
- .dataAlign(HorizontalAlign.CENTER)
- .with(r -> r.state),
- new
Column().header("RATE").headerAlign(HorizontalAlign.CENTER)
- .dataAlign(HorizontalAlign.RIGHT)
- .with(this::getRate),
- new
Column().header("SINCE").headerAlign(HorizontalAlign.CENTER)
- .dataAlign(HorizontalAlign.RIGHT)
- .with(this::getSince),
- new
Column().header("MESSAGE").dataAlign(HorizontalAlign.LEFT)
- .maxWidth(80, OverflowBehaviour.NEWLINE)
- .with(r -> r.message))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("age", r.ago);
+ jo.put("id", getId(r));
+ jo.put("rl", getLR(r));
+ jo.put("status", r.state);
+ jo.put("rate", getRate(r));
+ jo.put("since", getSince(r));
+ jo.put("message", r.message);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
+ new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(40, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.name),
+ new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.ago),
+ new
Column().header("ID").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(40, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(this::getId),
+ new
Column().header("RL").minWidth(4).maxWidth(4).with(this::getLR),
+ new
Column().header("STATUS").headerAlign(HorizontalAlign.CENTER)
+ .dataAlign(HorizontalAlign.CENTER)
+ .with(r -> r.state),
+ new
Column().header("RATE").headerAlign(HorizontalAlign.CENTER)
+ .dataAlign(HorizontalAlign.RIGHT)
+ .with(this::getRate),
+ new
Column().header("SINCE").headerAlign(HorizontalAlign.CENTER)
+ .dataAlign(HorizontalAlign.RIGHT)
+ .with(this::getSince),
+ new
Column().header("MESSAGE").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(80, OverflowBehaviour.NEWLINE)
+ .with(r -> r.message))));
+ }
}
if (trace) {
var traces
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInflight.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInflight.java
index 4f16fbee5a58..bccce5d732fa 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInflight.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInflight.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -31,6 +32,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -104,19 +106,37 @@ public class ListInflight extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("EXCHANGE-ID").dataAlign(HorizontalAlign.LEFT).with(r ->
r.exchangeId),
- new
Column().header("REMOTE").visible(remoteVisible.get()).dataAlign(HorizontalAlign.CENTER)
- .with(this::getRemote),
- new
Column().header("ROUTE").dataAlign(HorizontalAlign.LEFT).maxWidth(25,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.atRouteId),
- new
Column().header("ID").dataAlign(HorizontalAlign.LEFT).maxWidth(25,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.nodeId),
- new
Column().header("ELAPSED").dataAlign(HorizontalAlign.RIGHT).with(this::getElapsed),
- new
Column().header("DURATION").dataAlign(HorizontalAlign.RIGHT).with(this::getDuration))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("exchangeId", r.exchangeId);
+ jo.put("remote", r.fromRemoteEndpoint);
+ jo.put("route", r.atRouteId);
+ jo.put("id", r.nodeId);
+ jo.put("elapsed", getElapsed(r));
+ jo.put("duration", getDuration(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("EXCHANGE-ID").dataAlign(HorizontalAlign.LEFT).with(r ->
r.exchangeId),
+ new
Column().header("REMOTE").visible(remoteVisible.get()).dataAlign(HorizontalAlign.CENTER)
+ .with(this::getRemote),
+ new
Column().header("ROUTE").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(25, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.atRouteId),
+ new
Column().header("ID").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(25, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.nodeId),
+ new
Column().header("ELAPSED").dataAlign(HorizontalAlign.RIGHT).with(this::getElapsed),
+ new
Column().header("DURATION").dataAlign(HorizontalAlign.RIGHT).with(this::getDuration))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInternalTask.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInternalTask.java
index aab3db945234..8260ac6afd81 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInternalTask.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInternalTask.java
@@ -19,6 +19,7 @@ package org.apache.camel.dsl.jbang.core.commands.process;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -30,6 +31,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -97,21 +99,40 @@ public class ListInternalTask extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("TASK").dataAlign(HorizontalAlign.LEFT).with(r -> r.task),
- new
Column().header("STATUS").dataAlign(HorizontalAlign.LEFT).with(r -> r.status),
- new
Column().header("ATTEMPT").dataAlign(HorizontalAlign.LEFT).with(r -> "" +
r.attempts),
- new
Column().header("DELAY").dataAlign(HorizontalAlign.LEFT).with(r -> "" +
r.delay),
- new
Column().header("ELAPSED").dataAlign(HorizontalAlign.LEFT).with(this::getElapsed),
- new
Column().header("FIRST").dataAlign(HorizontalAlign.LEFT).with(this::getFirst),
- new
Column().header("LAST").dataAlign(HorizontalAlign.LEFT).with(this::getLast),
- new
Column().header("NEXT").dataAlign(HorizontalAlign.LEFT).with(this::getNext),
- new
Column().header("FAILURE").dataAlign(HorizontalAlign.LEFT)
- .maxWidth(140, OverflowBehaviour.NEWLINE)
- .with(r -> r.error))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("task", r.task);
+ jo.put("status", r.status);
+ jo.put("attempts", r.attempts);
+ jo.put("delay", r.delay);
+ jo.put("elapsed", getElapsed(r));
+ jo.put("first", getFirst(r));
+ jo.put("last", getLast(r));
+ jo.put("next", getNext(r));
+ jo.put("failure", r.error);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("TASK").dataAlign(HorizontalAlign.LEFT).with(r -> r.task),
+ new
Column().header("STATUS").dataAlign(HorizontalAlign.LEFT).with(r -> r.status),
+ new
Column().header("ATTEMPT").dataAlign(HorizontalAlign.LEFT).with(r -> "" +
r.attempts),
+ new
Column().header("DELAY").dataAlign(HorizontalAlign.LEFT).with(r -> "" +
r.delay),
+ new
Column().header("ELAPSED").dataAlign(HorizontalAlign.LEFT).with(this::getElapsed),
+ new
Column().header("FIRST").dataAlign(HorizontalAlign.LEFT).with(this::getFirst),
+ new
Column().header("LAST").dataAlign(HorizontalAlign.LEFT).with(this::getLast),
+ new
Column().header("NEXT").dataAlign(HorizontalAlign.LEFT).with(this::getNext),
+ new
Column().header("FAILURE").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(140, OverflowBehaviour.NEWLINE)
+ .with(r -> r.error))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListKafka.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListKafka.java
index 8885e4828349..490a994c30fb 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListKafka.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListKafka.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -179,27 +180,48 @@ public class ListKafka extends ProcessWatchCommand {
}
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("ROUTE").dataAlign(HorizontalAlign.LEFT).with(this::getRouteId),
- new
Column().header("STATUS").dataAlign(HorizontalAlign.LEFT).with(this::getState),
- new
Column().header("GROUP-ID").dataAlign(HorizontalAlign.LEFT).with(r ->
r.groupId),
- new
Column().header("TOPIC").dataAlign(HorizontalAlign.RIGHT).with(r ->
r.lastTopic),
- new
Column().header("PARTITION").dataAlign(HorizontalAlign.RIGHT).with(r -> "" +
r.lastPartition),
- new
Column().header("OFFSET").dataAlign(HorizontalAlign.RIGHT).with(r -> "" +
r.lastOffset),
- new
Column().header("COMMITTED").visible(committed).dataAlign(HorizontalAlign.RIGHT)
- .with(this::getCommitted),
- new
Column().header("ERROR").dataAlign(HorizontalAlign.LEFT)
- .maxWidth(60, OverflowBehaviour.NEWLINE)
- .with(this::getLastError),
- new
Column().header("ENDPOINT").visible(!wideUri).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(this::getUri),
- new
Column().header("ENDPOINT").visible(wideUri).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(140, OverflowBehaviour.NEWLINE)
- .with(this::getUri))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("route", getRouteId(r));
+ jo.put("status", getState(r));
+ jo.put("groupId", r.groupId);
+ jo.put("topic", r.lastTopic);
+ jo.put("partition", r.lastPartition);
+ jo.put("offset", r.lastOffset);
+ if (committed) {
+ jo.put("committed", getCommitted(r));
+ }
+ jo.put("error", getLastError(r));
+ jo.put("endpoint", getUri(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("ROUTE").dataAlign(HorizontalAlign.LEFT).with(this::getRouteId),
+ new
Column().header("STATUS").dataAlign(HorizontalAlign.LEFT).with(this::getState),
+ new
Column().header("GROUP-ID").dataAlign(HorizontalAlign.LEFT).with(r ->
r.groupId),
+ new
Column().header("TOPIC").dataAlign(HorizontalAlign.RIGHT).with(r ->
r.lastTopic),
+ new
Column().header("PARTITION").dataAlign(HorizontalAlign.RIGHT).with(r -> "" +
r.lastPartition),
+ new
Column().header("OFFSET").dataAlign(HorizontalAlign.RIGHT).with(r -> "" +
r.lastOffset),
+ new
Column().header("COMMITTED").visible(committed).dataAlign(HorizontalAlign.RIGHT)
+ .with(this::getCommitted),
+ new
Column().header("ERROR").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(60, OverflowBehaviour.NEWLINE)
+ .with(this::getLastError),
+ new
Column().header("ENDPOINT").visible(!wideUri).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(this::getUri),
+ new
Column().header("ENDPOINT").visible(wideUri).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(140, OverflowBehaviour.NEWLINE)
+ .with(this::getUri))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListMetric.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListMetric.java
index ca95c89c39f1..f7c6f1269ade 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListMetric.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListMetric.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringJoiner;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -31,6 +32,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -203,26 +205,46 @@ public class ListMetric extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("TYPE").dataAlign(HorizontalAlign.LEFT).with(r -> r.type),
- new
Column().header("METRIC").dataAlign(HorizontalAlign.LEFT).maxWidth(40,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.metricName),
- new
Column().header("ID").dataAlign(HorizontalAlign.LEFT).maxWidth(40,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.metricId),
- new
Column().header("VALUE").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
- .with(r -> getNumber(r.count)),
- new
Column().header("MEAN").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
- .with(r -> getNumber(r.mean)),
- new
Column().header("MAX").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
- .with(r -> getNumber(r.max)),
- new
Column().header("TOTAL").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
- .with(r -> getNumber(r.total)),
- new
Column().header("TAGS").visible(tags).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(60, OverflowBehaviour.NEWLINE)
- .with(r -> r.tags))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("type", r.type);
+ jo.put("metric", r.metricName);
+ jo.put("id", r.metricId);
+ jo.put("value", r.count);
+ jo.put("mean", r.mean);
+ jo.put("max", r.max);
+ jo.put("total", r.total);
+ jo.put("tags", r.tags);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("TYPE").dataAlign(HorizontalAlign.LEFT).with(r -> r.type),
+ new
Column().header("METRIC").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(40, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.metricName),
+ new
Column().header("ID").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(40, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.metricId),
+ new
Column().header("VALUE").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
+ .with(r -> getNumber(r.count)),
+ new
Column().header("MEAN").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
+ .with(r -> getNumber(r.mean)),
+ new
Column().header("MAX").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
+ .with(r -> getNumber(r.max)),
+ new
Column().header("TOTAL").headerAlign(HorizontalAlign.RIGHT).dataAlign(HorizontalAlign.RIGHT)
+ .with(r -> getNumber(r.total)),
+ new
Column().header("TAGS").visible(tags).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(60, OverflowBehaviour.NEWLINE)
+ .with(r -> r.tags))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
index 8c63a8fef0f1..cdabe64a1101 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringJoiner;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -31,6 +32,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -118,13 +120,27 @@ public class ListPlatformHttp extends ProcessWatchCommand
{
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("URL").dataAlign(HorizontalAlign.LEFT).with(r -> r.url),
- new
Column().header("METHOD").dataAlign(HorizontalAlign.LEFT).with(r -> r.verbs),
- new
Column().header("CONTENT-TYPE").dataAlign(HorizontalAlign.LEFT).with(this::getContent))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("url", r.url);
+ jo.put("method", r.verbs);
+ jo.put("consumes", r.consumes);
+ jo.put("produces", r.produces);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("URL").dataAlign(HorizontalAlign.LEFT).with(r -> r.url),
+ new
Column().header("METHOD").dataAlign(HorizontalAlign.LEFT).with(r -> r.verbs),
+ new
Column().header("CONTENT-TYPE").dataAlign(HorizontalAlign.LEFT).with(this::getContent))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
index 4881e6d98d70..d1d68372ec82 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
@@ -53,10 +53,6 @@ public class ListProcess extends ProcessWatchCommand {
description = "List only pid in the output")
boolean pid;
- @CommandLine.Option(names = { "--json" },
- description = "Output in JSON Format")
- boolean jsonOutput;
-
public ListProcess(CamelJBangMain main) {
super(main);
}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProducer.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProducer.java
index c19723fe8929..98bb30161abe 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProducer.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProducer.java
@@ -19,6 +19,7 @@ package org.apache.camel.dsl.jbang.core.commands.process;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -31,6 +32,7 @@ import org.apache.camel.support.PatternHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -136,6 +138,20 @@ public class ListProducer extends ProcessWatchCommand {
}
protected void printTable(List<Row> rows) {
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("age", r.age);
+ jo.put("id", r.id);
+ jo.put("status", getState(r));
+ jo.put("type", getType(r));
+ jo.put("uri", r.uri);
+ return jo;
+ }).collect(Collectors.toList())));
+ return;
+ }
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProperties.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProperties.java
index 92809ff0285d..c2130dd622a6 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProperties.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProperties.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -31,6 +32,7 @@ import org.apache.camel.util.SensitiveUtils;
import org.apache.camel.util.StringHelper;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -133,22 +135,40 @@ public class ListProperties extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("LOCATION").dataAlign(HorizontalAlign.LEFT).maxWidth(80,
OverflowBehaviour.NEWLINE)
- .with(r -> r.loc),
- new
Column().header("KEY").dataAlign(HorizontalAlign.LEFT).maxWidth(50,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.key),
- new
Column().header("VALUE").dataAlign(HorizontalAlign.LEFT).maxWidth(80,
OverflowBehaviour.NEWLINE)
- .with(r -> "" + r.value),
- new
Column().header("FUNCTION").visible(verbose).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(50, OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(this::getFunction),
- new Column().header("ORIGINAL
VALUE").visible(verbose).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(80, OverflowBehaviour.NEWLINE)
- .with(r -> "" + r.originalValue))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("location", r.loc);
+ jo.put("key", r.key);
+ jo.put("value", "" + r.value);
+ jo.put("function", getFunction(r));
+ jo.put("originalValue", "" + r.originalValue);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("LOCATION").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(80, OverflowBehaviour.NEWLINE)
+ .with(r -> r.loc),
+ new
Column().header("KEY").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(50, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.key),
+ new
Column().header("VALUE").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(80, OverflowBehaviour.NEWLINE)
+ .with(r -> "" + r.value),
+ new
Column().header("FUNCTION").visible(verbose).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(50, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(this::getFunction),
+ new Column().header("ORIGINAL
VALUE").visible(verbose).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(80, OverflowBehaviour.NEWLINE)
+ .with(r -> "" + r.originalValue))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListRest.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListRest.java
index 31ff9e539e76..5c277debad0b 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListRest.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListRest.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.StringJoiner;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -32,6 +33,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -102,16 +104,31 @@ public class ListRest extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("URL").dataAlign(HorizontalAlign.LEFT).with(r -> r.url),
- new
Column().header("METHOD").dataAlign(HorizontalAlign.LEFT).with(r -> r.method),
- new
Column().header("FIRST").visible(verbose).dataAlign(HorizontalAlign.LEFT).with(this::getKind),
- new
Column().header("DESCRIPTION").visible(verbose).maxWidth(40,
OverflowBehaviour.NEWLINE)
- .dataAlign(HorizontalAlign.LEFT).with(r ->
r.description),
- new
Column().header("CONTENT-TYPE").dataAlign(HorizontalAlign.LEFT).with(this::getContent))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("url", r.url);
+ jo.put("method", r.method);
+ jo.put("consumes", r.consumes);
+ jo.put("produces", r.produces);
+ jo.put("description", r.description);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("URL").dataAlign(HorizontalAlign.LEFT).with(r -> r.url),
+ new
Column().header("METHOD").dataAlign(HorizontalAlign.LEFT).with(r -> r.method),
+ new
Column().header("FIRST").visible(verbose).dataAlign(HorizontalAlign.LEFT).with(this::getKind),
+ new
Column().header("DESCRIPTION").visible(verbose).maxWidth(40,
OverflowBehaviour.NEWLINE)
+ .dataAlign(HorizontalAlign.LEFT).with(r ->
r.description),
+ new
Column().header("CONTENT-TYPE").dataAlign(HorizontalAlign.LEFT).with(this::getContent))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java
index c98f55ad10e7..4a70bed96302 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringJoiner;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -31,6 +32,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -112,23 +114,41 @@ public class ListService extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("COMPONENT").dataAlign(HorizontalAlign.LEFT).with(r ->
r.component),
- new
Column().header("DIR").dataAlign(HorizontalAlign.LEFT).with(r -> r.direction),
- new
Column().header("ROUTE").dataAlign(HorizontalAlign.LEFT).with(this::getRouteId),
- new
Column().header("PROTOCOL").dataAlign(HorizontalAlign.LEFT).with(this::getProtocol),
- new
Column().header("SERVICE").dataAlign(HorizontalAlign.LEFT).with(this::getService),
- new
Column().header("METADATA").visible(metadata).dataAlign(HorizontalAlign.LEFT).with(this::getMetadata),
- new
Column().header("TOTAL").dataAlign(HorizontalAlign.RIGHT).with(r -> "" +
r.hits),
- new
Column().header("ENDPOINT").visible(!wideUri).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(this::getUri),
- new
Column().header("ENDPOINT").visible(wideUri).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(140, OverflowBehaviour.NEWLINE)
- .with(this::getUri))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("component", r.component);
+ jo.put("direction", r.direction);
+ jo.put("routeId", getRouteId(r));
+ jo.put("protocol", getProtocol(r));
+ jo.put("service", getService(r));
+ jo.put("total", r.hits);
+ jo.put("endpoint", r.endpointUri);
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("COMPONENT").dataAlign(HorizontalAlign.LEFT).with(r ->
r.component),
+ new
Column().header("DIR").dataAlign(HorizontalAlign.LEFT).with(r -> r.direction),
+ new
Column().header("ROUTE").dataAlign(HorizontalAlign.LEFT).with(this::getRouteId),
+ new
Column().header("PROTOCOL").dataAlign(HorizontalAlign.LEFT).with(this::getProtocol),
+ new
Column().header("SERVICE").dataAlign(HorizontalAlign.LEFT).with(this::getService),
+ new
Column().header("METADATA").visible(metadata).dataAlign(HorizontalAlign.LEFT)
+ .with(this::getMetadata),
+ new
Column().header("TOTAL").dataAlign(HorizontalAlign.RIGHT).with(r -> "" +
r.hits),
+ new
Column().header("ENDPOINT").visible(!wideUri).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(this::getUri),
+ new
Column().header("ENDPOINT").visible(wideUri).dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(140, OverflowBehaviour.NEWLINE)
+ .with(this::getUri))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListTransformer.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListTransformer.java
index cb66c00d342d..dfd20b89b233 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListTransformer.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListTransformer.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -30,6 +31,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -56,6 +58,10 @@ public class ListTransformer extends ProcessBaseCommand {
description = "Sort by pid, name, age or total",
defaultValue = "pid")
String sort;
+ @CommandLine.Option(names = { "--json" },
+ description = "Output in JSON Format")
+ boolean jsonOutput;
+
public ListTransformer(CamelJBangMain main) {
super(main);
}
@@ -104,6 +110,19 @@ public class ListTransformer extends ProcessBaseCommand {
}
protected void printTable(List<Row> rows) {
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("age", r.age);
+ jo.put("dataType", r.dataTypeName);
+ jo.put("from", r.dataTypeFrom);
+ jo.put("to", r.dataTypeTo);
+ return jo;
+ }).collect(Collectors.toList())));
+ return;
+ }
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVariable.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVariable.java
index fe3809a40a22..5efda04fe33b 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVariable.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVariable.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -29,6 +30,7 @@ import
org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -104,17 +106,32 @@ public class ListVariable extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- 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("REPO").headerAlign(HorizontalAlign.CENTER).with(r -> r.id),
- new
Column().header("TYPE").headerAlign(HorizontalAlign.CENTER)
- .maxWidth(40,
OverflowBehaviour.ELLIPSIS_LEFT).with(r -> r.type),
- new
Column().header("KEY").dataAlign(HorizontalAlign.LEFT).maxWidth(50,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.key),
- new
Column().header("VALUE").headerAlign(HorizontalAlign.RIGHT).maxWidth(80,
OverflowBehaviour.NEWLINE)
- .with(this::getValue))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("repo", r.id);
+ jo.put("type", r.type);
+ jo.put("key", r.key);
+ jo.put("value", getValue(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ 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("REPO").headerAlign(HorizontalAlign.CENTER).with(r -> r.id),
+ new
Column().header("TYPE").headerAlign(HorizontalAlign.CENTER)
+ .maxWidth(40,
OverflowBehaviour.ELLIPSIS_LEFT).with(r -> r.type),
+ new
Column().header("KEY").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(50, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.key),
+ new
Column().header("VALUE").headerAlign(HorizontalAlign.RIGHT).maxWidth(80,
OverflowBehaviour.NEWLINE)
+ .with(this::getValue))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVault.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVault.java
index 5269b0c3cab2..8acb4a6ba2b6 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVault.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVault.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
@@ -30,6 +31,7 @@ import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonArray;
import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@@ -187,17 +189,34 @@ public class ListVault extends ProcessWatchCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
- printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
- new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(40,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.name),
- new
Column().header("VAULT").dataAlign(HorizontalAlign.LEFT).with(r -> r.vault),
- new
Column().header("REGION").dataAlign(HorizontalAlign.LEFT).with(r -> r.region),
- new
Column().header("SECRET").dataAlign(HorizontalAlign.LEFT).maxWidth(40,
OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(r -> r.secret),
- new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(this::getAgo),
- new
Column().header("UPDATE").headerAlign(HorizontalAlign.LEFT).with(this::getReloadAgo),
- new
Column().header("CHECK").headerAlign(HorizontalAlign.LEFT).with(this::getCheckAgo))));
+ if (jsonOutput) {
+ printer().println(Jsoner.serialize(rows.stream().map(r -> {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", r.pid);
+ jo.put("name", r.name);
+ jo.put("vault", r.vault);
+ jo.put("region", r.region);
+ jo.put("secret", r.secret);
+ jo.put("age", getAgo(r));
+ jo.put("update", getReloadAgo(r));
+ jo.put("check", getCheckAgo(r));
+ return jo;
+ }).collect(Collectors.toList())));
+ } else {
+ printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
+ new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
+ new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(40, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.name),
+ new
Column().header("VAULT").dataAlign(HorizontalAlign.LEFT).with(r -> r.vault),
+ new
Column().header("REGION").dataAlign(HorizontalAlign.LEFT).with(r -> r.region),
+ new
Column().header("SECRET").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(40, OverflowBehaviour.ELLIPSIS_RIGHT)
+ .with(r -> r.secret),
+ new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(this::getAgo),
+ new
Column().header("UPDATE").headerAlign(HorizontalAlign.LEFT).with(this::getReloadAgo),
+ new
Column().header("CHECK").headerAlign(HorizontalAlign.LEFT).with(this::getCheckAgo))));
+ }
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessWatchCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessWatchCommand.java
index d9559a9f5a1c..ce37b306577c 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessWatchCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessWatchCommand.java
@@ -34,6 +34,10 @@ abstract class ProcessWatchCommand extends
ProcessBaseCommand {
description = "Execute periodically and showing output
fullscreen")
boolean watch;
+ @CommandLine.Option(names = { "--json" },
+ description = "Output in JSON Format")
+ boolean jsonOutput;
+
private CommandHelper.ReadConsoleTask waitUserTask;
public ProcessWatchCommand(CamelJBangMain main) {