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 97f938d CAMEL-16672: SimpleBuilder - Resolve property placeholder on
expression text
97f938d is described below
commit 97f938d367bd3eb18ade14e44d26c3b41f00184a
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon May 31 09:49:28 2021 +0200
CAMEL-16672: SimpleBuilder - Resolve property placeholder on expression text
---
.../org/apache/camel/builder/SimpleBuilder.java | 3 ++-
.../apache/camel/builder/SimpleBuilderTest.java | 29 ++++++++++++++++++++++
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git
a/core/camel-core-model/src/main/java/org/apache/camel/builder/SimpleBuilder.java
b/core/camel-core-model/src/main/java/org/apache/camel/builder/SimpleBuilder.java
index 1a35247..f969103 100644
---
a/core/camel-core-model/src/main/java/org/apache/camel/builder/SimpleBuilder.java
+++
b/core/camel-core-model/src/main/java/org/apache/camel/builder/SimpleBuilder.java
@@ -31,7 +31,7 @@ import org.apache.camel.spi.Language;
*/
public class SimpleBuilder implements Predicate, Expression,
ExpressionResultTypeAware {
- private final String text;
+ private String text;
private Class<?> resultType;
// cache the expression/predicate
private Language simple;
@@ -121,5 +121,6 @@ public class SimpleBuilder implements Predicate,
Expression, ExpressionResultTyp
@Override
public void init(CamelContext context) {
simple = context.resolveLanguage("simple");
+ text = context.resolvePropertyPlaceholders(text);
}
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java
b/core/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java
index 7d9d866..641fce2 100644
---
a/core/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java
@@ -16,10 +16,13 @@
*/
package org.apache.camel.builder;
+import java.util.Properties;
+
import org.apache.camel.Exchange;
import org.apache.camel.TestSupport;
import org.apache.camel.TypeConversionException;
import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.spi.PropertiesComponent;
import org.apache.camel.support.DefaultExchange;
import org.junit.jupiter.api.Test;
@@ -117,4 +120,30 @@ public class SimpleBuilderTest extends TestSupport {
.simple("${header.activateUrl.replaceAll(\"\\{id\\}\",\"{\\}\")}").evaluate(exchange,
String.class));
}
+ @Test
+ public void testPropertyPlaceholder() throws Exception {
+ exchange.getIn().setBody("Hello");
+
+ Properties prop = new Properties();
+ prop.put("foo", "bar");
+ PropertiesComponent pc =
exchange.getContext().getPropertiesComponent();
+ pc.setOverrideProperties(prop);
+
+ assertEquals("bar", SimpleBuilder.simple("{{foo}}").evaluate(exchange,
String.class));
+ assertEquals("bar",
SimpleBuilder.simple("${properties:foo}").evaluate(exchange, String.class));
+
+ try {
+ SimpleBuilder.simple("{{bar}}").evaluate(exchange, String.class);
+ fail("Should fail");
+ } catch (Exception e) {
+ // expected
+ }
+ try {
+ SimpleBuilder.simple("${properties:bar}").evaluate(exchange,
String.class);
+ fail("Should fail");
+ } catch (Exception e) {
+ // expected
+ }
+ }
+
}