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
commit 19b05ef70b08954c5ca8b3d321b77407e2f3e89e Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri Aug 26 06:36:07 2022 +0200 CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI --- .../camel/impl/engine/SimpleCamelContext.java | 6 +++ .../camel/cli/connector/LocalCliConnector.java | 2 - .../core/commands/process/CamelContextStatus.java | 4 +- .../core/commands/process/ProcessBaseCommand.java | 46 ++++++++++++++-------- 4 files changed, 38 insertions(+), 20 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java index 0ea1c69b103..81ec3100073 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java @@ -412,6 +412,12 @@ public class SimpleCamelContext extends AbstractCamelContext { @Override protected CliConnectorFactory createCliConnectorFactory() { + // lookup in registry first + CliConnectorFactory ccf = getCamelContextReference().getRegistry().findSingleByType(CliConnectorFactory.class); + if (ccf != null) { + return ccf; + } + // then classpath scanning Optional<CliConnectorFactory> result = ResolverHelper.resolveService( getCamelContextReference(), getBootstrapFactoryFinder(), diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java index affeb5dc93a..60500113d95 100644 --- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java +++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java @@ -96,8 +96,6 @@ public class LocalCliConnector extends ServiceSupport implements CamelContextAwa platform = "CDI"; } else if (sn.contains("kamelet") || camelContext.getName().equals("CamelJBang")) { platform = "JBang"; - // dev.jbang.BuildConfig - // dev.jbang.util.getJBangVersion } else { platform = "Camel"; } 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 73fba159cf0..64edfda5faf 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 @@ -83,7 +83,7 @@ public class CamelContextStatus extends ProcessBaseCommand { if (root != null) { JsonObject runtime = (JsonObject) root.get("runtime"); row.platform = runtime != null ? runtime.getString("platform") : null; - row.platformVersion = runtime != null ? runtime.getString("platformVersion") : null; + row.platformVersion = runtime != null ? runtime.getString("version") : null; JsonObject context = (JsonObject) root.get("context"); row.state = context.getString("state").toLowerCase(Locale.ROOT); row.camelVersion = context.getString("version"); @@ -126,7 +126,7 @@ public class CamelContextStatus extends ProcessBaseCommand { private String getPlatform(Row r) { if (r.platformVersion != null) { - return r.platform + " v" + r.platformVersion + ")"; + return r.platform + " v" + r.platformVersion; } else { return r.platform; } 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 8181e14150a..14075f5f92e 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 @@ -70,36 +70,50 @@ abstract class ProcessBaseCommand extends CamelCommand { static String extractName(ProcessHandle ph) { String cl = ph.info().commandLine().orElse(""); + // TODO: parent/child when mvn spring-boot:run etc + + // try first camel-jbang String name = extractCamelJBangName(cl); - if (name == null) { - name = extractCamelMavenName(cl); + if (name != null) { + return name; } - if (name == null) { - name = extractCamelMain(cl); + + // this may be a maven plugin run, so check that first + String 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 extractCamelMavenName(String cl) { - String name = StringHelper.before(cl, " camel:run"); + private static String extractMavenPluginName(String cl) { + String name = StringHelper.after(cl, "org.codehaus.plexus.classworlds.launcher.Launcher"); if (name != null) { - if (name.contains("org.codehaus.plexus.classworlds.launcher.Launcher")) { - return "mvn camel:run"; - } + return name.trim(); } - return null; } - private static String extractCamelMain(String cl) { + private static String extractCamelName(String cl, String mvn) { if (cl != null) { - if (cl.contains("camel-main")) { + if (cl.contains("camel-spring-boot") && mvn != null) { + return mvn; + } else if (cl.contains("camel-quarkus") && mvn != null) { + return mvn; + } else if ((cl.contains("camel-main") || cl.contains("camel-core")) && mvn != null) { + return mvn; + } else if (cl.contains("camel-core") && mvn == null) { int pos = cl.lastIndexOf(" "); - String after = cl.substring(pos); - after = after.trim(); - if (after.matches("[\\w|.]+")) { - return "camel-main"; + if (pos != -1) { + String after = cl.substring(pos); + after = after.trim(); + if (after.matches("[\\w|.]+")) { + return cl.contains("camel-main") ? "camel-main" : "camel-core"; + } } } }