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();