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 c550a0097e9 CAMEL-20878: camel-jbang - get rest
c550a0097e9 is described below
commit c550a0097e974e514ac98747d525f36b2c3384a2
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Jun 15 16:22:10 2024 +0200
CAMEL-20878: camel-jbang - get rest
---
.../apache/camel/catalog/dev-consoles.properties | 1 +
.../apache/camel/catalog/dev-consoles/rest.json | 15 ++++++++
.../rest/openapi/RestOpenApiProcessor.java | 2 +-
.../camel/component/rest/DefaultRestRegistry.java | 18 ++++++----
.../apache/camel/component/rest/RestEndpoint.java | 2 +-
.../camel/component/webhook/MultiRestConsumer.java | 2 +-
.../java/org/apache/camel/spi/RestRegistry.java | 35 +++++++++++--------
.../apache/camel/impl/console/RestDevConsole.java | 1 +
.../api/management/mbean/CamelOpenMBeanTypes.java | 6 ++--
.../management/mbean/ManagedRestRegistry.java | 5 +--
.../ROOT/pages/camel-4x-upgrade-guide-4_7.adoc | 4 ++-
.../camel/cli/connector/LocalCliConnector.java | 7 ++++
.../dsl/jbang/core/commands/CamelJBangMain.java | 1 +
.../core/commands/process/ListPlatformHttp.java | 4 +--
.../{ListPlatformHttp.java => ListRest.java} | 40 ++++++++++++++--------
15 files changed, 96 insertions(+), 47 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties
index ef2cac92511..68e2314bd3f 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties
@@ -25,6 +25,7 @@ protocol
quartz
reload
resilience4j
+rest
route
route-controller
route-dump
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/rest.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/rest.json
new file mode 100644
index 00000000000..552cda4ab75
--- /dev/null
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/rest.json
@@ -0,0 +1,15 @@
+{
+ "console": {
+ "kind": "console",
+ "group": "camel",
+ "name": "rest",
+ "title": "Rest",
+ "description": "Rest DSL Registry information",
+ "deprecated": false,
+ "javaType": "org.apache.camel.impl.console.RestDevConsole",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-console",
+ "version": "4.7.0-SNAPSHOT"
+ }
+}
+
diff --git
a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
index 6d0735ed33f..eee89ee80d5 100644
---
a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
+++
b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
@@ -186,7 +186,7 @@ public class RestOpenApiProcessor extends
DelegateAsyncProcessor implements Came
if (consumer instanceof RouteAware ra) {
routeId = ra.getRoute().getRouteId();
}
- camelContext.getRestRegistry().addRestService(consumer, url,
path, basePath, null, v, bc.getConsumes(),
+ camelContext.getRestRegistry().addRestService(consumer, true,
url, path, basePath, null, v, bc.getConsumes(),
bc.getProduces(), bc.getType(), bc.getOutType(),
routeId, desc);
RestBindingAdvice binding =
RestBindingAdviceFactory.build(camelContext, bc);
diff --git
a/components/camel-rest/src/main/java/org/apache/camel/component/rest/DefaultRestRegistry.java
b/components/camel-rest/src/main/java/org/apache/camel/component/rest/DefaultRestRegistry.java
index 1109d180500..a8a1ab4fe02 100644
---
a/components/camel-rest/src/main/java/org/apache/camel/component/rest/DefaultRestRegistry.java
+++
b/components/camel-rest/src/main/java/org/apache/camel/component/rest/DefaultRestRegistry.java
@@ -48,10 +48,10 @@ public class DefaultRestRegistry extends ServiceSupport
implements StaticService
@Override
public void addRestService(
- Consumer consumer, String url, String baseUrl, String basePath,
String uriTemplate, String method,
+ Consumer consumer, boolean contractFirst, String url, String
baseUrl, String basePath, String uriTemplate, String method,
String consumes, String produces, String inType, String outType,
String routeId, String description) {
RestServiceEntry entry = new RestServiceEntry(
- consumer, url, baseUrl, basePath, uriTemplate, method,
consumes, produces, inType, outType, description);
+ consumer, contractFirst, url, baseUrl, basePath, uriTemplate,
method, consumes, produces, inType, outType, description);
List<RestService> list = registry.computeIfAbsent(consumer, c -> new
ArrayList<>());
list.add(entry);
}
@@ -167,6 +167,7 @@ public class DefaultRestRegistry extends ServiceSupport
implements StaticService
private static final class RestServiceEntry implements RestService {
private final Consumer consumer;
+ private final boolean contractFirst;
private final String url;
private final String baseUrl;
private final String basePath;
@@ -178,11 +179,11 @@ public class DefaultRestRegistry extends ServiceSupport
implements StaticService
private final String outType;
private final String description;
- private RestServiceEntry(Consumer consumer, String url, String
baseUrl, String basePath, String uriTemplate,
- String method,
- String consumes, String produces, String
inType, String outType,
- String description) {
+ private RestServiceEntry(Consumer consumer, boolean contractFirst,
String url, String baseUrl, String basePath,
+ String uriTemplate, String method, String
consumes, String produces,
+ String inType, String outType, String
description) {
this.consumer = consumer;
+ this.contractFirst = contractFirst;
this.url = url;
this.baseUrl = baseUrl;
this.basePath = basePath;
@@ -200,6 +201,11 @@ public class DefaultRestRegistry extends ServiceSupport
implements StaticService
return consumer;
}
+ @Override
+ public boolean isContractFirst() {
+ return contractFirst;
+ }
+
@Override
public String getUrl() {
return url;
diff --git
a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
index 0ebc90bb388..7c8bf143ff4 100644
---
a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
+++
b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java
@@ -594,7 +594,7 @@ public class RestEndpoint extends DefaultEndpoint {
// add to rest registry, so we can keep track of them, we will
remove from the registry when the consumer is removed
// the rest registry will automatically keep track when the
consumer is removed,
// and un-register the REST service from the registry
- getCamelContext().getRestRegistry().addRestService(consumer, url,
baseUrl, getPath(), getUriTemplate(), getMethod(),
+ getCamelContext().getRestRegistry().addRestService(consumer,
false, url, baseUrl, getPath(), getUriTemplate(), getMethod(),
getConsumes(), getProduces(), getInType(), getOutType(),
getRouteId(), getDescription());
return consumer;
} else {
diff --git
a/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/MultiRestConsumer.java
b/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/MultiRestConsumer.java
index 038bbae702b..17d2e3c1c19 100644
---
a/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/MultiRestConsumer.java
+++
b/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/MultiRestConsumer.java
@@ -50,7 +50,7 @@ public class MultiRestConsumer extends DefaultConsumer {
null, null, null, config, Collections.emptyMap());
configurer.configure(consumer);
- context.getRestRegistry().addRestService(consumer, url, url, path,
null, method,
+ context.getRestRegistry().addRestService(consumer, false, url,
url, path, null, method,
null, null, null, null, null, null);
this.delegateConsumers.add(consumer);
diff --git
a/core/camel-api/src/main/java/org/apache/camel/spi/RestRegistry.java
b/core/camel-api/src/main/java/org/apache/camel/spi/RestRegistry.java
index 0091871a223..902665e95fc 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RestRegistry.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RestRegistry.java
@@ -37,6 +37,11 @@ public interface RestRegistry extends StaticService {
*/
Consumer getConsumer();
+ /**
+ * Is the rest service based on code-first or contract-first
+ */
+ boolean isContractFirst();
+
/**
* Gets the state of the REST service (started, stopped, etc)
*/
@@ -101,23 +106,23 @@ public interface RestRegistry extends StaticService {
/**
* Adds a new REST service to the registry.
*
- * @param consumer the consumer
- * @param url the absolute url of the REST service
- * @param baseUrl the base url of the REST service
- * @param basePath the base path
- * @param uriTemplate the uri template
- * @param method the HTTP method
- * @param consumes optional details about what media-types the REST
service accepts
- * @param produces optional details about what media-types the REST
service returns
- * @param inType optional detail input binding to a FQN class name
- * @param outType optional detail output binding to a FQN class name
- * @param routeId the id of the route this rest service will be using
- * @param description optional description about the service
+ * @param consumer the consumer
+ * @param contractFirst is the rest service based on code-first or
contract-first
+ * @param url the absolute url of the REST service
+ * @param baseUrl the base url of the REST service
+ * @param basePath the base path
+ * @param uriTemplate the uri template
+ * @param method the HTTP method
+ * @param consumes optional details about what media-types the REST
service accepts
+ * @param produces optional details about what media-types the REST
service returns
+ * @param inType optional detail input binding to a FQN class name
+ * @param outType optional detail output binding to a FQN class name
+ * @param routeId the id of the route this rest service will be using
+ * @param description optional description about the service
*/
void addRestService(
- Consumer consumer, String url, String baseUrl, String basePath,
String uriTemplate, String method, String consumes,
- String produces,
- String inType, String outType, String routeId, String description);
+ Consumer consumer, boolean contractFirst, String url, String
baseUrl, String basePath, String uriTemplate, String method,
+ String consumes, String produces, String inType, String outType,
String routeId, String description);
/**
* Removes the REST service from the registry
diff --git
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RestDevConsole.java
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RestDevConsole.java
index eb9ef663600..ec9c4636586 100644
---
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RestDevConsole.java
+++
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RestDevConsole.java
@@ -77,6 +77,7 @@ public class RestDevConsole extends AbstractDevConsole {
JsonObject jo = new JsonObject();
jo.put("url", rs.getUrl());
jo.put("method", rs.getMethod());
+ jo.put("contractFirst", rs.isContractFirst());
jo.put("state", rs.getState());
if (rs.getConsumes() != null) {
jo.put("consumes", rs.getConsumes());
diff --git
a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
index abe3a9de8f6..6a9fde81336 100644
---
a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
+++
b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
@@ -60,13 +60,13 @@ public final class CamelOpenMBeanTypes {
"rests", "Rest Services",
new String[] {
"url", "baseUrl", "basePath", "uriTemplate", "method",
"consumes", "produces", "inType", "outType",
- "state", "description" },
+ "kind", "state", "description" },
new String[] {
"Url", "Base Url", "Base Path", "Uri Template",
"Method", "Consumes", "Produces", "Input Type",
- "Output Type", "State", "Description" },
+ "Output Type", "Kind", "State", "Description" },
new OpenType[] {
SimpleType.STRING, SimpleType.STRING,
SimpleType.STRING, SimpleType.STRING, SimpleType.STRING,
- SimpleType.STRING,
+ SimpleType.STRING, SimpleType.STRING,
SimpleType.STRING, SimpleType.STRING,
SimpleType.STRING, SimpleType.STRING, SimpleType.STRING });
}
diff --git
a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
index 8654a304a0d..0b843ecba14 100644
---
a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
+++
b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRestRegistry.java
@@ -67,6 +67,7 @@ public class ManagedRestRegistry extends ManagedService
implements ManagedRestRe
String method = entry.getMethod();
String consumes = entry.getConsumes();
String produces = entry.getProduces();
+ String kind = entry.isContractFirst() ? "contract-first" :
"code-first";
String state = entry.getState();
String inType = entry.getInType();
String outType = entry.getOutType();
@@ -76,9 +77,9 @@ public class ManagedRestRegistry extends ManagedService
implements ManagedRestRe
ct,
new String[] {
"url", "baseUrl", "basePath", "uriTemplate",
"method", "consumes", "produces", "inType",
- "outType", "state", "description" },
+ "outType", "kind", "state", "description" },
new Object[] {
- url, baseUrl, basePath, uriTemplate, method,
consumes, produces, inType, outType, state,
+ url, baseUrl, basePath, uriTemplate, method,
consumes, produces, inType, outType, kind, state,
description });
answer.put(data);
}
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
index d0adc9c660a..2d611503ef7 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_7.adoc
@@ -11,13 +11,15 @@ from both 4.0 to 4.1 and 4.1 to 4.2.
The class `org.apache.camel.impl.engine.ValidatorKey` moved to
`org.apache.camel.spi.ValidatorKey`.
The class `org.apache.camel.impl.engine.TransformerKey` moved to
`org.apache.camel.spi.TransformerKey`.
+The `org.apache.camel.spi.RestRegistry` method `addRestService` has added
`boolean contractFirst` parameter to define
+if the Rest service is _contract-first_ or _code-first_.
=== camel-core
Add default values to `ThrottlingExceptionRoutePolicy` route policy.
The `EndpointRegistry` interface has been slightly changed to now directly
extends `Map<NormalizedEndpointUri, Endpoint>`
-instead of being a parameterized type. This may cause some compilation
failures if the code is declaring a variable for the registry.
+instead of being a parameterized type. This may cause some compilation
failures if the code is declaring a variable for the registry.
=== camel-health
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 390c66d04d3..f288cc1f174 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
@@ -983,6 +983,13 @@ public class LocalCliConnector extends ServiceSupport
implements CliConnector, C
root.put("platform-http", json);
}
}
+ DevConsole dc19 = dcr.resolveById("rest");
+ if (dc19 != null) {
+ JsonObject json = (JsonObject)
dc19.call(DevConsole.MediaType.JSON);
+ if (json != null && !json.isEmpty()) {
+ root.put("rests", 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 b2a1978b1ef..a6d5d5beafe 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("rest", new CommandLine(new
ListRest(main)))
.addSubcommand("platform-http", new CommandLine(new
ListPlatformHttp(main)))
.addSubcommand("source", new CommandLine(new
CamelSourceAction(main)))
.addSubcommand("route-dump", new CommandLine(new
CamelRouteDumpAction(main)))
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
index b4d59e2b818..4f17b8102f2 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
@@ -103,8 +103,8 @@ public class ListPlatformHttp extends ProcessWatchCommand {
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
.with(r -> r.name),
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))));
+ new
Column().header("METHOD").dataAlign(HorizontalAlign.LEFT).with(r -> r.verbs),
+ new
Column().header("CONTENT-TYPE").dataAlign(HorizontalAlign.LEFT).with(this::getContent))));
}
return 0;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListRest.java
similarity index 80%
copy from
dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
copy to
dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListRest.java
index b4d59e2b818..eca9ea3d2ea 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListPlatformHttp.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListRest.java
@@ -19,6 +19,7 @@ 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.StringJoiner;
import com.github.freva.asciitable.AsciiTable;
@@ -34,9 +35,9 @@ import org.apache.camel.util.json.JsonObject;
import picocli.CommandLine;
import picocli.CommandLine.Command;
-@Command(name = "platform-http",
- description = "Get embedded HTTP services of Camel integrations",
sortOptions = false)
-public class ListPlatformHttp extends ProcessWatchCommand {
+@Command(name = "rest",
+ description = "Get REST services of Camel integrations", sortOptions
= false)
+public class ListRest extends ProcessWatchCommand {
@CommandLine.Parameters(description = "Name or pid of running Camel
integration", arity = "0..1")
String name = "*";
@@ -45,7 +46,11 @@ public class ListPlatformHttp extends ProcessWatchCommand {
description = "Sort by pid, name or age", defaultValue
= "pid")
String sort;
- public ListPlatformHttp(CamelJBangMain main) {
+ @CommandLine.Option(names = { "--verbose" },
+ description = "Show more details")
+ boolean verbose;
+
+ public ListRest(CamelJBangMain main) {
super(main);
}
@@ -73,20 +78,19 @@ public class ListPlatformHttp extends ProcessWatchCommand {
row.uptime = extractSince(ph);
row.age = TimeUtils.printSince(row.uptime);
- JsonObject jo = (JsonObject) root.get("platform-http");
+ JsonObject jo = (JsonObject) root.get("rests");
if (jo != null) {
- String server = jo.getString("server");
- JsonArray arr = (JsonArray) jo.get("endpoints");
+ JsonArray arr = (JsonArray) jo.get("rests");
if (arr != null) {
for (int i = 0; i < arr.size(); i++) {
row = row.copy();
jo = (JsonObject) arr.get(i);
- row.server = server;
row.url = jo.getString("url");
- row.path = jo.getString("path");
- row.verbs = jo.getString("verbs");
+ row.method =
jo.getString("method").toUpperCase(Locale.ROOT);
row.consumes = jo.getString("consumes");
row.produces = jo.getString("produces");
+ row.description =
jo.getString("description");
+ row.contractFirst =
jo.getBooleanOrDefault("contractFirst", false);
rows.add(row);
}
}
@@ -103,13 +107,19 @@ public class ListPlatformHttp extends ProcessWatchCommand
{
new
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30,
OverflowBehaviour.ELLIPSIS_RIGHT)
.with(r -> r.name),
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))));
+ new
Column().header("METHOD").dataAlign(HorizontalAlign.LEFT).with(r -> r.method),
+ new
Column().header("FIRST").visible(verbose).dataAlign(HorizontalAlign.LEFT).with(this::getKind),
+ new
Column().header("DESCRIPTION").visible(verbose).maxWidth(40,
OverflowBehaviour.NEWLINE).dataAlign(HorizontalAlign.LEFT).with(r ->
r.description),
+ new
Column().header("CONTENT-TYPE").dataAlign(HorizontalAlign.LEFT).with(this::getContent))));
}
return 0;
}
+ private String getKind(Row r) {
+ return r.contractFirst ? "Contract" : "Code";
+ }
+
private String getContent(Row r) {
StringJoiner sj = new StringJoiner(" ");
if (r.consumes != null || r.produces != null) {
@@ -150,12 +160,12 @@ public class ListPlatformHttp extends ProcessWatchCommand
{
String name;
String age;
long uptime;
- String server;
String url;
- String path;
- String verbs;
+ String method;
String consumes;
String produces;
+ String description;
+ boolean contractFirst;
Row copy() {
try {