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 b32c1ba33cf11bddbd0134d5d302afd4cf8125ef Author: Claus Ibsen <[email protected]> AuthorDate: Mon Jun 6 14:50:41 2022 +0200 CAMEL-18151: camel-jbang - Base command for export --- .../camel/dsl/jbang/core/commands/BaseExport.java | 56 +++++++++++++++++++ .../dsl/jbang/core/commands/ExportCamelMain.java | 54 ------------------- .../dsl/jbang/core/commands/ExportQuarkus.java | 54 +------------------ .../dsl/jbang/core/commands/ExportSpringBoot.java | 62 +++------------------- 4 files changed, 63 insertions(+), 163 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java index e7ab0c246b2..2d3568f7a8c 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java @@ -7,12 +7,14 @@ import java.io.InputStream; 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; import java.util.TreeSet; +import java.util.stream.Collectors; import org.apache.camel.main.MavenGav; import org.apache.camel.util.FileUtil; @@ -163,6 +165,60 @@ abstract class BaseExport extends CamelCommand { // noop } + protected void copySettingsAndProfile(File settings, File profile, File targetDir, String packageName) throws Exception { + OrderedProperties prop = new OrderedProperties(); + prop.load(new FileInputStream(settings)); + OrderedProperties prop2 = new OrderedProperties(); + if (profile.exists()) { + prop2.load(new FileInputStream(profile)); + } + + for (Map.Entry<Object, Object> entry : prop.entrySet()) { + String key = entry.getKey().toString(); + boolean skip = "camel.main.routesCompileDirectory".equals(key) || "camel.main.routesReloadEnabled".equals(key); + if (!skip && key.startsWith("camel.main")) { + prop2.put(entry.getKey(), entry.getValue()); + } + } + + // should have package name set for package scan + if (packageName != null && !prop2.containsKey("camel.main.basePackageScan") + && !prop2.containsKey("camel.main.base-package-scan")) { + prop2.put("camel.main.basePackageScan", packageName); + } + + 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)) { + // camel.main.routesIncludePattern should remove all .java as we use spring boot to load them + // camel.main.routesIncludePattern should remove all file: classpath: as we copy them to src/main/resources/camel where camel auto-load from + v = Arrays.stream(v.split(",")) + .filter(n -> !n.endsWith(".java") && !n.startsWith("file:") && !n.startsWith("classpath:")) + .collect(Collectors.joining(",")); + } + if (!v.isBlank()) { + String line = adjustApplicationProperties(k, v); + fos.write(line.getBytes(StandardCharsets.UTF_8)); + fos.write("\n".getBytes(StandardCharsets.UTF_8)); + } + } + IOHelper.close(fos); + } + + protected String adjustApplicationProperties(String key, String value) { + return key + "=" + value; + } + protected static void safeCopy(File source, File target, boolean override) throws Exception { if (!source.exists()) { return; 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 fff27b1ae08..9930a6345c6 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 @@ -17,21 +17,15 @@ package org.apache.camel.dsl.jbang.core.commands; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import org.apache.camel.catalog.CamelCatalog; import org.apache.camel.catalog.DefaultCamelCatalog; import org.apache.camel.main.MavenGav; import org.apache.camel.util.FileUtil; import org.apache.camel.util.IOHelper; -import org.apache.camel.util.OrderedProperties; import org.apache.commons.io.FileUtils; import picocli.CommandLine; @@ -198,52 +192,4 @@ class ExportCamelMain extends BaseExport { safeCopy(is, new File(srcResourcesDir, "assembly/runner.xml")); } - private void copySettingsAndProfile(File settings, File profile, File targetDir, String packageName) throws Exception { - OrderedProperties prop = new OrderedProperties(); - prop.load(new FileInputStream(settings)); - OrderedProperties prop2 = new OrderedProperties(); - if (profile.exists()) { - prop2.load(new FileInputStream(profile)); - } - - for (Map.Entry<Object, Object> entry : prop.entrySet()) { - String key = entry.getKey().toString(); - boolean skip = "camel.main.routesCompileDirectory".equals(key) || "camel.main.routesReloadEnabled".equals(key); - if (!skip && key.startsWith("camel.main")) { - prop2.put(entry.getKey(), entry.getValue()); - } - } - // should have package name set for package scan - if (!prop2.containsKey("camel.main.basePackageScan") && !prop2.containsKey("camel.main.base-package-scan")) { - prop2.put("camel.main.basePackageScan", packageName); - } - - 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)) { - // camel.main.routesIncludePattern should remove all .java as they become regular java classes - // camel.main.routesIncludePattern should remove all file: classpath: as we copy them to src/main/resources/camel where camel auto-load from - v = Arrays.stream(v.split(",")) - .filter(n -> !n.endsWith(".java") && !n.startsWith("file:") && !n.startsWith("classpath:")) - .collect(Collectors.joining(",")); - } - if (!v.isBlank()) { - String line = k + "=" + v; - fos.write(line.getBytes(StandardCharsets.UTF_8)); - fos.write("\n".getBytes(StandardCharsets.UTF_8)); - } - } - IOHelper.close(fos); - } - } 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 d0c02dac967..0f43e58acb0 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 @@ -17,19 +17,13 @@ package org.apache.camel.dsl.jbang.core.commands; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import org.apache.camel.main.MavenGav; import org.apache.camel.util.FileUtil; import org.apache.camel.util.IOHelper; -import org.apache.camel.util.OrderedProperties; import org.apache.commons.io.FileUtils; import picocli.CommandLine; @@ -84,7 +78,7 @@ class ExportQuarkus extends BaseExport { srcCamelResourcesDir.mkdirs(); copySourceFiles(settings, profile, srcJavaDir, srcResourcesDir, srcCamelResourcesDir, packageName); // copy from settings to profile - copySettingsAndProfile(settings, profile, srcResourcesDir); + copySettingsAndProfile(settings, profile, srcResourcesDir, null); // gather dependencies Set<String> deps = resolveDependencies(settings); // create pom @@ -158,50 +152,4 @@ class ExportQuarkus extends BaseExport { return answer; } - private void copySettingsAndProfile(File settings, File profile, File targetDir) throws Exception { - OrderedProperties prop = new OrderedProperties(); - prop.load(new FileInputStream(settings)); - OrderedProperties prop2 = new OrderedProperties(); - if (profile.exists()) { - prop2.load(new FileInputStream(profile)); - } - - for (Map.Entry<Object, Object> entry : prop.entrySet()) { - String key = entry.getKey().toString(); - // modeline not supported in camel-quarkus - boolean skip = "camel.main.modeline".equals(key) || "camel.main.routesCompileDirectory".equals(key) - || "camel.main.routesReloadEnabled".equals(key); - if (!skip && key.startsWith("camel.main")) { - prop2.put(entry.getKey(), entry.getValue()); - } - } - - 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)) { - // camel.main.routesIncludePattern should remove all .java as we use quarkus to load them - // camel.main.routesIncludePattern should remove all file: classpath: as we copy them to src/main/resources/camel where camel auto-load from - v = Arrays.stream(v.split(",")) - .filter(n -> !n.endsWith(".java") && !n.startsWith("file:") && !n.startsWith("classpath:")) - .collect(Collectors.joining(",")); - } - if (!v.isBlank()) { - String line = k + "=" + v; - fos.write(line.getBytes(StandardCharsets.UTF_8)); - fos.write("\n".getBytes(StandardCharsets.UTF_8)); - } - } - IOHelper.close(fos); - } - } 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 47dbc37fc44..b61735dfc3b 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 @@ -17,21 +17,16 @@ package org.apache.camel.dsl.jbang.core.commands; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import org.apache.camel.catalog.CamelCatalog; import org.apache.camel.catalog.DefaultCamelCatalog; import org.apache.camel.main.MavenGav; import org.apache.camel.util.FileUtil; import org.apache.camel.util.IOHelper; -import org.apache.camel.util.OrderedProperties; import org.apache.commons.io.FileUtils; import picocli.CommandLine; @@ -91,7 +86,7 @@ class ExportSpringBoot extends BaseExport { srcCamelResourcesDir.mkdirs(); copySourceFiles(settings, profile, srcJavaDir, srcResourcesDir, srcCamelResourcesDir, packageName); // copy from settings to profile - copySettingsAndProfile(settings, profile, srcResourcesDir); + copySettingsAndProfile(settings, profile, srcResourcesDir, null); // create main class createMainClassSource(srcJavaDir, packageName, mainClassname); // gather dependencies @@ -195,58 +190,13 @@ class ExportSpringBoot extends BaseExport { } } - private void copySettingsAndProfile(File settings, File profile, File targetDir) throws Exception { - OrderedProperties prop = new OrderedProperties(); - prop.load(new FileInputStream(settings)); - OrderedProperties prop2 = new OrderedProperties(); - if (profile.exists()) { - prop2.load(new FileInputStream(profile)); - } - - for (Map.Entry<Object, Object> entry : prop.entrySet()) { - String key = entry.getKey().toString(); - boolean skip = "camel.main.routesCompileDirectory".equals(key) || "camel.main.routesReloadEnabled".equals(key); - if (!skip && key.startsWith("camel.main")) { - prop2.put(entry.getKey(), entry.getValue()); - } - } - + @Override + protected String adjustApplicationProperties(String key, String value) { // camel.main.x should be renamed to camel.springboot.x - OrderedProperties prop3 = new OrderedProperties(); - for (Map.Entry<Object, Object> entry : prop2.entrySet()) { - String key = entry.getKey().toString(); - if (key.startsWith("camel.main.")) { - key = "camel.springboot." + key.substring(11); - } - prop3.put(key, entry.getValue()); - } - - FileOutputStream fos = new FileOutputStream(new File(targetDir, "application.properties"), false); - for (Map.Entry<Object, Object> entry : prop3.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.springboot.routesIncludePattern".equals(k)) { - // camel.main.routesIncludePattern should remove all .java as we use spring boot to load them - // camel.main.routesIncludePattern should remove all file: classpath: as we copy them to src/main/resources/camel where camel auto-load from - v = Arrays.stream(v.split(",")) - .filter(n -> !n.endsWith(".java") && !n.startsWith("file:") && !n.startsWith("classpath:")) - .collect(Collectors.joining(",")); - } - if (!v.isBlank()) { - String line = k + "=" + v; - fos.write(line.getBytes(StandardCharsets.UTF_8)); - fos.write("\n".getBytes(StandardCharsets.UTF_8)); - } + if (key.startsWith("camel.main.")) { + key = "camel.springboot." + key.substring(11); } - IOHelper.close(fos); + return super.adjustApplicationProperties(key, value); } }
