This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f03c91c010c5983d31561577063a01d1382476fa
Author: Croway <[email protected]>
AuthorDate: Mon Feb 16 18:17:50 2026 +0100

    camel-jbang version list - include Quarkus and Camel Quarkus versions
---
 .../dsl/jbang/core/commands/update/UpdateList.java | 11 +--
 .../jbang/core/commands/version/VersionList.java   | 79 ++++++++++++++++++++--
 .../camel/dsl/jbang/core/common/VersionHelper.java |  5 ++
 .../camel/dsl/jbang/core/model/VersionListDTO.java | 16 ++++-
 .../dsl/jbang/core/commands/mcp/VersionTools.java  |  2 +
 5 files changed, 100 insertions(+), 13 deletions(-)

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 5f6226442b58..ccbc6470c144 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
@@ -38,6 +38,7 @@ 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.common.VersionHelper;
 import org.apache.camel.dsl.jbang.core.model.UpdateListDTO;
 import org.apache.camel.main.download.MavenDependencyDownloader;
 import org.apache.camel.tooling.maven.MavenArtifact;
@@ -133,12 +134,12 @@ public class UpdateList extends CamelCommand {
                 // upgrade recipes 4.12.1 was released, but only Camel 4.12.0 
is released, in this case,
                 // consider the major.minor only
                 if (runtimeVersion == null) {
-                    String majorMinorVersion = getMajorMinorVersion(l[0]);
+                    String majorMinorVersion = 
VersionHelper.getMajorMinorVersion(l[0]);
                     runtimeVersion
                             = recipesVersions.sbVersions().stream()
                                     .filter(v -> {
                                         // Handle micro Camel Upgrade Recipes 
versions like 4.14.0.1
-                                        String actualMajorMinorVersion = 
getMajorMinorVersion(v[0]);
+                                        String actualMajorMinorVersion = 
VersionHelper.getMajorMinorVersion(v[0]);
                                         return 
actualMajorMinorVersion.equals(majorMinorVersion);
                                     })
                                     .findFirst()
@@ -192,12 +193,6 @@ public class UpdateList extends CamelCommand {
         return 0;
     }
 
-    private static String getMajorMinorVersion(String l) {
-        String[] versions = l.split("\\.");
-        String majorMinorVersion = versions[0] + "." + versions[1];
-        return majorMinorVersion;
-    }
-
     /**
      * Download camel, camel-spring-boot and quarkus upgrade-recipes 
dependencies and collect existing versions
      *
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 813b2dbd1b89..82ee0cb73afd 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
@@ -76,6 +76,8 @@ public class VersionList extends CamelCommand {
     private static final String GIT_CAMEL_QUARKUS_URL
             = 
"https://raw.githubusercontent.com/apache/camel-website/main/content/releases/q/release-%s.md";;
 
+    private static final String QUARKUS_PLATFORM_URL = 
"https://registry.quarkus.io/client/platforms";;
+
     private static final String DEFAULT_DATE_FORMAT = "MMMM yyyy";
 
     @CommandLine.Option(names = { "--runtime" },
@@ -177,6 +179,11 @@ public class VersionList extends CamelCommand {
         List<Row> rows = new ArrayList<>();
         filterVersions(versions, rows, releases);
 
+        // resolve actual Quarkus platform versions from registry
+        if (RuntimeType.quarkus == runtime) {
+            resolveQuarkusPlatformVersions(rows);
+        }
+
         if (lts) {
             rows.removeIf(r -> !"lts".equalsIgnoreCase(r.kind));
         }
@@ -226,17 +233,20 @@ public class VersionList extends CamelCommand {
                     Jsoner.serialize(
                             rows.stream()
                                     .map(row -> new VersionListDTO(
-                                            row.coreVersion, 
runtime.runtime(), row.runtimeVersion, row.jdks, row.kind,
-                                            row.releaseDate,
-                                            row.eolDate))
+                                            row.coreVersion, 
runtime.runtime(), row.runtimeVersion,
+                                            row.quarkusVersion, 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")
                             
.headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER).with(r 
-> r.coreVersion),
-                    new Column().header("QUARKUS").visible(RuntimeType.quarkus 
== runtime)
+                    new 
Column().header("CAMEL_QUARKUS").visible(RuntimeType.quarkus == runtime)
                             
.headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER).with(r 
-> r.runtimeVersion),
+                    new Column().header("QUARKUS").visible(RuntimeType.quarkus 
== runtime)
+                            
.headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER)
+                            .with(r -> r.quarkusVersion != null ? 
r.quarkusVersion : ""),
                     new 
Column().header("SPRING-BOOT").visible(RuntimeType.springBoot == runtime)
                             
.headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER).with(r 
-> r.runtimeVersion),
                     new Column().header("JDK")
@@ -599,9 +609,70 @@ public class VersionList extends CamelCommand {
         return null;
     }
 
+    /**
+     * Resolves the actual Quarkus platform version for each row by fetching 
the Quarkus platform registry and matching
+     * the Camel Quarkus major.minor version against stream IDs.
+     */
+    private void resolveQuarkusPlatformVersions(List<Row> rows) {
+        try {
+            HttpClient hc = HttpClient.newHttpClient();
+            HttpResponse<String> res = hc.send(
+                    HttpRequest.newBuilder(new URI(QUARKUS_PLATFORM_URL))
+                            .timeout(Duration.ofSeconds(2))
+                            .build(),
+                    HttpResponse.BodyHandlers.ofString());
+
+            if (res.statusCode() == 200) {
+                JsonObject json = (JsonObject) Jsoner.deserialize(res.body());
+                JsonArray platforms = json.getCollection("platforms");
+                if (platforms != null && !platforms.isEmpty()) {
+                    JsonObject platform = platforms.getMap(0);
+                    JsonArray streams = platform.getCollection("streams");
+                    if (streams != null) {
+                        // find the latest camel quarkus version per 
major.minor
+                        java.util.Map<String, Row> latestPerStream = new 
java.util.LinkedHashMap<>();
+                        for (Row row : rows) {
+                            if (row.runtimeVersion != null) {
+                                String majorMinor = 
VersionHelper.getMajorMinorVersion(row.runtimeVersion);
+                                Row existing = latestPerStream.get(majorMinor);
+                                if (existing == null
+                                        || 
VersionHelper.compare(row.runtimeVersion, existing.runtimeVersion) > 0) {
+                                    latestPerStream.put(majorMinor, row);
+                                }
+                            }
+                        }
+                        // only set quarkus version on the latest row per 
stream
+                        for (var entry : latestPerStream.entrySet()) {
+                            String majorMinor = entry.getKey();
+                            for (int i = 0; i < streams.size(); i++) {
+                                JsonObject stream = streams.getMap(i);
+                                String streamId = stream.getString("id");
+                                if (majorMinor.equals(streamId)) {
+                                    JsonArray releases = 
stream.getCollection("releases");
+                                    if (releases != null && 
!releases.isEmpty()) {
+                                        JsonObject release = 
releases.getMap(0);
+                                        String quarkusCoreVersion
+                                                = 
release.getString("quarkus-core-version");
+                                        if (quarkusCoreVersion != null) {
+                                            entry.getValue().quarkusVersion = 
quarkusCoreVersion;
+                                        }
+                                    }
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            // ignore - if the registry is not reachable within 2 seconds, skip
+        }
+    }
+
     private static class Row {
         String coreVersion;
         String runtimeVersion;
+        String quarkusVersion;
         String releaseDate;
         long daysSince = -1;
         String eolDate;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
index b7832e95dc58..0cd53f4e7435 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
@@ -130,6 +130,11 @@ public final class VersionHelper {
         return s.compareTo(t);
     }
 
+    public static String getMajorMinorVersion(String version) {
+        String[] parts = version.split("\\.");
+        return parts[0] + "." + parts[1];
+    }
+
     public static String extractCamelVersion() {
         return org.apache.camel.main.util.VersionHelper.extractCamelVersion();
     }
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
index 1cc805181e4a..e69965ff4c19 100644
--- 
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
@@ -25,6 +25,7 @@ public class VersionListDTO {
     private String camelVersion;
     private String runtime;
     private String runtimeVersion;
+    private String quarkusVersion;
     private String jdkVersion;
     private String kind;
     private String releaseDate;
@@ -33,12 +34,14 @@ public class VersionListDTO {
     public VersionListDTO() {
     }
 
-    public VersionListDTO(String camelVersion, String runtime, String 
runtimeVersion, String jdkVersion, String kind,
+    public VersionListDTO(String camelVersion, String runtime, String 
runtimeVersion, String quarkusVersion,
+                          String jdkVersion, String kind,
                           String releaseDate,
                           String eolDate) {
         this.camelVersion = camelVersion;
         this.runtime = runtime;
         this.runtimeVersion = runtimeVersion;
+        this.quarkusVersion = quarkusVersion;
         this.jdkVersion = jdkVersion;
         this.kind = kind;
         this.releaseDate = releaseDate;
@@ -69,6 +72,14 @@ public class VersionListDTO {
         this.runtimeVersion = runtimeVersion;
     }
 
+    public String getQuarkusVersion() {
+        return quarkusVersion;
+    }
+
+    public void setQuarkusVersion(String quarkusVersion) {
+        this.quarkusVersion = quarkusVersion;
+    }
+
     public String getJdkVersion() {
         return jdkVersion;
     }
@@ -108,6 +119,9 @@ public class VersionListDTO {
         if (runtimeVersion != null) {
             jo.put("runtimeVersion", runtimeVersion);
         }
+        if (quarkusVersion != null) {
+            jo.put("quarkusVersion", quarkusVersion);
+        }
         if (jdkVersion != null) {
             jo.put("jdkVersion", jdkVersion);
         }
diff --git 
a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/VersionTools.java
 
b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/VersionTools.java
index e248331082b6..4e9aec34b76c 100644
--- 
a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/VersionTools.java
+++ 
b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/VersionTools.java
@@ -83,6 +83,7 @@ public class VersionTools {
                         v.getString("camelVersion"),
                         v.getString("runtime"),
                         v.getString("runtimeVersion"),
+                        v.getString("quarkusVersion"),
                         v.getString("jdkVersion"),
                         v.getString("kind"),
                         v.getString("releaseDate"),
@@ -120,6 +121,7 @@ public class VersionTools {
             String camelVersion,
             String runtime,
             String runtimeVersion,
+            String quarkusVersion,
             String jdkVersion,
             String kind,
             String releaseDate,

Reply via email to