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 369572877d3 CAMEL-18425: camel-cli - Make regular Camel applications
work with Camel CLI
369572877d3 is described below
commit 369572877d3b65547da6de9dda126d06ab0341a3
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Aug 26 14:40:47 2022 +0200
CAMEL-18425: camel-cli - Make regular Camel applications work with Camel CLI
---
.../java/org/apache/camel/ExtendedCamelContext.java | 6 ++++++
.../camel/impl/engine/AbstractCamelContext.java | 5 +++++
.../camel/impl/console/ContextDevConsole.java | 2 ++
.../camel/impl/lw/LightweightCamelContext.java | 5 +++++
.../impl/lw/LightweightRuntimeCamelContext.java | 5 +++++
.../camel/impl/health/ContextHealthCheck.java | 2 ++
.../core/commands/process/CamelContextStatus.java | 19 +++++++++++++++----
.../core/commands/process/CamelRouteStatus.java | 4 ++--
.../jbang/core/commands/process/ListProcess.java | 4 ++--
.../core/commands/process/ProcessBaseCommand.java | 21 ++++++++++++++++-----
10 files changed, 60 insertions(+), 13 deletions(-)
diff --git
a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index bcbec2d9f94..353e5b69c88 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -877,4 +877,10 @@ public interface ExtendedCamelContext extends CamelContext
{
*/
void setModelineFactory(ModelineFactory modelineFactory);
+ /**
+ * The {@link CamelContext} have additional phases that are not defined in
{@link ServiceStatus}
+ * and this method provides the phase ordinal value.
+ */
+ byte getStatusPhase();
+
}
diff --git
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index af9ddcdf0f7..93ee4bf669a 100644
---
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -454,6 +454,11 @@ public abstract class AbstractCamelContext extends
BaseService
return this;
}
+ @Override
+ public byte getStatusPhase() {
+ return status;
+ }
+
/**
* Whether to eager create {@link TypeConverter} during initialization of
CamelContext. This is enabled by default
* to optimize camel-core.
diff --git
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
index 266e4c8ed7b..8c5e7bcbc13 100644
---
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
+++
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
@@ -20,6 +20,7 @@ import java.util.Date;
import java.util.Locale;
import java.util.Map;
+import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.api.management.ManagedCamelContext;
import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
import org.apache.camel.spi.annotations.DevConsole;
@@ -66,6 +67,7 @@ public class ContextDevConsole extends AbstractDevConsole {
root.put("name", getCamelContext().getName());
root.put("version", getCamelContext().getVersion());
root.put("state", getCamelContext().getStatus().name());
+ root.put("phase",
getCamelContext().adapt(ExtendedCamelContext.class).getStatusPhase());
root.put("uptime", getCamelContext().getUptime());
ManagedCamelContext mcc =
getCamelContext().getExtension(ManagedCamelContext.class);
diff --git
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
index 9136cda08b2..655ed6f91d5 100644
---
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
+++
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
@@ -203,6 +203,11 @@ public class LightweightCamelContext implements
ExtendedCamelContext, CatalogCam
return this;
}
+ @Override
+ public byte getStatusPhase() {
+ return delegate.adapt(ExtendedCamelContext.class).getStatusPhase();
+ }
+
@Override
public void disposeModel() {
delegate.adapt(ExtendedCamelContext.class).disposeModel();
diff --git
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
index 9d74aad134d..74eb741367f 100644
---
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
+++
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
@@ -295,6 +295,11 @@ public class LightweightRuntimeCamelContext implements
ExtendedCamelContext, Cat
return reference;
}
+ @Override
+ public byte getStatusPhase() {
+ return reference.adapt(ExtendedCamelContext.class).getStatusPhase();
+ }
+
@Override
public void disposeModel() {
// noop
diff --git
a/core/camel-health/src/main/java/org/apache/camel/impl/health/ContextHealthCheck.java
b/core/camel-health/src/main/java/org/apache/camel/impl/health/ContextHealthCheck.java
index 7e6b5f4cf69..a21a5c458d4 100644
---
a/core/camel-health/src/main/java/org/apache/camel/impl/health/ContextHealthCheck.java
+++
b/core/camel-health/src/main/java/org/apache/camel/impl/health/ContextHealthCheck.java
@@ -19,6 +19,7 @@ package org.apache.camel.impl.health;
import java.util.Map;
import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.Ordered;
import org.apache.camel.health.HealthCheckResultBuilder;
@@ -53,6 +54,7 @@ public final class ContextHealthCheck extends
AbstractHealthCheck {
builder.detail("context.name", getCamelContext().getName());
builder.detail("context.version", getCamelContext().getVersion());
builder.detail("context.status",
getCamelContext().getStatus().name());
+ builder.detail("context.phase",
getCamelContext().adapt(ExtendedCamelContext.class).getStatusPhase());
if (getCamelContext().getStatus().isStarted()) {
builder.up();
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 9e43658d841..f8d01a1397a 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
@@ -19,7 +19,6 @@ package org.apache.camel.dsl.jbang.core.commands.process;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import com.github.freva.asciitable.AsciiTable;
@@ -64,10 +63,10 @@ public class CamelContextStatus extends ProcessBaseCommand {
row.uptime = extractSince(ph);
row.ago = TimeUtils.printSince(row.uptime);
JsonObject runtime = (JsonObject) root.get("runtime");
- row.platform = runtime != null ?
runtime.getString("platform") : null;
+ row.platform = extractPlatform(ph, runtime);
row.platformVersion = runtime != null ?
runtime.getString("version") : null;
JsonObject context = (JsonObject) root.get("context");
- row.state =
context.getString("state").toLowerCase(Locale.ROOT);
+ row.state = context.getInteger("phase");
row.camelVersion = context.getString("version");
Map<String, ?> stats = context.getMap("statistics");
if (stats != null) {
@@ -108,6 +107,18 @@ public class CamelContextStatus extends ProcessBaseCommand
{
return 0;
}
+ private String extractPlatform(ProcessHandle ph, JsonObject runtime) {
+ String answer = runtime != null ? runtime.getString("platform") : null;
+ if ("Camel".equals(answer)) {
+ // generic camel, we need to check if we run in JBang
+ String cl = ph.info().commandLine().orElse("");
+ if (cl.contains("main.CamelJBang run")) {
+ answer = "JBang";
+ }
+ }
+ return answer;
+ }
+
protected int sortRow(Row o1, Row o2) {
switch (sort) {
case "pid":
@@ -136,7 +147,7 @@ public class CamelContextStatus extends ProcessBaseCommand {
String camelVersion;
String name;
String ready;
- String state;
+ int state;
String ago;
long uptime;
String total;
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 9bcdf49c06d..d947fe05759 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
@@ -77,7 +77,7 @@ public class CamelRouteStatus extends ProcessBaseCommand {
row.routeId = o.getString("routeId");
row.from = o.getString("from");
row.source = o.getString("source");
- row.state =
o.getString("state").toLowerCase(Locale.ROOT);
+ row.state = o.getByte("state");
row.age = o.getString("uptime");
row.uptime = row.age != null ?
TimeUtils.toMilliSeconds(row.age) : 0;
Map<String, ?> stats = o.getMap("statistics");
@@ -176,7 +176,7 @@ public class CamelRouteStatus extends ProcessBaseCommand {
String routeId;
String from;
String source;
- String state;
+ byte state;
String age;
String total;
String failed;
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 0c00c56ddaf..c1334a110b8 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
@@ -58,7 +58,7 @@ public class ListProcess extends ProcessBaseCommand {
row.uptime = extractSince(ph);
row.ago = TimeUtils.printSince(row.uptime);
JsonObject context = (JsonObject) root.get("context");
- row.state =
context.getString("state").toLowerCase(Locale.ROOT);
+ row.state = context.getInteger("phase");
JsonObject hc = (JsonObject) root.get("healthChecks");
row.ready = hc != null ? hc.getString("ready") + "/" +
hc.getString("total") : null;
rows.add(row);
@@ -99,7 +99,7 @@ public class ListProcess extends ProcessBaseCommand {
String pid;
String name;
String ready;
- String state;
+ int state;
String ago;
long uptime;
}
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 222774f586b..6194f97a1ea 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
@@ -159,7 +159,7 @@ abstract class ProcessBaseCommand extends CamelCommand {
return null;
}
- private static String extractCamelJBangName(String cl) {
+ static String extractCamelJBangName(String cl) {
String name = StringHelper.after(cl, "main.CamelJBang run");
if (name != null) {
name = name.trim();
@@ -187,11 +187,22 @@ abstract class ProcessBaseCommand extends CamelCommand {
return since;
}
- static String extractState(String status) {
- if ("started".equalsIgnoreCase(status)) {
- status = "Running"; // favour using running instead of started
+ 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 "Stopping";
+ } else if (status == 9) {
+ return "Stopped";
+ } else {
+ return "Terminating";
}
- return StringHelper.capitalize(status);
}
JsonObject loadStatus(long pid) {