You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/06/03 07:52:01 UTC

[camel] 01/02: CAMEL-18151: camel-jbang - Export filter out duplicates.

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 19dac467ee073f0a35906d67144a18a2edb9ef0b
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jun 3 09:07:08 2022 +0200

    CAMEL-18151: camel-jbang - Export filter out duplicates.
---
 .../dsl/jbang/core/commands/ExportQuarkus.java     | 28 +++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index e5abbe44bb5..087d61d0513 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -24,6 +24,8 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -179,7 +181,17 @@ class ExportQuarkus extends CamelCommand {
     }
 
     private Set<String> resolveDependencies(File settings) throws Exception {
-        Set<String> answer = new TreeSet<>();
+        Set<String> answer = new TreeSet<>((o1, o2) -> {
+            // favour org.apache.camel.quarkus first
+            boolean c1 = o1.contains("org.apache.camel:");
+            boolean c2 = o2.contains("org.apache.camel:");
+            if (c1 && !c2) {
+                return -1;
+            } else if (!c1 && c2) {
+                return 1;
+            }
+            return o1.compareTo(o2);
+        });
         List<String> lines = Files.readAllLines(settings.toPath());
         for (String line : lines) {
             if (line.startsWith("dependency=")) {
@@ -203,6 +215,20 @@ class ExportQuarkus extends CamelCommand {
         answer.removeIf(s -> s.contains("camel-platform-http"));
         answer.removeIf(s -> s.contains("camel-microprofile-health"));
 
+        // remove duplicate versions (keep first)
+        Map<String, String> versions = new HashMap<>();
+        Set<String> toBeRemoved = new HashSet<>();
+        for (String line : answer) {
+            MavenGav gav = MavenGav.parseGav(null, line);
+            String ga = gav.getGroupId() + ":" + gav.getArtifactId();
+            if (!versions.containsKey(ga)) {
+                versions.put(ga, gav.getVersion());
+            } else {
+                toBeRemoved.add(line);
+            }
+        }
+        answer.removeAll(toBeRemoved);
+
         return answer;
     }