Author: davsclaus Date: Wed Dec 15 16:28:44 2010 New Revision: 1049635 URL: http://svn.apache.org/viewvc?rev=1049635&view=rev Log: CAMEL-3433: Fixed in predicate to handle null results from expressions.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=1049635&r1=1049634&r2=1049635&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Wed Dec 15 16:28:44 2010 @@ -935,12 +935,16 @@ public final class ExpressionBuilder { public static Expression convertToExpression(final Expression expression, final Class type) { return new ExpressionAdapter() { public Object evaluate(Exchange exchange) { - return expression.evaluate(exchange, type); + if (type != null) { + return expression.evaluate(exchange, type); + } else { + return expression; + } } @Override public String toString() { - return "" + expression + ".convertTo(" + type.getCanonicalName() + ".class)"; + return "" + expression; } }; } @@ -952,12 +956,17 @@ public final class ExpressionBuilder { public static Expression convertToExpression(final Expression expression, final Expression type) { return new ExpressionAdapter() { public Object evaluate(Exchange exchange) { - return expression.evaluate(exchange, type.evaluate(exchange, Object.class).getClass()); + Object result = type.evaluate(exchange, Object.class); + if (result != null) { + return expression.evaluate(exchange, result.getClass()); + } else { + return expression; + } } @Override public String toString() { - return "" + expression + ".convertToEvaluatedType(" + type + ")"; + return "" + expression; } }; } Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java?rev=1049635&r1=1049634&r2=1049635&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java Wed Dec 15 16:28:44 2010 @@ -85,6 +85,11 @@ public class PredicateBuilderTest extend assertMatches(header("name").in("Hiram", "Jonathan", "James", "Claus")); } + public void testEmptyHeaderValueIn() throws Exception { + // there is no header with xxx + assertDoesNotMatch(header("xxx").in("Hiram", "Jonathan", "James", "Claus")); + } + public void testStartsWith() throws Exception { assertMatches(header("name").startsWith("J")); assertMatches(header("name").startsWith("James"));