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 8863e9ce4ce CAMEL-22057: camel-jbang - Dependency command does not 
handle version
8863e9ce4ce is described below

commit 8863e9ce4ce20fe23214fa9a753da3363364e4dd
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon May 12 15:43:20 2025 +0200

    CAMEL-22057: camel-jbang - Dependency command does not handle version
---
 .../dsl/jbang/core/commands/DependencyList.java    |  2 +-
 .../dsl/jbang/core/commands/DependencyUpdate.java  |  2 +-
 .../camel/dsl/jbang/core/commands/Export.java      |  4 +-
 .../jbang/core/commands/CamelCommandBaseTest.java  |  2 +-
 .../jbang/core/commands/DependencyListTest.java    | 97 ++++++++++++++++++++++
 .../jbang/core/commands/plugin/PluginAddTest.java  |  2 +-
 .../core/commands/plugin/PluginDeleteTest.java     |  2 +-
 .../jbang/core/commands/plugin/PluginGetTest.java  |  2 +-
 8 files changed, 106 insertions(+), 7 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java
index c2c8a3d4ae6..88ea5b7efe0 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java
@@ -92,7 +92,7 @@ public class DependencyList extends Export {
                     // must be child at <project/dependencyManagement> or 
<project/dependencies>
                     String p = node.getParentNode().getNodeName();
                     String p2 = 
node.getParentNode().getParentNode().getNodeName();
-                    boolean accept = "project".equals(p2) && 
(p.equals("dependencyManagement") || p.equals("dependencies"));
+                    boolean accept = ("dependencyManagement".equals(p2) || 
"project".equals(p2)) && (p.equals("dependencies"));
                     if (!accept) {
                         continue;
                     }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyUpdate.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyUpdate.java
index 9557f21abe0..08ee70f79dd 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyUpdate.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyUpdate.java
@@ -174,7 +174,7 @@ public class DependencyUpdate extends DependencyList {
                 // must be child at <project/dependencyManagement> or 
<project/dependencies>
                 String p = node.getParentNode().getNodeName();
                 String p2 = node.getParentNode().getParentNode().getNodeName();
-                boolean accept = "project".equals(p2) && 
(p.equals("dependencyManagement") || p.equals("dependencies"));
+                boolean accept = ("dependencyManagement".equals(p2) || 
"project".equals(p2)) && (p.equals("dependencies"));
                 if (!accept) {
                     continue;
                 }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 12fa8d3af77..3c80237fe69 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -277,8 +277,10 @@ public class Export extends ExportBaseCommand {
                     case "org.apache.camel.springboot" -> {
                         String a1 = o1.getArtifactId();
                         // main/core/engine first
-                        if ("camel-spring-boot-engine-starter".equals(a1)) {
+                        if ("camel-spring-boot-starter".equals(a1)) {
                             return 21;
+                        } else if 
("camel-spring-boot-engine-starter".equals(a1)) {
+                            return 22;
                         }
                         return 20;
                     }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/CamelCommandBaseTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/CamelCommandBaseTest.java
index 44670f8b73c..81b2521b784 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/CamelCommandBaseTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/CamelCommandBaseTest.java
@@ -25,7 +25,7 @@ public class CamelCommandBaseTest {
     protected StringPrinter printer;
 
     @BeforeEach
-    public void setup() {
+    public void setup() throws Exception {
         printer = new StringPrinter();
     }
 
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyListTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyListTest.java
new file mode 100644
index 00000000000..385a6952eed
--- /dev/null
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/DependencyListTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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.commands;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.util.FileUtil;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+import picocli.CommandLine;
+
+class DependencyListTest extends CamelCommandBaseTest {
+
+    private File workingDir;
+
+    @BeforeEach
+    public void setup() throws Exception {
+        super.setup();
+        Path base = Paths.get("target");
+        workingDir = Files.createTempDirectory(base, "camel-export").toFile();
+    }
+
+    @AfterEach
+    public void end() throws IOException {
+        // force removing, since deleteOnExit is not removing.
+        FileUtil.removeDir(workingDir);
+    }
+
+    @ParameterizedTest
+    @MethodSource("runtimeProvider")
+    public void shouldDependencyList(RuntimeType rt) throws Exception {
+        Export command = createCommand(rt, new String[] { 
"classpath:route.yaml" },
+                "--gav=examples:route:1.0.0", "--dir=" + workingDir, 
"--quiet", "--camel-version=4.11.0",
+                "--quarkus-version=3.22.2", "--spring-boot-version=3.4.5");
+        int exit = command.doCall();
+        Assertions.assertEquals(0, exit);
+
+        List<String> lines = printer.getLines();
+        System.out.println(lines);
+
+        Assertions.assertTrue(lines.size() >= 5);
+        if (rt == RuntimeType.quarkus) {
+            
Assertions.assertEquals("org.apache.camel.quarkus:camel-quarkus-core:3.22.2", 
lines.get(0));
+        } else if (rt == RuntimeType.springBoot) {
+            
Assertions.assertEquals("org.springframework.boot:spring-boot-starter-actuator:3.4.5",
 lines.get(0));
+            
Assertions.assertEquals("org.apache.camel.springboot:camel-spring-boot-starter:4.11.0",
 lines.get(1));
+        } else {
+            Assertions.assertEquals("org.apache.camel:camel-main:4.11.0", 
lines.get(0));
+        }
+    }
+
+    private Export createCommand(RuntimeType rt, String[] files, String... 
args) {
+        DependencyList command = new DependencyList(new 
CamelJBangMain().withPrinter(printer));
+        ;
+        CommandLine.populateCommand(command, "--gav=examples:route:1.0.0", 
"--dir=" + workingDir, "--quiet",
+                "--runtime=%s".formatted(rt.runtime()));
+        if (args != null) {
+            CommandLine.populateCommand(command, args);
+        }
+        command.files = Arrays.asList(files);
+        return command;
+    }
+
+    private static Stream<Arguments> runtimeProvider() {
+        return Stream.of(
+                Arguments.of(RuntimeType.quarkus),
+                Arguments.of(RuntimeType.springBoot),
+                Arguments.of(RuntimeType.main));
+    }
+
+}
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginAddTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginAddTest.java
index 8bda6c617ba..a20e0fb37f1 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginAddTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginAddTest.java
@@ -28,7 +28,7 @@ import org.junit.jupiter.api.Test;
 class PluginAddTest extends CamelCommandBaseTest {
 
     @BeforeEach
-    public void setup() {
+    public void setup() throws Exception {
         super.setup();
 
         CommandLineHelper.useHomeDir("target");
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginDeleteTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginDeleteTest.java
index c4776057888..05643890033 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginDeleteTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginDeleteTest.java
@@ -28,7 +28,7 @@ import org.junit.jupiter.api.Test;
 class PluginDeleteTest extends CamelCommandBaseTest {
 
     @BeforeEach
-    public void setup() {
+    public void setup() throws Exception {
         super.setup();
 
         CommandLineHelper.useHomeDir("target");
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginGetTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginGetTest.java
index de071051e37..c4ac582b0e4 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginGetTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/plugin/PluginGetTest.java
@@ -31,7 +31,7 @@ import org.junit.jupiter.api.Test;
 class PluginGetTest extends CamelCommandBaseTest {
 
     @BeforeEach
-    public void setup() {
+    public void setup() throws Exception {
         super.setup();
 
         CommandLineHelper.useHomeDir("target");

Reply via email to