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 f6d92eb60d9 camel-jbang - Extract name using a helper so its reusable 
and the same
f6d92eb60d9 is described below

commit f6d92eb60d98314e86e7663d4b7abfffec84729d
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Dec 1 09:41:47 2022 +0100

    camel-jbang - Extract name using a helper so its reusable and the same
---
 .../core/commands/action/ActionBaseCommand.java    | 116 +------------------
 .../jbang/core/commands/action/LoggerAction.java   |   3 +-
 .../core/commands/process/CamelContextStatus.java  |   3 +-
 .../core/commands/process/CamelContextTop.java     |   3 +-
 .../core/commands/process/CamelEndpointStatus.java |   3 +-
 .../commands/process/CamelProcessorStatus.java     |   3 +-
 .../core/commands/process/CamelRouteStatus.java    |   3 +-
 .../jbang/core/commands/process/ListBlocked.java   |   3 +-
 .../core/commands/process/ListCircuitBreaker.java  |   3 +-
 .../dsl/jbang/core/commands/process/ListEvent.java |   3 +-
 .../jbang/core/commands/process/ListHealth.java    |   3 +-
 .../jbang/core/commands/process/ListInflight.java  |   3 +-
 .../jbang/core/commands/process/ListMetric.java    |   3 +-
 .../jbang/core/commands/process/ListProcess.java   |   3 +-
 .../jbang/core/commands/process/ListService.java   |   3 +-
 .../dsl/jbang/core/commands/process/ListVault.java |   3 +-
 .../core/commands/process/ProcessBaseCommand.java  | 125 +--------------------
 .../ProcessHelper.java}                            | 112 +++---------------
 18 files changed, 51 insertions(+), 347 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java
index 3ec1257fb32..4381965d9d6 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java
@@ -19,18 +19,15 @@ package org.apache.camel.dsl.jbang.core.commands.action;
 import java.io.File;
 import java.io.FileInputStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-import java.util.StringJoiner;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
 
