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/10/21 09:06:52 UTC

[camel] branch main updated: CAMEL-18609: camel-jbang - Export should sort dependencies in pom.xml

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 89424f57619 CAMEL-18609: camel-jbang - Export should sort dependencies in pom.xml
89424f57619 is described below

commit 89424f5761942f43d170ae0521daf3791777b076
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Oct 21 11:06:38 2022 +0200

    CAMEL-18609: camel-jbang - Export should sort dependencies in pom.xml
---
 .../camel/dsl/jbang/core/commands/Export.java      | 35 ++++++++++++++++++++++
 .../dsl/jbang/core/commands/ExportCamelMain.java   | 25 +++++++++++-----
 .../dsl/jbang/core/commands/ExportQuarkus.java     | 29 +++++++++++-------
 .../dsl/jbang/core/commands/ExportSpringBoot.java  | 28 +++++++++++------
 4 files changed, 90 insertions(+), 27 deletions(-)

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 12d95034297..bfced95c678 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
@@ -17,9 +17,11 @@
 package org.apache.camel.dsl.jbang.core.commands;
 
 import java.io.File;
+import java.util.Comparator;
 import java.util.Properties;
 
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
+import org.apache.camel.main.download.MavenGav;
 import org.apache.camel.util.CamelCaseOrderedProperties;
 import picocli.CommandLine.Command;
 
@@ -101,4 +103,37 @@ class Export extends ExportBaseCommand {
         return cmd.export();
     }
 
+    public Comparator<MavenGav> mavenGavComparator() {
+        return new Comparator<MavenGav>() {
+            @Override
+            public int compare(MavenGav o1, MavenGav o2) {
+                int r1 = rankGroupId(o1);
+                int r2 = rankGroupId(o2);
+
+                if (r1 > r2) {
+                    return -1;
+                } else if (r2 > r1) {
+                    return 1;
+                } else {
+                    return o1.toString().compareTo(o2.toString());
+                }
+            }
+
+            int rankGroupId(MavenGav o1) {
+                String g1 = o1.getGroupId();
+                if ("org.apache.camel.quarkus".equals(g1)) {
+                    return 10;
+                } else if ("org.apache.camel.springboot".equals(g1)) {
+                    return 10;
+                } else if ("org.apache.camel.kamelets".equals(g1)) {
+                    return 9;
+                } else if ("org.apache.camel".equals(g1)) {
+                    return 8;
+                } else {
+                    return 0;
+                }
+            }
+        };
+    }
+
 }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index e7512cd8b85..769b24b2f69 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -19,6 +19,8 @@ package org.apache.camel.dsl.jbang.core.commands;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
@@ -148,20 +150,27 @@ class ExportCamelMain extends Export {
             context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString());
         }
 
-        StringBuilder sb = new StringBuilder();
+        List<MavenGav> gavs = new ArrayList<>();
         for (String dep : deps) {
             MavenGav gav = MavenGav.parseGav(dep);
             String gid = gav.getGroupId();
-            String aid = gav.getArtifactId();
-            String v = gav.getVersion();
             if ("org.apache.camel".equals(gid)) {
-                v = null; // use version from bom
+                // uses BOM so version should not be included
+                gav.setVersion(null);
             }
+            gavs.add(gav);
+        }
+
+        // sort artifacts
+        gavs.sort(mavenGavComparator());
+
+        StringBuilder sb = new StringBuilder();
+        for (MavenGav gav : gavs) {
             sb.append("        <dependency>\n");
-            sb.append("            <groupId>").append(gid).append("</groupId>\n");
-            sb.append("            <artifactId>").append(aid).append("</artifactId>\n");
-            if (v != null) {
-                sb.append("            <version>").append(v).append("</version>\n");
+            sb.append("            <groupId>").append(gav.getGroupId()).append("</groupId>\n");
+            sb.append("            <artifactId>").append(gav.getArtifactId()).append("</artifactId>\n");
+            if (gav.getVersion() != null) {
+                sb.append("            <version>").append(gav.getVersion()).append("</version>\n");
             }
             sb.append("        </dependency>\n");
         }
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 d0df64322e7..078032b0c15 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
@@ -19,6 +19,8 @@ package org.apache.camel.dsl.jbang.core.commands;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
@@ -186,31 +188,38 @@ class ExportQuarkus extends Export {
             context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString());
         }
 
