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 c98a4a20e06 CAMEL-20810: camel-jbang - Add camel get platform-http
command
c98a4a20e06 is described below
commit c98a4a20e069cf3d171175734f7bab37e2f1db94
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed May 29 15:42:15 2024 +0200
CAMEL-20810: camel-jbang - Add camel get platform-http command
---
.../platform/http/PlatformHttpConsole.java | 6 ++
.../camel/cli/connector/LocalCliConnector.java | 7 ++
.../dsl/jbang/core/commands/CamelJBangMain.java | 1 +
.../{ListService.java => ListPlatformHttp.java} | 113 +++++++--------------
.../jbang/core/commands/process/ListService.java | 1 -
5 files changed, 52 insertions(+), 76 deletions(-)
diff --git
a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpConsole.java
b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpConsole.java
index 3263348f505..5e8186c3981 100644
---
a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpConsole.java
+++
b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpConsole.java
@@ -92,6 +92,12 @@ public class PlatformHttpConsole extends AbstractDevConsole {
if (model.getVerbs() != null) {
jo.put("verbs", model.getVerbs());
}
+ if (model.getConsumes() != null) {
+ jo.put("consumes", model.getConsumes());
+ }
+ if (model.getProduces() != null) {
+ jo.put("produces", model.getProduces());
+ }
list.add(jo);
}
return list;
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 1fdfb264407..390c66d04d3 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
@@ -976,6 +976,13 @@ public class LocalCliConnector extends ServiceSupport
implements CliConnector, C
root.put("services", json);
}
}
+ DevConsole dc18 = dcr.resolveById("platform-http");
+ if (dc18 != null) {
+ JsonObject json = (JsonObject)
dc18.call(DevConsole.MediaType.JSON);
+ if (json != null && !json.isEmpty()) {
+ root.put("platform-http", json);
+ }
+ }
}
// various details
JsonObject mem = collectMemory();
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
index 60844e1e3af..b2a1978b1ef 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
@@ -98,6 +98,7 @@ public class CamelJBangMain implements Callable<Integer> {
.addSubcommand("circuit-breaker", new CommandLine(new
ListCircuitBreaker(main)))
.addSubcommand("metric", new CommandLine(new
ListMetric(main)))
.addSubcommand("service", new CommandLine(new
ListService(main)))
+ .addSubcommand("platform-http", new CommandLine(new
ListPlatformHttp(main)))
.addSubcommand("source", new CommandLine(new
CamelSourceAction(main)))
.addSubcommand("route-dump", new CommandLine(new
CamelRouteDumpAction(main)))
.addSubcommand("startup-recorder", new CommandLine(new
CamelStartupRecorderAction(main)))
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/ListPlatformHttp.java
similarity index 60%
copy from
dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java
copy to
dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
index b49f224cf98..b4d59e2b818 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/ListPlatformHttp.java
@@ -34,9 +34,9 @@ import org.apache.camel.util.json.JsonObject;
import picocli.CommandLine;
import picocli.CommandLine.Command;
-@Command(name = "service",
- description = "Get services of Camel integrations", sortOptions =
false)
-public class ListService extends ProcessWatchCommand {
+@Command(name = "platform-http",
+ description = "Get embedded HTTP services of Camel integrations",
sortOptions = false)
+public class ListPlatformHttp extends ProcessWatchCommand {
@CommandLine.Parameters(description = "Name or pid of running Camel
integration", arity = "0..1")
String name = "*";
@@ -45,19 +45,7 @@ public class ListService extends ProcessWatchCommand {
description = "Sort by pid, name or age", defaultValue
= "pid")
String sort;
- @CommandLine.Option(names = { "--metadata" },
- description = "Show service metadata (only available
for some services)")
- boolean metadata;
-
- @CommandLine.Option(names = { "--short-uri" },
- description = "List endpoint URI without query
parameters (short)")
- boolean shortUri;
-
- @CommandLine.Option(names = { "--wide-uri" },
- description = "List endpoint URI in full details")
- boolean wideUri;
-
- public ListService(CamelJBangMain main) {
+ public ListPlatformHttp(CamelJBangMain main) {
super(main);
}
@@ -85,22 +73,20 @@ public class ListService extends ProcessWatchCommand {
row.uptime = extractSince(ph);
row.age = TimeUtils.printSince(row.uptime);
- // platform-http is special
- JsonObject jo = (JsonObject) root.get("services");
+ JsonObject jo = (JsonObject) root.get("platform-http");
if (jo != null) {
- JsonArray arr = (JsonArray) jo.get("services");
+ String server = jo.getString("server");
+ JsonArray arr = (JsonArray) jo.get("endpoints");
if (arr != null) {
for (int i = 0; i < arr.size(); i++) {
row = row.copy();
jo = (JsonObject) arr.get(i);
- row.component = jo.getString("component");
- row.direction = jo.getString("direction");
- row.hosted =
jo.getBooleanOrDefault("hosted", false);
- row.protocol = jo.getString("protocol");
- row.address = jo.getString("address");
- row.endpoint = jo.getString("endpointUri");
- row.hits =
jo.getLongOrDefault("totalMessages", 0);
- row.metadata = jo.getMap("metadata");
+ row.server = server;
+ row.url = jo.getString("url");
+ row.path = jo.getString("path");
+ row.verbs = jo.getString("verbs");
+ row.consumes = jo.getString("consumes");
+ row.produces = jo.getString("produces");
rows.add(row);
}
}
@@ -116,23 +102,30 @@ public class ListService extends ProcessWatchCommand {
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
.with(r -> r.name),
- new
Column().header("COMPONENT").dataAlign(HorizontalAlign.LEFT).with(r ->
r.component),
- new
Column().header("DIR").dataAlign(HorizontalAlign.LEFT).with(r -> r.direction),
- new
Column().header("PROTOCOL").dataAlign(HorizontalAlign.LEFT).with(this::getProtocol),
- new
Column().header("SERVICE").dataAlign(HorizontalAlign.LEFT).with(this::getService),
- new
Column().header("METADATA").visible(metadata).dataAlign(HorizontalAlign.LEFT).with(this::getMetadata),
- new
Column().header("TOTAL").dataAlign(HorizontalAlign.RIGHT).with(r -> "" +
r.hits),
- new
Column().header("ENDPOINT").visible(!wideUri).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(90, OverflowBehaviour.ELLIPSIS_RIGHT)
- .with(this::getUri),
- new
Column().header("ENDPOINT").visible(wideUri).dataAlign(HorizontalAlign.LEFT)
- .maxWidth(140, OverflowBehaviour.NEWLINE)
- .with(this::getUri))));
+ new
Column().header("URL").dataAlign(HorizontalAlign.LEFT).with(r -> r.url),
+ new
Column().header("VERB").dataAlign(HorizontalAlign.LEFT).with(r -> r.verbs),
+ new
Column().header("CONTENT").dataAlign(HorizontalAlign.LEFT).with(this::getContent))));
}
return 0;
}
+ private String getContent(Row r) {
+ StringJoiner sj = new StringJoiner(" ");
+ if (r.consumes != null || r.produces != null) {
+ if (r.consumes != null) {
+ sj.add("accept: " + r.consumes);
+ }
+ if (r.produces != null) {
+ sj.add("produces: " + r.produces);
+ }
+ }
+ if (sj.length() > 0) {
+ return sj.toString();
+ }
+ return "";
+ }
+
protected int sortRow(Row o1, Row o2) {
String s = sort;
int negate = 1;
@@ -152,47 +145,17 @@ public class ListService extends ProcessWatchCommand {
}
}
- private String getUri(Row r) {
- String u = r.endpoint;
- if (shortUri) {
- int pos = u.indexOf('?');
- if (pos > 0) {
- u = u.substring(0, pos);
- }
- }
- return u;
- }
-
- private String getProtocol(Row r) {
- return r.protocol;
- }
-
- private String getService(Row r) {
- return r.address;
- }
-
- private String getMetadata(Row r) {
- if (r.metadata != null) {
- StringJoiner sj = new StringJoiner(" ");
- r.metadata.forEach((k, v) -> sj.add(k + "=" + v));
- return sj.toString();
- }
- return "";
- }
-
private static class Row implements Cloneable {
String pid;
String name;
String age;
long uptime;
- String component;
- String direction;
- boolean hosted;
- String protocol;
- String address;
- String endpoint;
- long hits;
- JsonObject metadata;
+ String server;
+ String url;
+ String path;
+ String verbs;
+ String consumes;
+ String produces;
Row copy() {
try {
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 b49f224cf98..fa71603c350 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
@@ -85,7 +85,6 @@ public class ListService extends ProcessWatchCommand {
row.uptime = extractSince(ph);
row.age = TimeUtils.printSince(row.uptime);
- // platform-http is special
JsonObject jo = (JsonObject) root.get("services");
if (jo != null) {
JsonArray arr = (JsonArray) jo.get("services");