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