You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/08/30 09:08:20 UTC

[camel] branch main updated: CAMEL-18406: camel-jbang - Camel CLI polish

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 6cf849c14aa CAMEL-18406: camel-jbang - Camel CLI polish
6cf849c14aa is described below

commit 6cf849c14aae626e62580fcc2fd82dfc6e4f4c3a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Aug 30 11:07:58 2022 +0200

    CAMEL-18406: camel-jbang - Camel CLI polish
---
 .../apache/camel/dsl/jbang/core/commands/Run.java  | 19 +++++++-------
 .../core/commands/process/CamelContextStatus.java  |  7 +++--
 .../core/commands/process/CamelContextTop.java     |  7 +++--
 .../core/commands/process/CamelRouteStatus.java    | 30 +++++-----------------
 .../jbang/core/commands/process/ListProcess.java   |  5 +++-
 .../core/commands/process/ProcessBaseCommand.java  | 16 ++++++++++++
 6 files changed, 46 insertions(+), 38 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index ce959f140db..da0b8f919d0 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -333,7 +333,6 @@ class Run extends CamelCommand {
         });
         main.setAppName("Apache Camel (JBang)");
 
-        writeSetting(main, profileProperties, "camel.main.name", name);
         writeSetting(main, profileProperties, "camel.main.sourceLocationEnabled", "true");
         if (dev) {
             writeSetting(main, profileProperties, "camel.main.routesReloadEnabled", "true");
@@ -404,7 +403,6 @@ class Run extends CamelCommand {
 
         if (files != null) {
             for (String file : files) {
-
                 if (file.startsWith("clipboard") && !(new File(file).exists())) {
                     file = loadFromClipboard(file);
                 } else if (skipFile(file)) {
@@ -464,6 +462,13 @@ class Run extends CamelCommand {
                     }
                 }
 
+                if ("CamelJBang".equals(name)) {
+                    // no specific name was given so lets use the name from the first integration file
+                    // remove scheme and keep only the name (no path or ext)
+                    String s = StringHelper.after(file, ":");
+                    name = FileUtil.onlyName(s);
+                }
+
                 js.add(file);
                 if (dev && file.startsWith("file:")) {
                     // we can only reload if file based
@@ -472,6 +477,8 @@ class Run extends CamelCommand {
             }
         }
 
+        writeSetting(main, profileProperties, "camel.main.name", name);
+
         if (js.length() > 0) {
             main.addInitialProperty("camel.main.routesIncludePattern", js.toString());
             writeSettings("camel.main.routesIncludePattern", js.toString());
@@ -681,14 +688,6 @@ class Run extends CamelCommand {
         return answer;
     }
 
-    private static String getPid() {
-        try {
-            return "" + ProcessHandle.current().pid();
-        } catch (Throwable e) {
-            return null;
-        }
-    }
-
     private boolean knownFile(String file) throws Exception {
         // always include kamelets
         String ext = FileUtil.onlyExt(file, false);
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 523a346353c..60afaaa85bb 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
@@ -59,14 +59,17 @@ public class CamelContextStatus extends ProcessBaseCommand {
                     // there must be a status file for the running Camel integration
                     if (root != null) {
                         Row row = new Row();
-                        row.name = extractName(root, ph);
+                        JsonObject context = (JsonObject) root.get("context");
+                        row.name = context.getString("name");
+                        if ("CamelJBang".equals(row.name)) {
+                            row.name = extractName(root, ph);
+                        }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
                         row.ago = TimeUtils.printSince(row.uptime);
                         JsonObject runtime = (JsonObject) root.get("runtime");
                         row.platform = extractPlatform(ph, runtime);
                         row.platformVersion = runtime != null ? runtime.getString("version") : null;
-                        JsonObject context = (JsonObject) root.get("context");
                         row.state = context.getInteger("phase");
                         row.camelVersion = context.getString("version");
                         Map<String, ?> stats = context.getMap("statistics");
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 6c708d6395e..638b45edc12 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
@@ -58,7 +58,11 @@ public class CamelContextTop extends ProcessBaseCommand {
                     if (root != null) {
                         Row row = new Row();
                         rows.add(row);
-                        row.name = extractName(root, ph);
+                        JsonObject context = (JsonObject) root.get("context");
+                        row.name = context.getString("name");
+                        if ("CamelJBang".equals(row.name)) {
+                            row.name = extractName(root, ph);
+                        }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
                         row.ago = TimeUtils.printSince(row.uptime);
@@ -66,7 +70,6 @@ public class CamelContextTop extends ProcessBaseCommand {
                         row.platform = extractPlatform(ph, runtime);
                         row.platformVersion = runtime != null ? runtime.getString("platformVersion") : null;
                         row.javaVersion = runtime != null ? runtime.getString("javaVersion") : null;
-                        JsonObject context = (JsonObject) root.get("context");
                         row.state = context.getInteger("phase");
                         row.camelVersion = context.getString("version");
 
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 7ec40fd9353..6c5740a41fb 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
@@ -26,8 +26,6 @@ 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.StringHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
@@ -66,12 +64,15 @@ public class CamelRouteStatus extends ProcessBaseCommand {
                 .forEach(ph -> {
                     JsonObject root = loadStatus(ph.pid());
                     if (root != null) {
-                        String name = extractName(root, ph);
+                        JsonObject context = (JsonObject) root.get("context");
                         JsonArray array = (JsonArray) root.get("routes");
                         for (int i = 0; i < array.size(); i++) {
                             JsonObject o = (JsonObject) array.get(i);
                             Row row = new Row();
-                            row.name = name;
+                            row.name = context.getString("name");
+                            if ("CamelJBang".equals(row.name)) {
+                                row.name = extractName(root, ph);
+                            }
                             row.pid = "" + ph.pid();
                             row.routeId = o.getString("routeId");
                             row.from = o.getString("from");
@@ -117,9 +118,8 @@ public class CamelRouteStatus extends ProcessBaseCommand {
             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(sources ? "SOURCE" : "NAME").dataAlign(HorizontalAlign.LEFT)
-                            .maxWidth(30, OverflowBehaviour.CLIP)
-                            .with(r -> sourceLocLine(sources ? r.source : r.name)),
+                    new Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30, OverflowBehaviour.ELLIPSIS)
+                            .with(r -> 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)
@@ -139,22 +139,6 @@ public class CamelRouteStatus extends ProcessBaseCommand {
         return 0;
     }
 
-    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) {
         switch (sort) {
             case "pid":
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 25f60d0f76a..efff3deca51 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
@@ -52,11 +52,14 @@ public class ListProcess extends ProcessBaseCommand {
                     JsonObject root = loadStatus(ph.pid());
                     if (root != null) {
                         Row row = new Row();
-                        row.name = extractName(root, ph);
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
                         row.ago = TimeUtils.printSince(row.uptime);
                         JsonObject context = (JsonObject) root.get("context");
+                        row.name = context.getString("name");
+                        if ("CamelJBang".equals(row.name)) {
+                            row.name = extractName(root, ph);
+                        }
                         row.state = context.getInteger("phase");
                         JsonObject hc = (JsonObject) root.get("healthChecks");
                         row.ready = hc != null ? hc.getString("ready") + "/" + hc.getString("total") : null;
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 ff236c95a13..6d4c3a9dd1d 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
@@ -226,4 +226,20 @@ abstract class ProcessBaseCommand extends CamelCommand {
         return null;
     }
 
+    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;
+    }
+
 }