@@ -64,7 +61,7 @@ abstract class ActionBaseCommand extends CamelCommand {
                     JsonObject root = loadStatus(ph.pid());
                     // there must be a status file for the running Camel 
integration
                     if (root != null) {
-                        String pName = extractName(root, ph);
+                        String pName = ProcessHelper.extractName(root, ph);
                         // ignore file extension, so it is easier to match by 
name
                         pName = FileUtil.onlyName(pName);
                         if (pName != null && !pName.isEmpty() && 
PatternHelper.matchPattern(pName, pattern)) {
@@ -76,115 +73,6 @@ abstract class ActionBaseCommand extends CamelCommand {
         return pids;
     }
 
-    static String extractMainClass(JsonObject root) {
-        JsonObject runtime = (JsonObject) root.get("runtime");
-        return runtime != null ? runtime.getString("mainClass") : null;
-    }
-
-    static String extractName(JsonObject root, ProcessHandle ph) {
-        String name = doExtractName(root, ph);
-        return FileUtil.stripPath(name);
-    }
-
-    static String doExtractName(JsonObject root, ProcessHandle ph) {
-        // favour main class if known
-        if (root != null) {
-            String mc = extractMainClass(root);
-            if (mc != null) {
-                return mc;
-            }
-        }
-        String cl = ph.info().commandLine().orElse("");
-
-        // this may be a maven plugin run that spawns a child process where 
Camel actually runs (link to child)
-        String mvn = extractMavenPluginName(cl);
-        if (mvn != null) {
-            // is camel running in any of the children?
-            boolean camel = ph.children().anyMatch(ch -> !extractName(root, 
ch).isEmpty());
-            if (camel) {
-                return ""; // skip parent as we want only the child process 
with camel
-            }
-        }
-
-        // try first camel-jbang
-        String name = extractCamelJBangName(cl);
-        if (name != null) {
-            return name;
-        }
-
-        // this may be a maven plugin run that spawns a child process where 
Camel actually runs (link to parent)
-        mvn = extractMavenPluginName(cl);
-        if (mvn == null && ph.parent().isPresent()) {
-            // try parent as it may spawn a sub process
-            String clp = ph.parent().get().info().commandLine().orElse("");
-            mvn = extractMavenPluginName(clp);
-        }
-
-        name = extractCamelName(cl, mvn);
-        return name == null ? "" : name;
-    }
-
-    private static String extractMavenPluginName(String cl) {
-        String name = StringHelper.after(cl, 
"org.codehaus.plexus.classworlds.launcher.Launcher");
-        if (name != null) {
-            return name.trim();
-        }
-        return null;
-    }
-
-    private static String extractCamelName(String cl, String mvn) {
-        if (cl != null) {
-            if (cl.contains("camel-spring-boot") && mvn != null) {
-                int pos = cl.lastIndexOf(" ");
-                if (pos != -1) {
-                    String after = cl.substring(pos);
-                    after = after.trim();
-                    if (after.matches("[\\w|.]+")) {
-                        return after;
-                    }
-                }
-                return mvn;
-            } else if (cl.contains("camel-quarkus") && mvn != null) {
-                return mvn;
-            } else {
-                int pos = cl.lastIndexOf(" ");
-                if (pos != -1) {
-                    String after = cl.substring(pos);
-                    after = after.trim();
-                    if (after.matches("[\\w|.]+")) {
-                        return after;
-                    }
-                }
-                if (mvn != null) {
-                    return mvn;
-                }
-                return cl.contains("camel-main") ? "camel-main" : "camel-core";
-            }
-        }
-
-        return null;
-    }
-
-    static String extractCamelJBangName(String cl) {
-        String name = StringHelper.after(cl, "main.CamelJBang run");
-        if (name != null) {
-            name = name.trim();
-            StringJoiner js = new StringJoiner(" ");
-            // focus only on the route files supported (to skip such as readme 
files)
-            Matcher matcher = PATTERN.matcher(name);
-            while (matcher.find()) {
-                String part = matcher.group();
-                String ext = FileUtil.onlyExt(part, true);
-                if (ext != null && Arrays.asList(DSL_EXT).contains(ext)) {
-                    js.add(part);
-                }
-            }
-            return js.toString();
-        }
-
-        return null;
-    }
-
     static long extractSince(ProcessHandle ph) {
         long since = 0;
         if (ph.info().startInstant().isPresent()) {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/LoggerAction.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/LoggerAction.java
index 942e99e5ee2..531a4670d47 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/LoggerAction.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/LoggerAction.java
@@ -27,6 +27,7 @@ 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.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
@@ -107,7 +108,7 @@ public class LoggerAction extends ActionBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         JsonObject jo = (JsonObject) root.get("logger");
                         if (jo != null) {
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 ada689524f8..1a331516dba 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
@@ -26,6 +26,7 @@ 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.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;
@@ -65,7 +66,7 @@ public class CamelContextStatus extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
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 17db7411cd1..9cdbcc8c334 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
@@ -26,6 +26,7 @@ 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.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 import picocli.CommandLine;
@@ -65,7 +66,7 @@ public class CamelContextTop extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelEndpointStatus.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelEndpointStatus.java
index aff026e674a..53d2c44192f 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelEndpointStatus.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelEndpointStatus.java
@@ -25,6 +25,7 @@ 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.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonArray;
@@ -90,7 +91,7 @@ public class CamelEndpointStatus extends ProcessBaseCommand {
                                 Row row = new Row();
                                 row.name = context.getString("name");
                                 if ("CamelJBang".equals(row.name)) {
-                                    row.name = extractName(root, ph);
+                                    row.name = ProcessHelper.extractName(root, 
ph);
                                 }
                                 row.pid = "" + ph.pid();
                                 row.endpoint = o.getString("uri");
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 1e5920936f4..39a30060c69 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
@@ -26,6 +26,7 @@ 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.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
@@ -79,7 +80,7 @@ public class CamelProcessorStatus extends ProcessBaseCommand {
                             Row row = new Row();
                             row.name = context.getString("name");
                             if ("CamelJBang".equals(row.name)) {
-                                row.name = extractName(root, ph);
+                                row.name = ProcessHelper.extractName(root, ph);
                             }
                             row.pid = "" + ph.pid();
                             row.routeId = o.getString("routeId");
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 12a976f1db5..f5cb0545a34 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,6 +26,7 @@ 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.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;
@@ -82,7 +83,7 @@ public class CamelRouteStatus extends ProcessBaseCommand {
                             Row row = new Row();
                             row.name = context.getString("name");
                             if ("CamelJBang".equals(row.name)) {
-                                row.name = extractName(root, ph);
+                                row.name = ProcessHelper.extractName(root, ph);
                             }
                             row.pid = "" + ph.pid();
                             row.routeId = o.getString("routeId");
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 cd8494599d0..5cc8ac73359 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
@@ -25,6 +25,7 @@ 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.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;
@@ -64,7 +65,7 @@ public class ListBlocked extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
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 7137f837236..d91051babaa 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
@@ -25,6 +25,7 @@ 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.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;
@@ -64,7 +65,7 @@ public class ListCircuitBreaker extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
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 16ee7103e43..9f201aecc24 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
@@ -25,6 +25,7 @@ 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.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;
@@ -68,7 +69,7 @@ public class ListEvent extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.pid = "" + ph.pid();
 
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 80f4cd9324e..5ba23909a2a 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
@@ -30,6 +30,7 @@ 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.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.health.HealthCheckHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.TimeUtils;
@@ -105,7 +106,7 @@ public class ListHealth extends ProcessBaseCommand {
                             row.ago = TimeUtils.printSince(row.uptime);
                             row.name = context.getString("name");
                             if ("CamelJBang".equals(row.name)) {
-                                row.name = extractName(root, ph);
+                                row.name = ProcessHelper.extractName(root, ph);
                             }
                             row.id = o.getString("id");
                             row.group = o.getString("group");
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 e27de1b9a56..ce0ae54e0c5 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
@@ -25,6 +25,7 @@ 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.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;
@@ -64,7 +65,7 @@ public class ListInflight extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
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 4a59e827604..b4252053865 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
@@ -25,6 +25,7 @@ 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.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;
@@ -76,7 +77,7 @@ public class ListMetric extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
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 fc5f64f0e85..85a9475e3e8 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
@@ -25,6 +25,7 @@ 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.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 import picocli.CommandLine;
@@ -65,7 +66,7 @@ public class ListProcess extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.state = context.getInteger("phase");
                         JsonObject hc = (JsonObject) root.get("healthChecks");
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 92bdcd2fd16..3a45113de8b 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
@@ -25,6 +25,7 @@ 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.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;
@@ -64,7 +65,7 @@ public class ListService extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         row.pid = "" + ph.pid();
                         row.uptime = extractSince(ph);
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 0040e05c180..d6092254a00 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
@@ -25,6 +25,7 @@ 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.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;
@@ -61,7 +62,7 @@ public class ListVault extends ProcessBaseCommand {
                         }
                         row.name = context.getString("name");
                         if ("CamelJBang".equals(row.name)) {
-                            row.name = extractName(root, ph);
+                            row.name = ProcessHelper.extractName(root, ph);
                         }
                         JsonObject vaults = (JsonObject) root.get("vaults");
                         if (vaults != 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 92d4ed77e90..33623ea384b 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
@@ -19,14 +19,11 @@ package org.apache.camel.dsl.jbang.core.commands.process;
 import java.io.File;
 import java.io.FileInputStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-import java.util.StringJoiner;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
@@ -36,9 +33,6 @@ import org.apache.camel.util.json.Jsoner;
 
 abstract class ProcessBaseCommand extends CamelCommand {
 
-    private static final String[] DSL_EXT = new String[] { "groovy", "java", 
"js", "jsh", "kts", "xml", "yaml" };
-    private static final Pattern PATTERN = Pattern.compile("([\\w|\\-.])+");
-
     public ProcessBaseCommand(CamelJBangMain main) {
         super(main);
     }
@@ -64,7 +58,7 @@ abstract class ProcessBaseCommand extends CamelCommand {
                     JsonObject root = loadStatus(ph.pid());
                     // there must be a status file for the running Camel 
integration
                     if (root != null) {
-                        String pName = extractName(root, ph);
+                        String pName = ProcessHelper.extractName(root, ph);
                         // ignore file extension, so it is easier to match by 
name
                         pName = FileUtil.onlyName(pName);
                         if (pName != null && !pName.isEmpty() && 
PatternHelper.matchPattern(pName, pattern)) {
@@ -76,121 +70,6 @@ abstract class ProcessBaseCommand extends CamelCommand {
         return pids;
     }
 
-    static String extractMainClass(JsonObject root) {
-        JsonObject runtime = (JsonObject) root.get("runtime");
-        return runtime != null ? runtime.getString("mainClass") : null;
-    }
-
-    static String extractName(JsonObject root, ProcessHandle ph) {
-        String name = doExtractName(root, ph);
-        return FileUtil.stripPath(name);
-    }
-
-    static String doExtractName(JsonObject root, ProcessHandle ph) {
-        // favour main class if known
-        if (root != null) {
-            String mc = extractMainClass(root);
-            if (mc != null) {
-                return mc;
-            }
-        }
-        String cl = ph.info().commandLine().orElse("");
-
-        // this may be a maven plugin run that spawns a child process where 
Camel actually runs (link to child)
-        String mvn = extractMavenPluginName(cl);
-        if (mvn != null) {
-            // is camel running in any of the children?
-            boolean camel = ph.children().anyMatch(ch -> !extractName(root, 
ch).isEmpty());
-            if (camel) {
-                return ""; // skip parent as we want only the child process 
with camel
-            }
-        }
-
-        // try first camel-jbang
-        String name = extractCamelJBangName(cl);
-        if (name != null && !name.isEmpty()) {
-            return name;
-        }
-
-        // this may be a maven plugin run that spawns a child process where 
Camel actually runs (link to parent)
-        mvn = extractMavenPluginName(cl);
-        if (mvn == null && ph.parent().isPresent()) {
-            // try parent as it may spawn a sub process
-            String clp = ph.parent().get().info().commandLine().orElse("");
-            mvn = extractMavenPluginName(clp);
-        }
-
-        name = extractCamelName(cl, mvn);
-        if (name == null && root != null) {
-            JsonObject jo = (JsonObject) root.get("context");
-            if (jo != null) {
-                name = jo.getString("name");
-            }
-        }
-
-        return name == null ? "" : name;
-    }
-
-    private static String extractMavenPluginName(String cl) {
-        String name = StringHelper.after(cl, 
"org.codehaus.plexus.classworlds.launcher.Launcher");
-        if (name != null) {
-            return name.trim();
-        }
-        return null;
-    }
-
-    private static String extractCamelName(String cl, String mvn) {
-        if (cl != null) {
-            if (cl.contains("camel-spring-boot") && mvn != null) {
-                int pos = cl.lastIndexOf(" ");
-                if (pos != -1) {
-                    String after = cl.substring(pos);
-                    after = after.trim();
-                    if (after.matches("[\\w|.]+")) {
-                        return after;
-                    }
-                }
-                return mvn;
-            } else if (cl.contains("camel-quarkus") && mvn != null) {
-                return mvn;
-            } else {
-                int pos = cl.lastIndexOf(" ");
-                if (pos != -1) {
-                    String after = cl.substring(pos);
-                    after = after.trim();
-                    if (after.matches("[\\w|.]+")) {
-                        return after;
-                    }
-                }
-                if (mvn != null) {
-                    return mvn;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    static String extractCamelJBangName(String cl) {
-        String name = StringHelper.after(cl, "main.CamelJBang run");
-        if (name != null) {
-            name = name.trim();
-            StringJoiner js = new StringJoiner(" ");
-            // focus only on the route files supported (to skip such as readme 
files)
-            Matcher matcher = PATTERN.matcher(name);
-            while (matcher.find()) {
-                String part = matcher.group();
-                String ext = FileUtil.onlyExt(part, true);
-                if (ext != null && Arrays.asList(DSL_EXT).contains(ext)) {
-                    js.add(part);
-                }
-            }
-            return js.toString();
-        }
-
-        return null;
-    }
-
     static long extractSince(ProcessHandle ph) {
         long since = 0;
         if (ph.info().startInstant().isPresent()) {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ProcessHelper.java
similarity index 61%
copy from 
dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java
copy to 
dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ProcessHelper.java
index 3ec1257fb32..db5d74fd2fa 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/ActionBaseCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ProcessHelper.java
@@ -14,74 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.dsl.jbang.core.commands.action;
+package org.apache.camel.dsl.jbang.core.common;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
 import java.util.StringJoiner;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
-import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
-import org.apache.camel.support.PatternHelper;
 import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.json.JsonObject;
-import org.apache.camel.util.json.Jsoner;
 
-abstract class ActionBaseCommand extends CamelCommand {
+public final class ProcessHelper {
 
     private static final String[] DSL_EXT = new String[] { "groovy", "java", 
"js", "jsh", "kts", "xml", "yaml" };
     private static final Pattern PATTERN = Pattern.compile("([\\w|\\-.])+");
 
-    public ActionBaseCommand(CamelJBangMain main) {
-        super(main);
+    private ProcessHelper() {
     }
 
-    List<Long> findPids(String name) {
-        List<Long> pids = new ArrayList<>();
-
-        // we need to know the pids of the running camel integrations
-        if (name.matches("\\d+")) {
-            return List.of(Long.parseLong(name));
-        } else {
-            // lets be open and match all that starts with this pattern
-            if (!name.endsWith("*")) {
-                name = name + "*";
-            }
-        }
-
-        final long cur = ProcessHandle.current().pid();
-        final String pattern = name;
-        ProcessHandle.allProcesses()
-                .filter(ph -> ph.pid() != cur)
-                .forEach(ph -> {
-                    JsonObject root = loadStatus(ph.pid());
-                    // there must be a status file for the running Camel 
integration
-                    if (root != null) {
-                        String pName = extractName(root, ph);
-                        // ignore file extension, so it is easier to match by 
name
-                        pName = FileUtil.onlyName(pName);
-                        if (pName != null && !pName.isEmpty() && 
PatternHelper.matchPattern(pName, pattern)) {
-                            pids.add(ph.pid());
-                        }
-                    }
-                });
-
-        return pids;
-    }
-
-    static String extractMainClass(JsonObject root) {
-        JsonObject runtime = (JsonObject) root.get("runtime");
-        return runtime != null ? runtime.getString("mainClass") : null;
-    }
-
-    static String extractName(JsonObject root, ProcessHandle ph) {
+    public static String extractName(JsonObject root, ProcessHandle ph) {
         String name = doExtractName(root, ph);
         return FileUtil.stripPath(name);
     }
@@ -108,7 +60,7 @@ abstract class ActionBaseCommand extends CamelCommand {
 
         // try first camel-jbang
         String name = extractCamelJBangName(cl);
-        if (name != null) {
+        if (name != null && !name.isEmpty()) {
             return name;
         }
 
@@ -121,6 +73,13 @@ abstract class ActionBaseCommand extends CamelCommand {
         }
 
         name = extractCamelName(cl, mvn);
+        if (name == null && root != null) {
+            JsonObject jo = (JsonObject) root.get("context");
+            if (jo != null) {
+                name = jo.getString("name");
+            }
+        }
+
         return name == null ? "" : name;
     }
 
@@ -132,6 +91,11 @@ abstract class ActionBaseCommand extends CamelCommand {
         return null;
     }
 
+    static String extractMainClass(JsonObject root) {
+        JsonObject runtime = (JsonObject) root.get("runtime");
+        return runtime != null ? runtime.getString("mainClass") : null;
+    }
+
     private static String extractCamelName(String cl, String mvn) {
         if (cl != null) {
             if (cl.contains("camel-spring-boot") && mvn != null) {
@@ -158,7 +122,6 @@ abstract class ActionBaseCommand extends CamelCommand {
                 if (mvn != null) {
                     return mvn;
                 }
-                return cl.contains("camel-main") ? "camel-main" : "camel-core";
             }
         }
 
@@ -185,45 +148,4 @@ abstract class ActionBaseCommand extends CamelCommand {
         return null;
     }
 
-    static long extractSince(ProcessHandle ph) {
-        long since = 0;
-        if (ph.info().startInstant().isPresent()) {
-            since = ph.info().startInstant().get().toEpochMilli();
-        }
-        return since;
-    }
-
-    static String extractState(int status) {
-        if (status <= 4) {
-            return "Starting";
-        } else if (status == 5) {
-            return "Running";
-        } else if (status == 6) {
-            return "Suspending";
-        } else if (status == 7) {
-            return "Suspended";
-        } else if (status == 8) {
-            return "Terminating";
-        } else if (status == 9) {
-            return "Terminated";
-        } else {
-            return "Terminated";
-        }
-    }
-
-    JsonObject loadStatus(long pid) {
-        try {
-            File f = getStatusFile("" + pid);
-            if (f != null) {
-                FileInputStream fis = new FileInputStream(f);
-                String text = IOHelper.loadText(fis);
-                IOHelper.close(fis);
-                return (JsonObject) Jsoner.deserialize(text);
-            }
-        } catch (Throwable e) {
-            // ignore
-        }
-        return null;
-    }
-
 }


Reply via email to