This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 87a072e1b6e CAMEL-18406: camel-jbang - Status command
87a072e1b6e is described below
commit 87a072e1b6e05f8ddfa46e594160fdacbe1b56cd
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Aug 25 07:19:32 2022 +0200
CAMEL-18406: camel-jbang - Status command
---
camel-dependencies/pom.xml | 2 +-
.../dsl/jbang/core/commands/ExportBaseCommand.java | 2 +-
.../core/commands/process/CamelContextStatus.java | 7 +++--
.../core/commands/process/CamelRouteStatus.java | 34 ++++++++++++++++-----
.../jbang/core/commands/process/ListProcess.java | 35 +++++++++++++++++++---
.../core/commands/process/ProcessBaseCommand.java | 7 -----
parent/pom.xml | 2 +-
7 files changed, 65 insertions(+), 24 deletions(-)
diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index 4c6d4f2b6d8..16ea2b4e4b6 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -51,7 +51,7 @@
<arquillian-jetty-embedded-9-version>1.0.0.CR3</arquillian-jetty-embedded-9-version>
<arquillian-version>1.6.0.Final</arquillian-version>
<arquillian-weld-embedded-version>2.0.0.Final</arquillian-weld-embedded-version>
- <ascii-table-version>1.3.0</ascii-table-version>
+ <ascii-table-version>1.4.0</ascii-table-version>
<asm-version>8.0.1</asm-version>
<asn1bean-version>1.13.0</asn1bean-version>
<assertj-version>3.23.1</assertj-version>
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 36e69b04fe3..9f21a71097a 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -98,7 +98,7 @@ abstract class ExportBaseCommand extends CamelCommand {
protected String quarkusArtifactId;
@CommandLine.Option(names = { "--quarkus-version" }, description =
"Quarkus Platform version",
- defaultValue = "2.11.2.Final")
+ defaultValue = "2.11.3.Final")
protected String quarkusVersion;
@CommandLine.Option(names = { "--maven-wrapper" }, defaultValue = "true",
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 e78aa8bb8d4..a43f274dbd7 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
@@ -27,6 +27,7 @@ import java.util.Map;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
import com.github.freva.asciitable.HorizontalAlign;
+import com.github.freva.asciitable.OverflowBehaviour;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.ObjectHelper;
@@ -102,8 +103,8 @@ public class CamelContextStatus extends ProcessBaseCommand {
if (!rows.isEmpty()) {
System.out.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).maxColumnWidth(30)
- .with(r -> maxWidth(r.name, 28)),
+ new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS)
+ .with(r -> r.name),
new
Column().header("READY").dataAlign(HorizontalAlign.CENTER).with(r -> r.ready),
new
Column().header("STATE").headerAlign(HorizontalAlign.CENTER)
.with(r -> StringHelper.capitalize(r.state)),
@@ -111,7 +112,7 @@ public class CamelContextStatus extends ProcessBaseCommand {
new Column().header("TOTAL").with(r -> r.total),
new Column().header("FAILED").with(r -> r.failed),
new Column().header("INFLIGHT").with(r -> r.inflight),
- new Column().header("LAST AGO").with(r -> r.sinceLast))));
+ new Column().header("SINCE-LAST").with(r ->
r.sinceLast))));
}
return 0;
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 3359cc518f6..62267d0efca 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
@@ -27,7 +27,9 @@ import java.util.Map;
import com.github.freva.asciitable.AsciiTable;
import com.github.freva.asciitable.Column;
import com.github.freva.asciitable.HorizontalAlign;
+import com.github.freva.asciitable.OverflowBehaviour;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.util.FileUtil;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
@@ -131,14 +133,16 @@ public class CamelRouteStatus extends ProcessBaseCommand {
rows.sort(this::sortRow);
if (!rows.isEmpty()) {
+ boolean sources = rows.stream().noneMatch(r -> r.source == null);
System.out.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).maxColumnWidth(30)
- .with(r -> maxWidth(r.name, 28)),
- new
Column().header("ID").dataAlign(HorizontalAlign.LEFT).maxColumnWidth(30)
- .with(r -> maxWidth(r.routeId, 28)),
- new
Column().header("FROM").dataAlign(HorizontalAlign.LEFT).maxColumnWidth(40)
- .with(r -> maxWidth(r.from, 38)),
+ new Column().header(sources ? "SOURCE" :
"NAME").dataAlign(HorizontalAlign.LEFT)
+ .maxWidth(30, OverflowBehaviour.CLIP)
+ .with(r -> sourceLocLine(sources ? r.source :
r.name)),
+ new
Column().header("ID").dataAlign(HorizontalAlign.LEFT).maxWidth(25,
OverflowBehaviour.ELLIPSIS)
+ .with(r -> r.routeId),
+ new
Column().header("FROM").dataAlign(HorizontalAlign.LEFT).maxWidth(40,
OverflowBehaviour.ELLIPSIS)
+ .with(r -> r.from),
new
Column().header("STATE").headerAlign(HorizontalAlign.CENTER)
.with(r -> StringHelper.capitalize(r.state)),
new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.uptime),
@@ -148,7 +152,7 @@ public class CamelRouteStatus extends ProcessBaseCommand {
new Column().header("MEAN").with(r -> r.mean),
new Column().header("MIN").with(r -> r.min),
new Column().header("MAX").with(r -> r.max),
- new Column().header("LAST AGO").with(r -> r.sinceLast))));
+ new Column().header("SINCE-LAST").with(r ->
r.sinceLast))));
}
return 0;
@@ -169,6 +173,22 @@ public class CamelRouteStatus extends ProcessBaseCommand {
return null;
}
+ protected String sourceLocLine(String location) {
+ while (StringHelper.countChar(location, ':') > 1) {
+ location = location.substring(location.indexOf(':') + 1);
+ }
+ int pos = location.indexOf(':');
+ // is the colon as scheme or line number
+ String last = location.substring(pos + 1);
+ boolean digits = last.matches("\\d+");
+ if (!digits) {
+ // it must be scheme so clip that
+ location = location.substring(pos + 1);
+ }
+ location = FileUtil.stripPath(location);
+ return location;
+ }
+
protected int sortRow(Row o1, Row o2) {
// no sort by default
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 3f022678093..55233f1f528 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
@@ -16,6 +16,14 @@
*/
package org.apache.camel.dsl.jbang.core.commands.process;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.github.freva.asciitable.AsciiTable;
+import com.github.freva.asciitable.Column;
+import com.github.freva.asciitable.HorizontalAlign;
+import com.github.freva.asciitable.OverflowBehaviour;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.TimeUtils;
@@ -35,6 +43,8 @@ public class ListProcess extends ProcessBaseCommand {
@Override
public Integer call() throws Exception {
+ List<Row> rows = new ArrayList<>();
+
ProcessHandle.allProcesses()
.sorted((o1, o2) -> {
switch (sort) {
@@ -50,13 +60,30 @@ public class ListProcess extends ProcessBaseCommand {
}
})
.forEach(ph -> {
- String name = extractName(ph);
- if (ObjectHelper.isNotEmpty(name)) {
- String ago = TimeUtils.printSince(extractSince(ph));
- System.out.println(ph.pid() + " camel run " + name + "
(age: " + ago + ")");
+ Row row = new Row();
+ row.name = extractName(ph);
+ if (ObjectHelper.isNotEmpty(row.name)) {
+ row.pid = "" + ph.pid();
+ row.age = TimeUtils.printSince(extractSince(ph));
+ rows.add(row);
}
});
+
+ if (!rows.isEmpty()) {
+ System.out.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)
+ .with(r -> r.name),
+ new
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.age))));
+ }
+
return 0;
}
+ private static class Row {
+ String pid;
+ String name;
+ String age;
+ }
+
}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
index 727dbfe3ca5..82abe67c958 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
@@ -94,11 +94,4 @@ abstract class ProcessBaseCommand extends CamelCommand {
return since;
}
- static String maxWidth(String text, int max) {
- if (text == null || text.length() <= max) {
- return text;
- }
- return text.substring(0, max);
- }
-
}
diff --git a/parent/pom.xml b/parent/pom.xml
index 2fb96328770..ada162bf669 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -68,7 +68,7 @@
<arquillian-jetty-embedded-9-version>1.0.0.CR3</arquillian-jetty-embedded-9-version>
<arquillian-version>1.6.0.Final</arquillian-version>
<arquillian-weld-embedded-version>2.0.0.Final</arquillian-weld-embedded-version>
- <ascii-table-version>1.3.0</ascii-table-version>
+ <ascii-table-version>1.4.0</ascii-table-version>
<asm-version>8.0.1</asm-version>
<asn1bean-version>1.13.0</asn1bean-version>
<assertj-version>3.23.1</assertj-version>