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 2023/08/03 12:52:56 UTC
[camel] 01/04: CAMEL-19694: camel-jbang - Export can now configure java package name to use for source code
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch export
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 3dc2228178f2c094e49d16e6b66bbae31f9fff73
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Aug 3 14:30:39 2023 +0200
CAMEL-19694: camel-jbang - Export can now configure java package name to use for source code
---
.../camel/dsl/jbang/core/commands/Export.java | 1 +
.../dsl/jbang/core/commands/ExportBaseCommand.java | 22 +++++++++++--
.../dsl/jbang/core/commands/ExportCamelMain.java | 36 ++++++++++++++++------
.../dsl/jbang/core/commands/ExportQuarkus.java | 13 +++++---
.../dsl/jbang/core/commands/ExportSpringBoot.java | 15 ++++++---
.../src/main/resources/templates/main.tmpl | 2 +-
6 files changed, 66 insertions(+), 23 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 aaeaca73e42..830e36a0b07 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
@@ -120,6 +120,7 @@ public class Export extends ExportBaseCommand {
cmd.secretsRefresh = this.secretsRefresh;
cmd.secretsRefreshProviders = this.secretsRefreshProviders;
cmd.openapi = this.openapi;
+ cmd.packageName = this.packageName;
// run export
return cmd.export();
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 543c47e7d35..bd7df4db115 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -158,6 +158,12 @@ abstract class ExportBaseCommand extends CamelCommand {
@CommandLine.Option(names = { "--logging-level" }, defaultValue = "info", description = "Logging level")
protected String loggingLevel;
+ @CommandLine.Option(names = { "--package-name" },
+ description = "For Java source files should they have the given package name. By default the package name is computed from the Maven GAV. "
+ +
+ "Use false to turn off and not include package name in the Java source files.")
+ protected String packageName;
+
@CommandLine.Option(names = { "--fresh" }, description = "Make sure we use fresh (i.e. non-cached) resources")
protected boolean fresh;
@@ -443,8 +449,10 @@ abstract class ExportBaseCommand extends CamelCommand {
}
} else {
fos = new FileOutputStream(out);
- lines.add(0, "");
- lines.add(0, "package " + packageName + ";");
+ if (packageName != null && !"false".equalsIgnoreCase(packageName)) {
+ lines.add(0, "");
+ lines.add(0, "package " + packageName + ";");
+ }
}
for (String line : lines) {
adjustJavaSourceFileLine(line, fos);
@@ -462,7 +470,15 @@ abstract class ExportBaseCommand extends CamelCommand {
// noop
}
- protected String exportPackageName(String groupId, String artifactId) {
+ protected String exportPackageName(String groupId, String artifactId, String packageName) {
+ if ("false".equalsIgnoreCase(packageName)) {
+ return null; // package names are turned off (we should use root package)
+ }
+ if (packageName != null) {
+ return packageName; // use specific package name
+ }
+
+ // compute package name based on Maven GAV
// for package name it must be in lower-case and alpha/numeric
String s = groupId + "." + artifactId;
StringBuilder sb = new StringBuilder();
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 54cc96a053e..9c5d9df7e6d 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
@@ -82,10 +82,15 @@ class ExportCamelMain extends Export {
FileUtil.removeDir(buildDir);
buildDir.mkdirs();
- // copy source files
- String packageName = exportPackageName(ids[0], ids[1]);
+ // compute source folders
File srcJavaDirRoot = new File(BUILD_DIR, "src/main/java");
- File srcJavaDir = new File(srcJavaDirRoot, packageName.replace('.', File.separatorChar));
+ String srcPackageName = exportPackageName(ids[0], ids[1], packageName);
+ File srcJavaDir;
+ if (srcPackageName == null) {
+ srcJavaDir = srcJavaDirRoot;
+ } else {
+ srcJavaDir = new File(srcJavaDirRoot, srcPackageName.replace('.', File.separatorChar));
+ }
srcJavaDir.mkdirs();
File srcResourcesDir = new File(BUILD_DIR, "src/main/resources");
srcResourcesDir.mkdirs();
@@ -93,12 +98,15 @@ class ExportCamelMain extends Export {
srcCamelResourcesDir.mkdirs();
File srcKameletsResourcesDir = new File(BUILD_DIR, "src/main/resources/kamelets");
srcKameletsResourcesDir.mkdirs();
+ // copy source files
copySourceFiles(settings, profile, srcJavaDirRoot, srcJavaDir, srcResourcesDir, srcCamelResourcesDir,
- srcKameletsResourcesDir, packageName);
+ srcKameletsResourcesDir, srcPackageName);
// copy from settings to profile
copySettingsAndProfile(settings, profile, srcResourcesDir, prop -> {
- if (!prop.containsKey("camel.main.basePackageScan") && !prop.containsKey("camel.main.base-package-scan")) {
- prop.put("camel.main.basePackageScan", packageName);
+ if (!prop.containsKey("camel.main.basePackageScan")
+ && !prop.containsKey("camel.main.base-package-scan")) {
+ // use dot as root package if no package are in use
+ prop.put("camel.main.basePackageScan", srcPackageName == null ? "." : srcPackageName);
}
if (!hasModeline(settings)) {
prop.remove("camel.main.modeline");
@@ -117,13 +125,13 @@ class ExportCamelMain extends Export {
return prop;
});
// create main class
- createMainClassSource(srcJavaDir, packageName, mainClassname);
+ createMainClassSource(srcJavaDir, srcPackageName, mainClassname);
// gather dependencies
Set<String> deps = resolveDependencies(settings, profile);
// copy local lib JARs
copyLocalLibDependencies(deps);
if ("maven".equals(buildTool)) {
- createMavenPom(settings, profile, new File(BUILD_DIR, "pom.xml"), deps, packageName);
+ createMavenPom(settings, profile, new File(BUILD_DIR, "pom.xml"), deps, srcPackageName);
if (mavenWrapper) {
copyMavenWrapper();
}
@@ -156,7 +164,11 @@ class ExportCamelMain extends Export {
context = context.replaceFirst("\\{\\{ \\.Version }}", ids[2]);
context = context.replaceFirst("\\{\\{ \\.JavaVersion }}", javaVersion);
context = context.replaceAll("\\{\\{ \\.CamelVersion }}", camelVersion);
- context = context.replaceAll("\\{\\{ \\.MainClassname }}", packageName + "." + mainClassname);
+ if (packageName != null) {
+ context = context.replaceAll("\\{\\{ \\.MainClassname }}", packageName + "." + mainClassname);
+ } else {
+ context = context.replaceAll("\\{\\{ \\.MainClassname }}", mainClassname);
+ }
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
@@ -307,7 +319,11 @@ class ExportCamelMain extends Export {
String context = IOHelper.loadText(is);
IOHelper.close(is);
- context = context.replaceFirst("\\{\\{ \\.PackageName }}", packageName);
+ if (packageName != null) {
+ context = context.replaceFirst("\\{\\{ \\.PackageName }}", "package " + packageName + ";");
+ } else {
+ context = context.replaceFirst("\\{\\{ \\.PackageName }}", "");
+ }
context = context.replaceAll("\\{\\{ \\.MainClassname }}", mainClassname);
IOHelper.writeText(context, new FileOutputStream(srcJavaDir + "/" + mainClassname + ".java", false));
}
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 aa7cc6bce78..c525ff3a1a2 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
@@ -85,10 +85,14 @@ class ExportQuarkus extends Export {
FileUtil.removeDir(buildDir);
buildDir.mkdirs();
- // copy source files
- String packageName = exportPackageName(ids[0], ids[1]);
File srcJavaDirRoot = new File(BUILD_DIR, "src/main/java");
- File srcJavaDir = new File(srcJavaDirRoot, packageName.replace('.', File.separatorChar));
+ String srcPackageName = exportPackageName(ids[0], ids[1], packageName);
+ File srcJavaDir;
+ if (srcPackageName == null) {
+ srcJavaDir = srcJavaDirRoot;
+ } else {
+ srcJavaDir = new File(srcJavaDirRoot, srcPackageName.replace('.', File.separatorChar));
+ }
srcJavaDir.mkdirs();
File srcResourcesDir = new File(BUILD_DIR, "src/main/resources");
srcResourcesDir.mkdirs();
@@ -96,8 +100,9 @@ class ExportQuarkus extends Export {
srcCamelResourcesDir.mkdirs();
File srcKameletsResourcesDir = new File(BUILD_DIR, "src/main/resources/kamelets");
srcKameletsResourcesDir.mkdirs();
+ // copy source files
copySourceFiles(settings, profile, srcJavaDirRoot, srcJavaDir, srcResourcesDir, srcCamelResourcesDir,
- srcKameletsResourcesDir, packageName);
+ srcKameletsResourcesDir, srcPackageName);
// copy from settings to profile
copySettingsAndProfile(settings, profile, srcResourcesDir, prop -> {
if (!hasModeline(settings)) {
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 e393f3ef0ea..5c9e5103e7a 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
@@ -86,10 +86,14 @@ class ExportSpringBoot extends Export {
FileUtil.removeDir(buildDir);
buildDir.mkdirs();
- // copy source files
- String packageName = exportPackageName(ids[0], ids[1]);
File srcJavaDirRoot = new File(BUILD_DIR, "src/main/java");
- File srcJavaDir = new File(srcJavaDirRoot, packageName.replace('.', File.separatorChar));
+ String srcPackageName = exportPackageName(ids[0], ids[1], packageName);
+ File srcJavaDir;
+ if (srcPackageName == null) {
+ srcJavaDir = srcJavaDirRoot;
+ } else {
+ srcJavaDir = new File(srcJavaDirRoot, srcPackageName.replace('.', File.separatorChar));
+ }
srcJavaDir.mkdirs();
File srcResourcesDir = new File(BUILD_DIR, "src/main/resources");
srcResourcesDir.mkdirs();
@@ -97,8 +101,9 @@ class ExportSpringBoot extends Export {
srcCamelResourcesDir.mkdirs();
File srcKameletsResourcesDir = new File(BUILD_DIR, "src/main/resources/kamelets");
srcKameletsResourcesDir.mkdirs();
+ // copy source files
copySourceFiles(settings, profile, srcJavaDirRoot, srcJavaDir, srcResourcesDir, srcCamelResourcesDir,
- srcKameletsResourcesDir, packageName);
+ srcKameletsResourcesDir, srcPackageName);
// copy from settings to profile
copySettingsAndProfile(settings, profile, srcResourcesDir, prop -> {
if (!hasModeline(settings)) {
@@ -107,7 +112,7 @@ class ExportSpringBoot extends Export {
return prop;
});
// create main class
- createMainClassSource(srcJavaDir, packageName, mainClassname);
+ createMainClassSource(srcJavaDir, srcPackageName, mainClassname);
// gather dependencies
Set<String> deps = resolveDependencies(settings, profile);
// copy local lib JARs
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main.tmpl
index bf0bf30cd3c..52e141843ca 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main.tmpl
@@ -1,4 +1,4 @@
-package {{ .PackageName }};
+{{ .PackageName }}
import org.apache.camel.main.Main;