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 520c7d21db36 CAMEL-22732: camel-jbang - Add DTO classes to represent
json output (#20124)
520c7d21db36 is described below
commit 520c7d21db362e96a38e5059b9af54e0df00f0d9
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Dec 2 12:44:26 2025 +0100
CAMEL-22732: camel-jbang - Add DTO classes to represent json output (#20124)
---
.../dsl/jbang/core/commands/DependencyRuntime.java | 44 +----
.../core/commands/catalog/CatalogBaseCommand.java | 12 +-
.../core/commands/infra/InfraBaseCommand.java | 9 +-
.../jbang/core/commands/process/ListProcess.java | 16 +-
.../dsl/jbang/core/commands/update/UpdateList.java | 28 +--
.../jbang/core/commands/version/VersionList.java | 22 +--
.../camel/dsl/jbang/core/model/CatalogBaseDTO.java | 140 +++++++++++++++
.../dsl/jbang/core/model/DependencyRuntimeDTO.java | 191 +++++++++++++++++++++
.../camel/dsl/jbang/core/model/InfraBaseDTO.java | 86 ++++++++++
.../camel/dsl/jbang/core/model/ListProcessDTO.java | 125 ++++++++++++++
.../camel/dsl/jbang/core/model/UpdateListDTO.java | 84 +++++++++
.../camel/dsl/jbang/core/model/VersionListDTO.java | 125 ++++++++++++++
.../jbang/core/commands/update/UpdateListTest.java | 2 +-
13 files changed, 798 insertions(+), 86 deletions(-)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyRuntime.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyRuntime.java
index 4f3473ecb307..97aa6ef1d796 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyRuntime.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyRuntime.java
@@ -18,14 +18,13 @@ package org.apache.camel.dsl.jbang.core.commands;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
import java.util.StringJoiner;
import org.apache.camel.catalog.CamelCatalog;
import org.apache.camel.dsl.jbang.core.common.CatalogLoader;
import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.model.DependencyRuntimeDTO;
import org.apache.camel.tooling.maven.MavenGav;
import org.apache.camel.util.json.Jsoner;
import org.apache.maven.model.Model;
@@ -143,42 +142,11 @@ public class DependencyRuntime extends CamelCommand {
}
if (jsonOutput) {
- Map<String, String> map = new LinkedHashMap<>();
- map.put("runtime", runtime);
- if (camelVersion != null) {
- map.put("camelVersion", camelVersion);
- }
- if (camelSpringBootVersion != null) {
- map.put("camelSpringBootVersion", camelSpringBootVersion);
- }
- if (camelQuarkusVersion != null) {
- map.put("camelQuarkusVersion", camelQuarkusVersion);
- }
- if (springBootVersion != null) {
- map.put("springBootVersion", springBootVersion);
- }
- if (quarkusVersion != null) {
- map.put("quarkusVersion", quarkusVersion);
- }
- if (camelSpringBootBomGroupId != null) {
- map.put("camelSpringBootBomGroupId",
camelSpringBootBomGroupId);
- }
- if (camelSpringBootBomArtifactId != null) {
- map.put("camelSpringBootBomArtifactId",
camelSpringBootBomArtifactId);
- }
- if (quarkusBomGroupId != null) {
- map.put("quarkusBomGroupId", quarkusBomGroupId);
- }
- if (quarkusBomArtifactId != null) {
- map.put("quarkusBomArtifactId", quarkusBomArtifactId);
- }
- if (camelQuarkusBomGroupId != null) {
- map.put("camelQuarkusBomGroupId", camelQuarkusBomGroupId);
- }
- if (camelQuarkusBomArtifactId != null) {
- map.put("camelQuarkusBomArtifactId",
camelQuarkusBomArtifactId);
- }
- printer().println(Jsoner.serialize(map));
+ DependencyRuntimeDTO dto = new DependencyRuntimeDTO(
+ runtime, camelVersion, camelSpringBootVersion,
camelQuarkusVersion, springBootVersion, quarkusVersion,
+ camelSpringBootBomGroupId, camelSpringBootBomArtifactId,
quarkusBomGroupId, quarkusBomArtifactId,
+ camelQuarkusBomGroupId, camelQuarkusBomArtifactId);
+ printer().println(Jsoner.serialize(dto.toMap()));
} else {
printer().println("Runtime: " + runtime);
if (camelVersion != null) {
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
index eda2a7b39311..c45719e55828 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
@@ -20,7 +20,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
-import java.util.Map;
import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
@@ -35,6 +34,7 @@ import
org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
import org.apache.camel.dsl.jbang.core.common.RuntimeType;
import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
import org.apache.camel.dsl.jbang.core.common.VersionHelper;
+import org.apache.camel.dsl.jbang.core.model.CatalogBaseDTO;
import org.apache.camel.tooling.maven.MavenGav;
import org.apache.camel.tooling.model.ArtifactModel;
import org.apache.camel.util.json.Jsoner;
@@ -149,10 +149,12 @@ public abstract class CatalogBaseCommand extends
CamelCommand {
if (jsonOutput) {
printer().println(
Jsoner.serialize(
- rows.stream().map(row -> Map.of(
- "name", row.name,
- "level", row.level,
- "native",
row.nativeSupported)).collect(Collectors.toList())));
+ rows.stream()
+ .map(row -> new CatalogBaseDTO(
+ row.name, row.title,
row.level, row.since, row.nativeSupported, row.description,
+ row.label, row.gav,
row.deprecated))
+ .map(CatalogBaseDTO::toMap)
+ .collect(Collectors.toList())));
} else {
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS,
rows, Arrays.asList(
new
Column().header("NAME").visible(!displayGav).dataAlign(HorizontalAlign.LEFT).maxWidth(nameWidth())
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
index ee92d66eb8c3..e23f41cf8a74 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
@@ -48,6 +48,7 @@ import org.apache.camel.catalog.DefaultCamelCatalog;
import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+import org.apache.camel.dsl.jbang.core.model.InfraBaseDTO;
import org.apache.camel.support.PatternHelper;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.json.DeserializationException;
@@ -172,13 +173,9 @@ public abstract class InfraBaseCommand extends
CamelCommand {
} catch (DeserializationException e) {
// ignore
}
-
- return Map.of(
- "alias", row.alias(),
- "aliasImplementation",
row.aliasImplementation(),
- "description", row.description() ==
null ? "" : row.description(),
- "serviceData", serviceDataObj);
+ return new InfraBaseDTO(row.alias,
row.aliasImplementation, row.description, serviceDataObj);
})
+ .map(InfraBaseDTO::toMap)
.collect(Collectors.toList())));
} else {
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
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 70a93ddb164c..4881e6d98d70 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
@@ -29,6 +29,7 @@ import com.github.freva.asciitable.OverflowBehaviour;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates;
import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
+import org.apache.camel.dsl.jbang.core.model.ListProcessDTO;
import org.apache.camel.util.TimeUtils;
import org.apache.camel.util.json.JsonObject;
import org.apache.camel.util.json.Jsoner;
@@ -136,15 +137,12 @@ public class ListProcess extends ProcessWatchCommand {
if (jsonOutput) {
printer().println(
Jsoner.serialize(
- rows.stream().map(row -> Map.of(
- "pid", row.pid,
- "name", row.name,
- "ready", row.ready,
- "status", getStatus(row),
- "age", row.ago,
- "total", getTotal(row),
- "fail", getFailed(row),
- "inflight",
getInflight(row))).collect(Collectors.toList())));
+ rows.stream()
+ .map(row -> new ListProcessDTO(
+ row.pid, row.name,
row.ready, getStatus(row), row.ago, row.total,
+ row.failed, row.inflight))
+ .map(ListProcessDTO::toMap)
+ .collect(Collectors.toList())));
} else {
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateList.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateList.java
index 2c06295bf959..5f6226442b58 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateList.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateList.java
@@ -25,7 +25,6 @@ import java.util.Comparator;
import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -38,6 +37,8 @@ import com.github.freva.asciitable.Column;
import com.github.freva.asciitable.HorizontalAlign;
import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.model.UpdateListDTO;
import org.apache.camel.main.download.MavenDependencyDownloader;
import org.apache.camel.tooling.maven.MavenArtifact;
import org.apache.camel.util.json.Jsoner;
@@ -81,7 +82,7 @@ import picocli.CommandLine;
* @see org.apache.camel.dsl.jbang.core.commands.CamelJBangMain
*/
@CommandLine.Command(name = "list",
- description = "List available update versions for Apache
Camel and its runtime variants")
+ description = "List available update versions for Camel
and its runtime variants")
public class UpdateList extends CamelCommand {
@CommandLine.Option(names = { "--repo", "--repos" },
@@ -121,8 +122,8 @@ public class UpdateList extends CamelCommand {
recipesVersions.plainCamelRecipesVersion()
.forEach(l -> rows
.add(new Row(
- l[0], "Camel", "",
- "Migrates Apache Camel 4 application to
Apache Camel " + l[0])));
+ l[0], RuntimeType.main.runtime(), "",
+ "Migrates Camel 4 application to Camel " +
l[0])));
recipesVersions.camelSpringBootRecipesVersion().forEach(l -> {
String[] runtimeVersion
@@ -145,8 +146,8 @@ public class UpdateList extends CamelCommand {
}
rows.add(new Row(
- l[0], "Camel Spring Boot", runtimeVersion[1],
- "Migrates Apache Camel Spring Boot 4 application to
Apache Camel Spring Boot " + l[0]));
+ l[0], RuntimeType.springBoot.runtime(),
runtimeVersion[1],
+ "Migrates Camel Spring Boot 4 application to Camel
Spring Boot " + l[0]));
});
// Translate quarkus versions to Camel
recipesVersions.camelQuarkusRecipesVersions();
@@ -160,7 +161,7 @@ public class UpdateList extends CamelCommand {
String quarkusVersion = runtimeVersion[1];
quarkusVersion = quarkusVersion.substring(0,
quarkusVersion.lastIndexOf('.')) + ".x";
- rows.add(new Row(runtimeVersion[0], "Camel Quarkus",
quarkusVersion, l.description()));
+ rows.add(new Row(runtimeVersion[0],
RuntimeType.quarkus.runtime(), quarkusVersion, l.description()));
}
});
}
@@ -171,15 +172,14 @@ public class UpdateList extends CamelCommand {
if (jsonOutput) {
printer().println(
Jsoner.serialize(
- rows.stream().map(row -> Map.of(
- "version", row.version(),
- "runtime", row.runtime(),
- "runtimeVersion", row.runtimeVersion(),
- "description", row.description()))
+ rows.stream()
+ .map(row -> new UpdateListDTO(
+ row.version.toString(),
row.runtime, row.runtimeVersion, row.description))
+ .map(UpdateListDTO::toMap)
.collect(Collectors.toList())));
} else {
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
- new
Column().header("VERSION").minWidth(30).dataAlign(HorizontalAlign.LEFT)
+ new
Column().header("VERSION").minWidth(10).dataAlign(HorizontalAlign.LEFT)
.with(r -> r.version().toString()),
new Column().header("RUNTIME")
.dataAlign(HorizontalAlign.LEFT).with(r ->
r.runtime()),
@@ -317,6 +317,8 @@ public class UpdateList extends CamelCommand {
.filter(l -> l.startsWith("description"))
.map(l -> l.substring(l.indexOf(":") + 1).trim())
.findFirst().orElse("");
+ // cleanup ugly ` in description
+ description = description.replace("`", "");
quarkusUpdateRecipes.add(new QuarkusUpdates(
name.substring(name.lastIndexOf("/") + 1,
name.indexOf(".yaml")),
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java
index 7b5665637aba..45322a1620ad 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java
@@ -30,10 +30,8 @@ import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
-import java.util.Map;
import java.util.stream.Collectors;
import com.github.freva.asciitable.AsciiTable;
@@ -47,6 +45,7 @@ import
org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
import org.apache.camel.dsl.jbang.core.common.RuntimeType;
import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
import org.apache.camel.dsl.jbang.core.common.VersionHelper;
+import org.apache.camel.dsl.jbang.core.model.VersionListDTO;
import org.apache.camel.main.KameletMain;
import org.apache.camel.main.download.MavenDependencyDownloader;
import org.apache.camel.tooling.maven.RepositoryResolver;
@@ -207,7 +206,13 @@ public class VersionList extends CamelCommand {
if (jsonOutput) {
printer().println(
Jsoner.serialize(
-
rows.stream().map(VersionList::mapOf).collect(Collectors.toList())));
+ rows.stream()
+ .map(row -> new VersionListDTO(
+ row.coreVersion,
runtime.runtime(), row.runtimeVersion, row.jdks, row.kind,
+ row.releaseDate,
+ row.eolDate))
+ .map(VersionListDTO::toMap)
+ .collect(Collectors.toList())));
} else {
printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows,
Arrays.asList(
new Column().header("CAMEL VERSION")
@@ -379,17 +384,6 @@ public class VersionList extends CamelCommand {
return true;
}
- private static Map<String, Object> mapOf(Row r) {
- Map<String, Object> map = new LinkedHashMap<>();
- map.put("camelVersion", r.coreVersion);
- map.put("runtimeVersion", r.runtimeVersion);
- map.put("jdkVersion", r.jdks);
- map.put("kind", r.kind);
- map.put("releaseDate", r.releaseDate);
- map.put("eolDate", r.eolDate);
- return map;
- }
-
protected int sortRow(Row o1, Row o2) {
String s = sort;
int negate = 1;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/CatalogBaseDTO.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/CatalogBaseDTO.java
new file mode 100644
index 000000000000..0fa2bf438215
--- /dev/null
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/CatalogBaseDTO.java
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.model;
+
+import java.util.Map;
+
+import org.apache.camel.util.json.JsonObject;
+
+public class CatalogBaseDTO {
+
+ private String name;
+ private String title;
+ private String level;
+ private String since;
+ private boolean nativeSupported;
+ private String description;
+ private String label;
+ private String gav;
+ private boolean deprecated;
+
+ public CatalogBaseDTO() {
+ }
+
+ public CatalogBaseDTO(String name, String title, String level, String
since, boolean nativeSupported, String description,
+ String label, String gav, boolean deprecated) {
+ this.name = name;
+ this.title = title;
+ this.level = level;
+ this.since = since;
+ this.nativeSupported = nativeSupported;
+ this.description = description;
+ this.label = label;
+ this.gav = gav;
+ this.deprecated = deprecated;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getLevel() {
+ return level;
+ }
+
+ public void setLevel(String level) {
+ this.level = level;
+ }
+
+ public String getSince() {
+ return since;
+ }
+
+ public void setSince(String since) {
+ this.since = since;
+ }
+
+ public boolean isNativeSupported() {
+ return nativeSupported;
+ }
+
+ public void setNativeSupported(boolean nativeSupported) {
+ this.nativeSupported = nativeSupported;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getGav() {
+ return gav;
+ }
+
+ public void setGav(String gav) {
+ this.gav = gav;
+ }
+
+ public boolean isDeprecated() {
+ return deprecated;
+ }
+
+ public void setDeprecated(boolean deprecated) {
+ this.deprecated = deprecated;
+ }
+
+ public Map<String, Object> toMap() {
+ JsonObject jo = new JsonObject();
+ jo.put("name", name);
+ jo.put("title", title);
+ jo.put("level", level);
+ jo.put("since", since);
+ jo.put("nativeSupported", nativeSupported);
+ if (description != null) {
+ jo.put("description", description);
+ }
+ if (label != null) {
+ jo.put("label", label);
+ }
+ jo.put("gav", gav);
+ jo.put("deprecated", deprecated);
+ return jo;
+ }
+}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/DependencyRuntimeDTO.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/DependencyRuntimeDTO.java
new file mode 100644
index 000000000000..7f50bb205485
--- /dev/null
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/DependencyRuntimeDTO.java
@@ -0,0 +1,191 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.model;
+
+import java.util.Map;
+
+import org.apache.camel.util.json.JsonObject;
+
+public class DependencyRuntimeDTO {
+
+ private String runtime;
+ private String camelVersion;
+ private String camelSpringBootVersion;
+ private String camelQuarkusVersion;
+ private String springBootVersion;
+ private String quarkusVersion;
+ private String camelSpringBootBomGroupId;
+ private String camelSpringBootBomArtifactId;
+ private String quarkusBomGroupId;
+ private String quarkusBomArtifactId;
+ private String camelQuarkusBomGroupId;
+ private String camelQuarkusBomArtifactId;
+
+ public DependencyRuntimeDTO() {
+ }
+
+ public DependencyRuntimeDTO(String runtime, String camelVersion, String
camelSpringBootVersion, String camelQuarkusVersion,
+ String springBootVersion, String
quarkusVersion, String camelSpringBootBomGroupId,
+ String camelSpringBootBomArtifactId, String
quarkusBomGroupId, String quarkusBomArtifactId,
+ String camelQuarkusBomGroupId, String
camelQuarkusBomArtifactId) {
+ this.runtime = runtime;
+ this.camelVersion = camelVersion;
+ this.camelSpringBootVersion = camelSpringBootVersion;
+ this.camelQuarkusVersion = camelQuarkusVersion;
+ this.springBootVersion = springBootVersion;
+ this.quarkusVersion = quarkusVersion;
+ this.camelSpringBootBomGroupId = camelSpringBootBomGroupId;
+ this.camelSpringBootBomArtifactId = camelSpringBootBomArtifactId;
+ this.quarkusBomGroupId = quarkusBomGroupId;
+ this.quarkusBomArtifactId = quarkusBomArtifactId;
+ this.camelQuarkusBomGroupId = camelQuarkusBomGroupId;
+ this.camelQuarkusBomArtifactId = camelQuarkusBomArtifactId;
+ }
+
+ public String getRuntime() {
+ return runtime;
+ }
+
+ public void setRuntime(String runtime) {
+ this.runtime = runtime;
+ }
+
+ public String getCamelVersion() {
+ return camelVersion;
+ }
+
+ public void setCamelVersion(String camelVersion) {
+ this.camelVersion = camelVersion;
+ }
+
+ public String getCamelSpringBootVersion() {
+ return camelSpringBootVersion;
+ }
+
+ public void setCamelSpringBootVersion(String camelSpringBootVersion) {
+ this.camelSpringBootVersion = camelSpringBootVersion;
+ }
+
+ public String getCamelQuarkusVersion() {
+ return camelQuarkusVersion;
+ }
+
+ public void setCamelQuarkusVersion(String camelQuarkusVersion) {
+ this.camelQuarkusVersion = camelQuarkusVersion;
+ }
+
+ public String getSpringBootVersion() {
+ return springBootVersion;
+ }
+
+ public void setSpringBootVersion(String springBootVersion) {
+ this.springBootVersion = springBootVersion;
+ }
+
+ public String getQuarkusVersion() {
+ return quarkusVersion;
+ }
+
+ public void setQuarkusVersion(String quarkusVersion) {
+ this.quarkusVersion = quarkusVersion;
+ }
+
+ public String getCamelSpringBootBomGroupId() {
+ return camelSpringBootBomGroupId;
+ }
+
+ public void setCamelSpringBootBomGroupId(String camelSpringBootBomGroupId)
{
+ this.camelSpringBootBomGroupId = camelSpringBootBomGroupId;
+ }
+
+ public String getCamelSpringBootBomArtifactId() {
+ return camelSpringBootBomArtifactId;
+ }
+
+ public void setCamelSpringBootBomArtifactId(String
camelSpringBootBomArtifactId) {
+ this.camelSpringBootBomArtifactId = camelSpringBootBomArtifactId;
+ }
+
+ public String getQuarkusBomGroupId() {
+ return quarkusBomGroupId;
+ }
+
+ public void setQuarkusBomGroupId(String quarkusBomGroupId) {
+ this.quarkusBomGroupId = quarkusBomGroupId;
+ }
+
+ public String getQuarkusBomArtifactId() {
+ return quarkusBomArtifactId;
+ }
+
+ public void setQuarkusBomArtifactId(String quarkusBomArtifactId) {
+ this.quarkusBomArtifactId = quarkusBomArtifactId;
+ }
+
+ public String getCamelQuarkusBomGroupId() {
+ return camelQuarkusBomGroupId;
+ }
+
+ public void setCamelQuarkusBomGroupId(String camelQuarkusBomGroupId) {
+ this.camelQuarkusBomGroupId = camelQuarkusBomGroupId;
+ }
+
+ public String getCamelQuarkusBomArtifactId() {
+ return camelQuarkusBomArtifactId;
+ }
+
+ public void setCamelQuarkusBomArtifactId(String camelQuarkusBomArtifactId)
{
+ this.camelQuarkusBomArtifactId = camelQuarkusBomArtifactId;
+ }
+
+ public Map<String, Object> toMap() {
+ JsonObject jo = new JsonObject();
+ jo.put("runtime", runtime);
+ jo.put("camelVersion", camelVersion);
+ if (camelSpringBootVersion != null) {
+ jo.put("camelSpringBootVersion", camelSpringBootVersion);
+ }
+ if (camelQuarkusVersion != null) {
+ jo.put("camelQuarkusVersion", camelQuarkusVersion);
+ }
+ if (springBootVersion != null) {
+ jo.put("springBootVersion", springBootVersion);
+ }
+ if (quarkusVersion != null) {
+ jo.put("quarkusVersion", quarkusVersion);
+ }
+ if (camelSpringBootBomGroupId != null) {
+ jo.put("camelSpringBootBomGroupId", camelSpringBootBomGroupId);
+ }
+ if (camelSpringBootBomArtifactId != null) {
+ jo.put("camelSpringBootBomArtifactId",
camelSpringBootBomArtifactId);
+ }
+ if (quarkusBomGroupId != null) {
+ jo.put("quarkusBomGroupId", quarkusBomGroupId);
+ }
+ if (quarkusBomArtifactId != null) {
+ jo.put("quarkusBomArtifactId", quarkusBomArtifactId);
+ }
+ if (camelQuarkusBomGroupId != null) {
+ jo.put("camelQuarkusBomGroupId", camelQuarkusBomGroupId);
+ }
+ if (camelQuarkusBomArtifactId != null) {
+ jo.put("camelQuarkusBomArtifactId", camelQuarkusBomArtifactId);
+ }
+ return jo;
+ }
+}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/InfraBaseDTO.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/InfraBaseDTO.java
new file mode 100644
index 000000000000..8f69b30c8f2d
--- /dev/null
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/InfraBaseDTO.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.model;
+
+import java.util.Map;
+
+import org.apache.camel.util.json.JsonObject;
+
+public class InfraBaseDTO {
+
+ private String alias;
+ private String aliasImplementation;
+ private String description;
+ private Object serviceData;
+
+ public InfraBaseDTO() {
+ }
+
+ public InfraBaseDTO(String alias, String aliasImplementation, String
description, Object serviceData) {
+ this.alias = alias;
+ this.aliasImplementation = aliasImplementation;
+ this.description = description;
+ this.serviceData = serviceData;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public String getAliasImplementation() {
+ return aliasImplementation;
+ }
+
+ public void setAliasImplementation(String aliasImplementation) {
+ this.aliasImplementation = aliasImplementation;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Object getServiceData() {
+ return serviceData;
+ }
+
+ public void setServiceData(Object serviceData) {
+ this.serviceData = serviceData;
+ }
+
+ public Map<String, Object> toMap() {
+ JsonObject jo = new JsonObject();
+ jo.put("alias", alias);
+ if (aliasImplementation != null) {
+ jo.put("aliasImplementation", aliasImplementation);
+ }
+ if (description != null) {
+ jo.put("description", description);
+ }
+ if (serviceData != null) {
+ jo.put("serviceData", serviceData);
+ }
+ return jo;
+ }
+}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/ListProcessDTO.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/ListProcessDTO.java
new file mode 100644
index 000000000000..46992e93ad0f
--- /dev/null
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/ListProcessDTO.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.model;
+
+import java.util.Map;
+
+import org.apache.camel.util.json.JsonObject;
+
+public class ListProcessDTO {
+
+ private int pid;
+ private String name;
+ private String ready;
+ private String status;
+ private String age;
+ private long total;
+ private long fail;
+ private int inflight;
+
+ public ListProcessDTO() {
+ }
+
+ public ListProcessDTO(String pid, String name, String ready, String
status, String age, String total, String fail,
+ String inflight) {
+ this.pid = Integer.parseInt(pid);
+ this.name = name;
+ this.ready = ready;
+ this.status = status;
+ this.age = age;
+ this.total = Long.parseLong(total);
+ this.fail = Long.parseLong(fail);
+ this.inflight = Integer.parseInt(inflight);
+ }
+
+ public int getPid() {
+ return pid;
+ }
+
+ public void setPid(int pid) {
+ this.pid = pid;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getReady() {
+ return ready;
+ }
+
+ public void setReady(String ready) {
+ this.ready = ready;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getAge() {
+ return age;
+ }
+
+ public void setAge(String age) {
+ this.age = age;
+ }
+
+ public long getTotal() {
+ return total;
+ }
+
+ public void setTotal(long total) {
+ this.total = total;
+ }
+
+ public long getFail() {
+ return fail;
+ }
+
+ public void setFail(long fail) {
+ this.fail = fail;
+ }
+
+ public int getInflight() {
+ return inflight;
+ }
+
+ public void setInflight(int inflight) {
+ this.inflight = inflight;
+ }
+
+ public Map<String, Object> toMap() {
+ JsonObject jo = new JsonObject();
+ jo.put("pid", pid);
+ jo.put("name", name);
+ jo.put("ready", ready);
+ jo.put("status", status);
+ jo.put("age", age);
+ jo.put("total", total);
+ jo.put("fail", fail);
+ jo.put("inflight", inflight);
+ return jo;
+ }
+}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/UpdateListDTO.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/UpdateListDTO.java
new file mode 100644
index 000000000000..6c6c5343a338
--- /dev/null
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/UpdateListDTO.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.model;
+
+import java.util.Map;
+
+import org.apache.camel.util.json.JsonObject;
+
+public class UpdateListDTO {
+
+ private String version;
+ private String runtime;
+ private String runtimeVersion;
+ private String description;
+
+ public UpdateListDTO() {
+ }
+
+ public UpdateListDTO(String version, String runtime, String
runtimeVersion, String description) {
+ this.version = version;
+ this.runtime = runtime;
+ this.runtimeVersion = runtimeVersion;
+ this.description = description;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getRuntime() {
+ return runtime;
+ }
+
+ public void setRuntime(String runtime) {
+ this.runtime = runtime;
+ }
+
+ public String getRuntimeVersion() {
+ return runtimeVersion;
+ }
+
+ public void setRuntimeVersion(String runtimeVersion) {
+ this.runtimeVersion = runtimeVersion;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Map<String, Object> toMap() {
+ JsonObject jo = new JsonObject();
+ jo.put("camelVersion", version);
+ jo.put("runtime", runtime);
+ if (runtimeVersion != null) {
+ jo.put("runtimeVersion", runtimeVersion);
+ }
+ if (description != null) {
+ jo.put("description", description);
+ }
+ return jo;
+ }
+}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/VersionListDTO.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/VersionListDTO.java
new file mode 100644
index 000000000000..1cc805181e4a
--- /dev/null
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/model/VersionListDTO.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.model;
+
+import java.util.Map;
+
+import org.apache.camel.util.json.JsonObject;
+
+public class VersionListDTO {
+
+ private String camelVersion;
+ private String runtime;
+ private String runtimeVersion;
+ private String jdkVersion;
+ private String kind;
+ private String releaseDate;
+ private String eolDate;
+
+ public VersionListDTO() {
+ }
+
+ public VersionListDTO(String camelVersion, String runtime, String
runtimeVersion, String jdkVersion, String kind,
+ String releaseDate,
+ String eolDate) {
+ this.camelVersion = camelVersion;
+ this.runtime = runtime;
+ this.runtimeVersion = runtimeVersion;
+ this.jdkVersion = jdkVersion;
+ this.kind = kind;
+ this.releaseDate = releaseDate;
+ this.eolDate = eolDate;
+ }
+
+ public String getCamelVersion() {
+ return camelVersion;
+ }
+
+ public void setCamelVersion(String camelVersion) {
+ this.camelVersion = camelVersion;
+ }
+
+ public String getRuntime() {
+ return runtime;
+ }
+
+ public void setRuntime(String runtime) {
+ this.runtime = runtime;
+ }
+
+ public String getRuntimeVersion() {
+ return runtimeVersion;
+ }
+
+ public void setRuntimeVersion(String runtimeVersion) {
+ this.runtimeVersion = runtimeVersion;
+ }
+
+ public String getJdkVersion() {
+ return jdkVersion;
+ }
+
+ public void setJdkVersion(String jdkVersion) {
+ this.jdkVersion = jdkVersion;
+ }
+
+ public String getKind() {
+ return kind;
+ }
+
+ public void setKind(String kind) {
+ this.kind = kind;
+ }
+
+ public String getReleaseDate() {
+ return releaseDate;
+ }
+
+ public void setReleaseDate(String releaseDate) {
+ this.releaseDate = releaseDate;
+ }
+
+ public String getEolDate() {
+ return eolDate;
+ }
+
+ public void setEolDate(String eolDate) {
+ this.eolDate = eolDate;
+ }
+
+ public Map<String, Object> toMap() {
+ JsonObject jo = new JsonObject();
+ jo.put("camelVersion", camelVersion);
+ jo.put("runtime", runtime);
+ if (runtimeVersion != null) {
+ jo.put("runtimeVersion", runtimeVersion);
+ }
+ if (jdkVersion != null) {
+ jo.put("jdkVersion", jdkVersion);
+ }
+ if (kind != null) {
+ jo.put("kind", kind);
+ }
+ if (releaseDate != null) {
+ jo.put("releaseDate", releaseDate);
+ }
+ if (eolDate != null) {
+ jo.put("eolDate", eolDate);
+ }
+ return jo;
+ }
+}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateListTest.java
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateListTest.java
index f5d6569ce3a3..abda8e2d8ffe 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateListTest.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateListTest.java
@@ -34,6 +34,6 @@ public class UpdateListTest extends CamelCommandBaseTest {
List<String> lines = printer.getLines();
Assertions.assertThat(lines.stream().collect(Collectors.joining("\n")))
- .contains("Migrates Apache Camel 4 application to Apache Camel
4.9.0");
+ .contains("Migrates Camel 4 application to Camel 4.9.0");
}
}