-        StringBuilder sb = new StringBuilder();
+        List<MavenGav> gavs = new ArrayList<>();
         for (String dep : deps) {
             MavenGav gav = MavenGav.parseGav(dep);
             String gid = gav.getGroupId();
             String aid = gav.getArtifactId();
-            String v = gav.getVersion();
             // transform to camel-quarkus extension GAV
             if ("org.apache.camel".equals(gid)) {
                 String qaid = aid.replace("camel-", "camel-quarkus-");
                 ArtifactModel<?> am = catalog.modelFromMavenGAV("org.apache.camel.quarkus", qaid, null);
                 if (am != null) {
                     // use quarkus extension
-                    gid = am.getGroupId();
-                    aid = am.getArtifactId();
-                    v = null; // uses BOM so version should not be included
+                    gav.setGroupId(am.getGroupId());
+                    gav.setArtifactId(am.getArtifactId());
+                    gav.setVersion(null); // uses BOM so version should not be included
                 } else {
                     // there is no quarkus extension so use plain camel
-                    v = camelVersion;
+                    gav.setVersion(camelVersion);
                 }
             }
+            gavs.add(gav);
+        }
+
+        // sort artifacts
+        gavs.sort(mavenGavComparator());
+
+        StringBuilder sb = new StringBuilder();
+        for (MavenGav gav : gavs) {
             sb.append("        <dependency>\n");
-            sb.append("            <groupId>").append(gid).append("</groupId>\n");
-            sb.append("            <artifactId>").append(aid).append("</artifactId>\n");
-            if (v != null) {
-                sb.append("            <version>").append(v).append("</version>\n");
+            sb.append("            <groupId>").append(gav.getGroupId()).append("</groupId>\n");
+            sb.append("            <artifactId>").append(gav.getArtifactId()).append("</artifactId>\n");
+            if (gav.getVersion() != null) {
+                sb.append("            <version>").append(gav.getVersion()).append("</version>\n");
             }
             sb.append("        </dependency>\n");
         }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index befcdf202fc..694bd5e5583 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -20,6 +20,8 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
@@ -151,7 +153,7 @@ class ExportSpringBoot extends Export {
             context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString());
         }
 
-        StringBuilder sb = new StringBuilder();
+        List<MavenGav> gavs = new ArrayList<>();
         for (String dep : deps) {
             MavenGav gav = MavenGav.parseGav(dep);
             String gid = gav.getGroupId();
@@ -163,19 +165,27 @@ class ExportSpringBoot extends Export {
                 ArtifactModel<?> am = catalog.modelFromMavenGAV("org.apache.camel.springboot", aid + "-starter", null);
                 if (am != null) {
                     // use spring-boot starter
-                    gid = am.getGroupId();
-                    aid = am.getArtifactId();
-                    v = null; // uses BOM so version should not be included
+                    gav.setGroupId(am.getGroupId());
+                    gav.setArtifactId(am.getArtifactId());
+                    gav.setVersion(null); // uses BOM so version should not be included
                 } else {
                     // there is no spring boot starter so use plain camel
-                    v = camelVersion;
+                    gav.setVersion(camelVersion);
                 }
             }
+            gavs.add(gav);
+        }
+
+        // sort artifacts
+        gavs.sort(mavenGavComparator());
+
+        StringBuilder sb = new StringBuilder();
+        for (MavenGav gav : gavs) {
             sb.append("        <dependency>\n");
-            sb.append("            <groupId>").append(gid).append("</groupId>\n");
-            sb.append("            <artifactId>").append(aid).append("</artifactId>\n");
-            if (v != null) {
-                sb.append("            <version>").append(v).append("</version>\n");
+            sb.append("            <groupId>").append(gav.getGroupId()).append("</groupId>\n");
+            sb.append("            <artifactId>").append(gav.getArtifactId()).append("</artifactId>\n");
+            if (gav.getVersion() != null) {
+                sb.append("            <version>").append(gav.getVersion()).append("</version>\n");
             }
             sb.append("        </dependency>\n");
         }