Author: davsclaus Date: Wed Jul 4 07:23:53 2012 New Revision: 1357115 URL: http://svn.apache.org/viewvc?rev=1357115&view=rev Log: CAMEL-5415: Fixed simple empty quoted literals to be empty expression when used in predicates, so you can compare against empty strings.
Modified: camel/branches/camel-2.9.x/ (props changed) camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Merged /camel/trunk:r1357114 Propchange: camel/branches/camel-2.9.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java?rev=1357115&r1=1357114&r2=1357115&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java Wed Jul 4 07:23:53 2012 @@ -17,6 +17,7 @@ package org.apache.camel.language.simple.ast; import org.apache.camel.Expression; +import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.language.simple.types.SimpleToken; /** @@ -39,11 +40,15 @@ public class DoubleQuoteStart extends Ba @Override public Expression createExpression(String expression) { + Expression answer = null; if (block != null) { - return block.createExpression(expression); - } else { - return null; + answer = block.createExpression(expression); } + if (answer == null) { + // there quoted literal is empty + answer = ExpressionBuilder.constantExpression(""); + } + return answer; } @Override Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java?rev=1357115&r1=1357114&r2=1357115&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java Wed Jul 4 07:23:53 2012 @@ -17,6 +17,7 @@ package org.apache.camel.language.simple.ast; import org.apache.camel.Expression; +import org.apache.camel.builder.ExpressionBuilder; import org.apache.camel.language.simple.types.SimpleToken; /** @@ -39,11 +40,15 @@ public class SingleQuoteStart extends Ba @Override public Expression createExpression(String expression) { + Expression answer = null; if (block != null) { - return block.createExpression(expression); - } else { - return null; + answer = block.createExpression(expression); } + if (answer == null) { + // there quoted literal is empty + answer = ExpressionBuilder.constantExpression(""); + } + return answer; } @Override Modified: camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java?rev=1357115&r1=1357114&r2=1357115&view=diff ============================================================================== --- camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java (original) +++ camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java Wed Jul 4 07:23:53 2012 @@ -48,6 +48,24 @@ public class SimpleOperatorTest extends assertPredicate("${body} != null", false); } + public void testEmptyValue() throws Exception { + exchange.getIn().setBody(""); + assertPredicate("${in.body} == null", false); + assertPredicate("${body} == null", false); + + exchange.getIn().setBody(""); + assertPredicate("${in.body} == ''", true); + assertPredicate("${body} == \"\"", true); + + exchange.getIn().setBody(" "); + assertPredicate("${in.body} == ''", false); + assertPredicate("${body} == \"\"", false); + + exchange.getIn().setBody("Value"); + assertPredicate("${in.body} == ''", false); + assertPredicate("${body} == \"\"", false); + } + public void testAnd() throws Exception { assertPredicate("${in.header.foo} == 'abc' && ${in.header.bar} == 123", true); assertPredicate("${in.header.foo} == 'abc' && ${in.header.bar} == 444", false);