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:55:17 UTC

[camel] branch main updated: CAMEL-18151: camel-jbang - application.properties

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 49ddc84445e CAMEL-18151: camel-jbang - application.properties
49ddc84445e is described below

commit 49ddc84445e59bcf1a6c031b81f7bf1a507906d8
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jun 3 09:55:08 2022 +0200

    CAMEL-18151: camel-jbang - application.properties
---
 .../dsl/jbang/core/commands/ExportCamelMain.java   | 44 ++++++++++++++++++++--
 .../dsl/jbang/core/commands/ExportQuarkus.java     |  2 +-
 .../dsl/jbang/core/commands/ExportSpringBoot.java  | 12 +++++-
 3 files changed, 52 insertions(+), 6 deletions(-)

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 d582f08638b..ec1c01fb898 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
@@ -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;
@@ -117,7 +119,7 @@ class ExportCamelMain extends CamelCommand {
         srcResourcesDir.mkdirs();
         File srcCamelResourcesDir = new File(BUILD_DIR, "src/main/resources/camel");
         srcCamelResourcesDir.mkdirs();
-        copySourceFiles(settings, srcJavaDir, srcResourcesDir, srcCamelResourcesDir, packageName);
+        copySourceFiles(settings, profile, srcJavaDir, srcResourcesDir, srcCamelResourcesDir, packageName);
         // copy from settings to profile
         copySettingsAndProfile(settings, profile, srcResourcesDir, packageName);
         // create main class
@@ -185,7 +187,17 @@ class ExportCamelMain 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 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=")) {
@@ -208,6 +220,20 @@ class ExportCamelMain extends CamelCommand {
         answer.removeIf(s -> s.contains("camel-health"));
         answer.removeIf(s -> s.contains("camel-dsl-modeline"));
 
+        // 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;
     }
 
@@ -228,7 +254,7 @@ class ExportCamelMain extends CamelCommand {
     }
 
     private void copySourceFiles(
-            File settings, File srcJavaDir, File srcResourcesDir, File srcCamelResourcesDir, String packageName)
+            File settings, File profile, File srcJavaDir, File srcResourcesDir, File srcCamelResourcesDir, String packageName)
             throws Exception {
         // read the settings file and find the files to copy
         OrderedProperties prop = new OrderedProperties();
@@ -242,6 +268,10 @@ class ExportCamelMain extends CamelCommand {
                     if (scheme != null) {
                         f = f.substring(scheme.length() + 1);
                     }
+                    boolean skip = profile.getName().equals(f); // skip copying profile
+                    if (skip) {
+                        continue;
+                    }
                     String ext = FileUtil.onlyExt(f, true);
                     boolean java = "java".equals(ext);
                     boolean camel = "camel.main.routesIncludePattern".equals(k) || "camel.component.kamelet.location".equals(k);
@@ -294,10 +324,16 @@ class ExportCamelMain extends CamelCommand {
             prop2.put("camel.main.basePackageScan", packageName);
         }
 
-        FileOutputStream fos = new FileOutputStream(new File(targetDir, profile.getName()), false);
+        FileOutputStream fos = new FileOutputStream(new File(targetDir, "application.properties"), false);
         for (Map.Entry<Object, Object> entry : prop2.entrySet()) {
             String k = entry.getKey().toString();
             String v = entry.getValue().toString();
+
+            boolean skip = k.startsWith("camel.jbang.");
+            if (skip) {
+                continue;
+            }
+
             // files are now loaded in classpath
             v = v.replaceAll("file:", "classpath:");
             if ("camel.main.routesIncludePattern".equals(k)) {
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 91a691d3438..d9d9b130aca 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
@@ -182,7 +182,7 @@ class ExportQuarkus extends CamelCommand {
 
     private Set<String> resolveDependencies(File settings) throws Exception {
         Set<String> answer = new TreeSet<>((o1, o2) -> {
-            // favour org.apache.camel.quarkus first
+            // favour org.apache.camel first
             boolean c1 = o1.contains("org.apache.camel:");
             boolean c2 = o2.contains("org.apache.camel:");
             if (c1 && !c2) {
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 6dbb17af15a..2dc282509f3 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
@@ -194,7 +194,17 @@ class ExportSpringBoot 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 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=")) {