Polished. Fixes #701

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5d77c116
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5d77c116
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5d77c116

Branch: refs/heads/master
Commit: 5d77c1162c56f6db05e8f3244d907a8cbe35f366
Parents: 140be42
Author: Claus Ibsen <davscl...@apache.org>
Authored: Tue Dec 15 17:48:57 2015 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Dec 15 17:48:57 2015 +0100

----------------------------------------------------------------------
 .../org/apache/camel/builder/ExpressionBuilder.java  |  3 +--
 .../org/apache/camel/model/SetHeaderDefinition.java  |  6 ++++--
 .../apache/camel/model/SetPropertyDefinition.java    |  8 +++++---
 .../apache/camel/processor/SetHeaderProcessor.java   | 12 +++++-------
 .../apache/camel/processor/SetPropertyProcessor.java | 15 ++++++---------
 .../apache/camel/builder/ExpressionBuilderTest.java  |  6 ++++++
 6 files changed, 27 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5d77c116/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java 
b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
index eef4976..790ca36 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
@@ -1879,8 +1879,7 @@ public final class ExpressionBuilder {
     }
 
     /**
-     * Returns Simple expression or fallbacks to Constant expression
-     * if expression str is not Simple expression.
+     * Returns Simple expression or fallback to Constant expression if 
expression str is not Simple expression.
      */
     public static Expression parseSimpleOrFallbackToConstantExpression(String 
str, CamelContext camelContext) {
         if (StringHelper.hasStartToken(str, "simple")) {

http://git-wip-us.apache.org/repos/asf/camel/blob/5d77c116/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
index 2d51f3a..19b8a73 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java
@@ -72,8 +72,7 @@ public class SetHeaderDefinition extends 
NoOutputExpressionNode {
     public Processor createProcessor(RouteContext routeContext) throws 
Exception {
         ObjectHelper.notNull(headerName, "headerName");
         Expression expr = getExpression().createExpression(routeContext);
-        Expression nameExpr = 
ExpressionBuilder.parseSimpleOrFallbackToConstantExpression(getHeaderName(),
-                routeContext.getCamelContext());
+        Expression nameExpr = 
ExpressionBuilder.parseSimpleOrFallbackToConstantExpression(getHeaderName(), 
routeContext.getCamelContext());
         return new SetHeaderProcessor(nameExpr, expr);
     }
 
@@ -88,6 +87,9 @@ public class SetHeaderDefinition extends 
NoOutputExpressionNode {
 
     /**
      * Name of message header to set a new value
+     * <p/>
+     * The <tt>simple</tt> language can be used to define a dynamic evaluated 
header name to be used.
+     * Otherwise a constant name will be used.
      */
     public void setHeaderName(String headerName) {
         this.headerName = headerName;

http://git-wip-us.apache.org/repos/asf/camel/blob/5d77c116/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
index a4e1f5d..fdb0946 100644
--- a/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java
@@ -72,8 +72,7 @@ public class SetPropertyDefinition extends 
NoOutputExpressionNode {
     public Processor createProcessor(RouteContext routeContext) throws 
Exception {
         ObjectHelper.notNull(getPropertyName(), "propertyName", this);
         Expression expr = getExpression().createExpression(routeContext);
-        Expression nameExpr = 
ExpressionBuilder.parseSimpleOrFallbackToConstantExpression(getPropertyName(),
-                routeContext.getCamelContext());
+        Expression nameExpr = 
ExpressionBuilder.parseSimpleOrFallbackToConstantExpression(getPropertyName(), 
routeContext.getCamelContext());
         return new SetPropertyProcessor(nameExpr, expr);
     }
 
@@ -87,7 +86,10 @@ public class SetPropertyDefinition extends 
NoOutputExpressionNode {
     }
 
     /**
-     * Name of exchange property to set a new value
+     * Name of exchange property to set a new value.
+     * <p/>
+     * The <tt>simple</tt> language can be used to define a dynamic evaluated 
exchange property name to be used.
+     * Otherwise a constant name will be used.
      */
     public void setPropertyName(String propertyName) {
         this.propertyName = propertyName;

http://git-wip-us.apache.org/repos/asf/camel/blob/5d77c116/camel-core/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java 
b/camel-core/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java
index 74a6733..8153453 100644
--- 
a/camel-core/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java
+++ 
b/camel-core/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java
@@ -18,8 +18,6 @@ package org.apache.camel.processor;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Message;
@@ -27,6 +25,7 @@ import org.apache.camel.Traceable;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.AsyncProcessorHelper;
+import org.apache.camel.util.ObjectHelper;
 
 /**
  * A processor which sets the header on the IN or OUT message with an {@link 
org.apache.camel.Expression}
@@ -39,6 +38,8 @@ public class SetHeaderProcessor extends ServiceSupport 
implements AsyncProcessor
     public SetHeaderProcessor(Expression headerName, Expression expression) {
         this.headerName = headerName;
         this.expression = expression;
+        ObjectHelper.notNull(headerName, "headerName");
+        ObjectHelper.notNull(expression, "expression");
     }
 
     public void process(Exchange exchange) throws Exception {
@@ -59,7 +60,8 @@ public class SetHeaderProcessor extends ServiceSupport 
implements AsyncProcessor
             boolean out = exchange.hasOut();
             Message old = out ? exchange.getOut() : exchange.getIn();
 
-            old.setHeader(resolveHeaderNameByExchange(exchange), newHeader);
+            String key = headerName.evaluate(exchange, String.class);
+            old.setHeader(key, newHeader);
 
         } catch (Throwable e) {
             exchange.setException(e);
@@ -69,10 +71,6 @@ public class SetHeaderProcessor extends ServiceSupport 
implements AsyncProcessor
         return true;
     }
 
-    private String resolveHeaderNameByExchange(Exchange exchange) {
-        return this.headerName.evaluate(exchange, String.class);
-    }
-
     @Override
     public String toString() {
         return "SetHeader(" + headerName + ", " + expression + ")";

http://git-wip-us.apache.org/repos/asf/camel/blob/5d77c116/camel-core/src/main/java/org/apache/camel/processor/SetPropertyProcessor.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/SetPropertyProcessor.java 
b/camel-core/src/main/java/org/apache/camel/processor/SetPropertyProcessor.java
index 59fc478..d310743 100644
--- 
a/camel-core/src/main/java/org/apache/camel/processor/SetPropertyProcessor.java
+++ 
b/camel-core/src/main/java/org/apache/camel/processor/SetPropertyProcessor.java
@@ -18,14 +18,13 @@ package org.apache.camel.processor;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.AsyncProcessor;
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Traceable;
 import org.apache.camel.spi.IdAware;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.AsyncProcessorHelper;
+import org.apache.camel.util.ObjectHelper;
 
 /**
  * A processor which sets the property on the exchange with an {@link 
org.apache.camel.Expression}
@@ -38,6 +37,8 @@ public class SetPropertyProcessor extends ServiceSupport 
implements AsyncProcess
     public SetPropertyProcessor(Expression propertyName, Expression 
expression) {
         this.propertyName = propertyName;
         this.expression = expression;
+        ObjectHelper.notNull(propertyName, "propertyName");
+        ObjectHelper.notNull(expression, "expression");
     }
 
     public void process(Exchange exchange) throws Exception {
@@ -55,7 +56,8 @@ public class SetPropertyProcessor extends ServiceSupport 
implements AsyncProcess
                 return true;
             }
 
-            exchange.setProperty(resolvePropertyNameByExchange(exchange), 
newProperty);
+            String key = propertyName.evaluate(exchange, String.class);
+            exchange.setProperty(key, newProperty);
         } catch (Throwable e) {
             exchange.setException(e);
         }
@@ -64,10 +66,6 @@ public class SetPropertyProcessor extends ServiceSupport 
implements AsyncProcess
         return true;
     }
 
-    private String resolvePropertyNameByExchange(Exchange exchange) {
-        return this.propertyName.evaluate(exchange, String.class);
-    }
-
     @Override
     public String toString() {
         return "SetProperty(" + propertyName + ", " + expression + ")";
@@ -93,10 +91,9 @@ public class SetPropertyProcessor extends ServiceSupport 
implements AsyncProcess
         return expression;
     }
 
-
     @Override
     protected void doStart() throws Exception {
-        //noop
+        // noop
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/5d77c116/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderTest.java 
b/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderTest.java
index da957ae..ac4a16e 100644
--- 
a/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/builder/ExpressionBuilderTest.java
@@ -104,6 +104,12 @@ public class ExpressionBuilderTest extends TestSupport {
         assertEquals("Get a wrong properties size", properties.size(), 1);
     }
 
+    public void testParseSimpleOrFallbackToConstantExpression() throws 
Exception {
+        assertEquals("world", 
parseSimpleOrFallbackToConstantExpression("world", 
camelContext).evaluate(exchange, String.class));
+        assertEquals("Hello there!", 
parseSimpleOrFallbackToConstantExpression("${body}", 
camelContext).evaluate(exchange, String.class));
+        assertEquals("Hello there!", 
parseSimpleOrFallbackToConstantExpression("$simple{body}", 
camelContext).evaluate(exchange, String.class));
+    }
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();

Reply via email to