This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch CAMEL-26848-export-property-override in repository https://gitbox.apache.org/repos/asf/camel.git
commit d866799944c9a16c19a24c63fef34f65fb657d99 Author: Claus Ibsen <[email protected]> AuthorDate: Wed Nov 11 15:07:28 2026 +0100 CAMEL-26848: camel-jbang - camel export: a --property value overrides the key of application.properties again CAMEL-26848 kept a key of the application.properties that the run settings repeat, but the run settings also carry the --property values, so a --property override of such a key was lost (ExportMainApplicationPropertiesTest, enabled by CAMEL-26855, fails on main). Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../camel/dsl/jbang/run/export/Exporter.java | 4 ++- .../dsl/jbang/run/export/ProjectExporterTest.java | 33 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/dsl/camel-jbang/camel-jbang-run/src/main/java/org/apache/camel/dsl/jbang/run/export/Exporter.java b/dsl/camel-jbang/camel-jbang-run/src/main/java/org/apache/camel/dsl/jbang/run/export/Exporter.java index 319c079bff7d..60d77a598d4b 100644 --- a/dsl/camel-jbang/camel-jbang-run/src/main/java/org/apache/camel/dsl/jbang/run/export/Exporter.java +++ b/dsl/camel-jbang/camel-jbang-run/src/main/java/org/apache/camel/dsl/jbang/run/export/Exporter.java @@ -835,6 +835,7 @@ abstract class Exporter { appProps.putAll(profileProps); profileProps.putAll(settingsProps); prepareApplicationProperties(profileProps); + Map<String, String> userValues = propertiesMap(request.applicationProperties); for (Map.Entry<Object, Object> entry : settingsProps.entrySet()) { String key = entry.getKey().toString(); @@ -843,7 +844,8 @@ abstract class Exporter { || "camel.main.routesReloadEnabled".equals(key); if (skip && appProps.containsKey(key)) { // a key of the application.properties is kept, as a route may refer to it: {{camel.server.port}} - profileProps.put(key, appProps.get(key)); + // and a value given with --property overrides the one of the application.properties + profileProps.put(key, userValues.getOrDefault(key, appProps.getProperty(key))); } else if (skip) { profileProps.remove(key); } diff --git a/dsl/camel-jbang/camel-jbang-run/src/test/java/org/apache/camel/dsl/jbang/run/export/ProjectExporterTest.java b/dsl/camel-jbang/camel-jbang-run/src/test/java/org/apache/camel/dsl/jbang/run/export/ProjectExporterTest.java index 16ae4e91933f..36d08d729f9d 100644 --- a/dsl/camel-jbang/camel-jbang-run/src/test/java/org/apache/camel/dsl/jbang/run/export/ProjectExporterTest.java +++ b/dsl/camel-jbang/camel-jbang-run/src/test/java/org/apache/camel/dsl/jbang/run/export/ProjectExporterTest.java @@ -121,6 +121,39 @@ class ProjectExporterTest { .doesNotContain("camel.component.properties.location"); } + @Test + void propertyOverridesTheKeyOfTheApplicationProperties() throws Exception { + Path route = writeRoute("shop"); + Files.writeString(dir.resolve("application.properties"), """ + order.period=1000 + camel.server.port=8080 + """); + // camel run puts the --property values in the run settings + DependencyResolver overriding = r -> { + Path settings = r.workDir.resolve(ExportHelper.RUN_SETTINGS_FILE); + Files.createDirectories(settings.getParent()); + Files.writeString(settings, """ + camel.main.routesIncludePattern=file:%s + camel.server.port=9090 + dependency=camel:timer + """.formatted(r.files.get(0))); + return 0; + }; + Path exportDir = dir.resolve("export"); + ExportRequest request = request(route, exportDir); + request.baseDir = dir; + request.applicationProperties = new String[] { "camel.server.port=9090" }; + + StringPrinter printer = new StringPrinter(); + int exit = new ProjectExporter(new ExportContext().withPrinter(printer).withDependencyResolver(overriding)) + .export(request); + + assertThat(exit).as(printer.getOutput()).isZero(); + assertThat(exportDir.resolve("src/main/resources/application.properties")).content() + .contains("order.period=1000", "camel.server.port=9090") + .doesNotContain("camel.server.port=8080"); + } + @Test void exportsInParallelWithWorkDirsOfTheirOwn() throws Exception { List<String> before = listWorkDir();
