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
commit 8aa7bd17f2d9548249993eec9fc8c7311946e505 Author: Claus Ibsen <[email protected]> AuthorDate: Fri Jul 10 20:05:24 2026 +0200 chore: fix version list EOL filter, update command bugs, and Windows compatibility - VersionList: invert EOL filter to keep active releases (not EOL ones) - UpdateRun: return process exit code instead of always returning 0 - Update: return separate tokens for Windows cmd /c mvn to fix ProcessBuilder - CamelUpdate/UpdateList: split recipe YAML on \R instead of platform separator - UpdateList: fix Quarkus stream prefix match with dot boundary and use ComparableVersion for proper version sorting - CamelQuarkusUpdate: throw CamelUpdateException when no catalog entry matches instead of passing -Dstream=null, guard lastIndexOf result Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../jbang/core/commands/update/CamelQuarkusUpdate.java | 15 ++++++++++++--- .../camel/dsl/jbang/core/commands/update/CamelUpdate.java | 4 ++-- .../camel/dsl/jbang/core/commands/update/Update.java | 9 +++------ .../camel/dsl/jbang/core/commands/update/UpdateList.java | 10 ++++++---- .../camel/dsl/jbang/core/commands/update/UpdateRun.java | 4 +--- .../dsl/jbang/core/commands/version/VersionList.java | 4 ++-- 6 files changed, 26 insertions(+), 20 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelQuarkusUpdate.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelQuarkusUpdate.java index 35541a6081ff..da0f4f38e290 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelQuarkusUpdate.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelQuarkusUpdate.java @@ -41,7 +41,7 @@ public final class CamelQuarkusUpdate implements Update { * * @return */ - public String getQuarkusStream() { + public String getQuarkusStream() throws CamelUpdateException { // Assume that the quarkus updates are in the form 3.8, 3.15, 3.16... List<String[]> qVersions = downloader.resolveAvailableVersions("org.apache.camel.quarkus", QUARKUS_UPDATE_ARTIFACTID, @@ -50,10 +50,19 @@ public final class CamelQuarkusUpdate implements Update { String streamVersion = null; for (String[] qVersion : qVersions) { if (qVersion[0].equals(updateMixin.version)) { - streamVersion = qVersion[1].substring(0, qVersion[1].lastIndexOf('.')); + int dotIdx = qVersion[1].lastIndexOf('.'); + if (dotIdx > 0) { + streamVersion = qVersion[1].substring(0, dotIdx); + } } } + if (streamVersion == null) { + throw new CamelUpdateException( + "Cannot determine Quarkus stream version for Camel version " + updateMixin.version + + ". No matching entry found in camel-quarkus-catalog."); + } + return streamVersion; } @@ -79,7 +88,7 @@ public final class CamelQuarkusUpdate implements Update { @Override public List<String> command() throws CamelUpdateException { - commands.add(mvnProgramCall()); + commands.addAll(mvnProgramCall()); commands.add(debug()); MavenGav gav = updateMixin.resolveQuarkusMavenPlugin(); commands.add(String.format( diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelUpdate.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelUpdate.java index 591275beb6a3..d3e927c7c2cf 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelUpdate.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelUpdate.java @@ -120,7 +120,7 @@ public final class CamelUpdate implements Update { @Override public List<String> command() throws CamelUpdateException { - commands.add(mvnProgramCall()); + commands.addAll(mvnProgramCall()); commands.add(debug()); commands.add("org.openrewrite.maven:rewrite-maven-plugin:" + updateMixin.openRewriteVersion + ":" + runMode()); @@ -158,7 +158,7 @@ public final class CamelUpdate implements Update { * @return an Optional containing the recipe name if it is a Camel upgrade recipe, otherwise empty */ public Optional<String> recipeName() { - return Arrays.stream(content().split(System.lineSeparator())) + return Arrays.stream(content().split("\\R")) .filter(l -> l.startsWith("name") && l.contains("org.apache.camel.upgrade")) .map(l -> l.substring(l.indexOf("org.apache.camel.upgrade"))) .findFirst(); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/Update.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/Update.java index 9bd5714d230c..a407bb194b91 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/Update.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/Update.java @@ -42,14 +42,11 @@ public sealed interface Update permits CamelUpdate, CamelQuarkusUpdate { String getArtifactCoordinates(); - default String mvnProgramCall() { - String mvnProgramCall; + default List<String> mvnProgramCall() { if (FileUtil.isWindows()) { - mvnProgramCall = "cmd /c mvn"; + return List.of("cmd", "/c", "mvn"); } else { - mvnProgramCall = "mvn"; + return List.of("mvn"); } - - return mvnProgramCall; } } 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 739aafdce5ca..9dafbe038f69 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 @@ -158,10 +158,11 @@ public class UpdateList extends CamelCommand { // Translate quarkus versions to Camel recipesVersions.camelQuarkusRecipesVersions(); recipesVersions.quarkusUpdateRecipes().forEach(l -> { - List<String[]> runtimeVersions = recipesVersions.qVersions().stream().filter(v -> v[1].startsWith(l.version())) + List<String[]> runtimeVersions = recipesVersions.qVersions().stream() + .filter(v -> v[1].equals(l.version()) || v[1].startsWith(l.version() + ".")) .collect(Collectors.toList()); if (!runtimeVersions.isEmpty()) { - runtimeVersions.sort(Comparator.comparing(o -> o[1])); + runtimeVersions.sort(Comparator.comparing(o -> new ComparableVersion(o[1]))); String[] runtimeVersion = runtimeVersions.get(runtimeVersions.size() - 1); // Quarkus may release patches independently, therefore, we do not know the real micro version String quarkusVersion = runtimeVersion[1]; @@ -320,8 +321,9 @@ public class UpdateList extends CamelCommand { /* Quarkus specific, maybe in the future can be removed */ && !name.contains("alpha")) { - String content = new String(jarFile.getInputStream(jarEntry).readAllBytes()); - String description = Arrays.stream(content.split(System.lineSeparator())) + String content = new String( + jarFile.getInputStream(jarEntry).readAllBytes(), java.nio.charset.StandardCharsets.UTF_8); + String description = Arrays.stream(content.split("\\R")) .filter(l -> l.startsWith("description")) .map(l -> l.substring(l.indexOf(":") + 1).trim()) .findFirst().orElse(""); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateRun.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateRun.java index ee7f0191296f..e12d9785bb9c 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateRun.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateRun.java @@ -99,9 +99,7 @@ public class UpdateRun extends CamelCommand { } } - executeCommand(command); - - return 0; + return executeCommand(command); } /** 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 3f0025c298c8..b879aec3bf4b 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 @@ -214,12 +214,12 @@ public class VersionList extends CamelCommand { if (eol != null) { try { Date d = sdf.parse(r.eolDate); - return d.before(now); + return d.after(now); } catch (Exception e) { // ignore } } - return false; + return true; }); }
