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");