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/04/14 10:57:07 UTC
[camel] branch main updated: CAMEL-17968: camel-jbang - Add option to specify override property
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 856f14a5a13 CAMEL-17968: camel-jbang - Add option to specify override property
856f14a5a13 is described below
commit 856f14a5a13008837d2891b08d6ae8e9a48a3915
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Apr 14 12:56:50 2022 +0200
CAMEL-17968: camel-jbang - Add option to specify override property
---
.../component/properties/PropertiesComponent.java | 43 +---------------------
.../apache/camel/dsl/jbang/core/commands/Run.java | 15 ++++++++
.../src/main/resources/templates/java.tmpl | 4 +-
.../src/main/resources/templates/xml.tmpl | 2 +-
4 files changed, 19 insertions(+), 45 deletions(-)
diff --git a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
index 7c0e2b30059..807476cd392 100644
--- a/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
+++ b/core/camel-base/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java
@@ -224,48 +224,7 @@ public class PropertiesComponent extends ServiceSupport
@Override
public Properties loadProperties(Predicate<String> filter) {
- OrderedLocationProperties prop = new OrderedLocationProperties();
-
- // use initial properties
- if (initialProperties != null) {
- for (String name : initialProperties.stringPropertyNames()) {
- if (filter.test(name)) {
- prop.put("initial", name, initialProperties.get(name));
- }
- }
- }
-
- if (!sources.isEmpty()) {
- // sources are ordered according to {@link org.apache.camel.support.OrderComparator} so
- // it is needed to iterate them in reverse order otherwise lower priority sources may
- // override properties from higher priority ones
- for (int i = sources.size(); i-- > 0;) {
- PropertiesSource ps = sources.get(i);
- if (ps instanceof LoadablePropertiesSource) {
- LoadablePropertiesSource lps = (LoadablePropertiesSource) ps;
- Properties p = lps.loadProperties(filter);
- if (p instanceof OrderedLocationProperties) {
- prop.putAll((OrderedLocationProperties) p);
- } else if (ps instanceof LocationPropertiesSource) {
- String loc = ((LocationPropertiesSource) ps).getLocation().getPath();
- prop.putAll(loc, p);
- } else {
- prop.putAll(lps.getName(), p);
- }
- }
- }
- }
-
- // use override properties
- if (overrideProperties != null) {
- for (String name : overrideProperties.stringPropertyNames()) {
- if (filter.test(name)) {
- prop.put("override", name, overrideProperties.get(name));
- }
- }
- }
-
- return prop;
+ return loadProperties(filter, k -> k);
}
@Override
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index c68bdae82e0..5df6f627f20 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -40,6 +40,7 @@ import org.apache.camel.support.ResourceHelper;
import org.apache.camel.util.AntPathMatcher;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.StringHelper;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
import picocli.CommandLine.Parameters;
@@ -97,6 +98,9 @@ class Run implements Callable<Integer> {
description = "Load properties file for route placeholders (ex. /path/to/file.properties")
private String propertiesFiles;
+ @Option(names = { "-p", "--prop", "--property" }, description = "Additional properties (override existing)", arity = "0")
+ private String[] property;
+
@Option(names = { "--file-lock" }, defaultValue = "true",
description = "Whether to create a temporary file lock, which upon deleting triggers this process to terminate")
private boolean fileLock = true;
@@ -180,6 +184,17 @@ class Run implements Callable<Integer> {
main.addInitialProperty("camel.main.tracing", trace ? "true" : "false");
main.addInitialProperty("camel.main.modeline", modeline ? "true" : "false");
+ // override properties as arguments
+ if (property != null) {
+ for (String p : property) {
+ String k = StringHelper.before(p, "=");
+ String v = StringHelper.after(p, "=");
+ if (k != null && v != null) {
+ main.addOverrideProperty(k, v);
+ }
+ }
+ }
+
if (maxMessages > 0) {
main.addInitialProperty("camel.main.durationMaxMessages", String.valueOf(maxMessages));
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/java.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/java.tmpl
index 47b14123e12..722e7fc0fe6 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/java.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/java.tmpl
@@ -1,4 +1,4 @@
-// camel-k: language=java
+// camel-k: language=java property=time=1000
import org.apache.camel.builder.RouteBuilder;
@@ -8,7 +8,7 @@ public class {{ .Name }} extends RouteBuilder {
public void configure() throws Exception {
// Write your routes here, for example:
- from("timer:java?period=1000").routeId("java")
+ from("timer:java?period={{time}}").routeId("java")
.setBody()
.simple("Hello Camel from ${routeId}")
.log("${body}");
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/xml.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/xml.tmpl
index 4287489e30a..290384f2898 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/xml.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/xml.tmpl
@@ -9,7 +9,7 @@
<!-- Write your routes here, for example: -->
<route id="xml">
- <from uri="timer:xml?period=1000"/>
+ <from uri="timer:xml?period={{time:1000}}"/>
<setBody>
<simple>Hello Camel from ${routeId}</simple>
</setBody>