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/26 10:37:03 UTC
[camel] 01/04: CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI
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 <cl...@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";
+ }
}
}
}