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
+        }
+    }
+
 }

Reply via email to