SPR-6059 Avoiding NPE for unary-not and ternary operators. If the value is null instead of a valid boolean or Boolean, it will now trigger an EvaluationException.
@ -36,7 +37,7 @@ public class OperatorNot extends SpelNodeImpl { // Not is a unary operator so do
@@ -36,7 +37,7 @@ public class OperatorNot extends SpelNodeImpl { // Not is a unary operator so do
@ -296,6 +298,16 @@ public class EvaluationTests extends ExpressionTestCase {
@@ -296,6 +298,16 @@ public class EvaluationTests extends ExpressionTestCase {
evaluate("!true","false",Boolean.class);
}
@Test
publicvoidtestUnaryNot02(){
evaluate("!false","true",Boolean.class);
}
@Test(expected=EvaluationException.class)
publicvoidtestUnaryNotWithNullValue(){
parser.parseExpression("!null").getValue();
}
// assignment
@Test
publicvoidtestAssignmentToVariables01(){
@ -307,7 +319,6 @@ public class EvaluationTests extends ExpressionTestCase {
@@ -307,7 +319,6 @@ public class EvaluationTests extends ExpressionTestCase {
evaluate("2>4?1:2",2,Integer.class);
}
@Test
publicvoidtestTernaryOperator02(){
evaluate("'abc'=='abc'?1:2",1,Integer.class);
@ -332,6 +343,11 @@ public class EvaluationTests extends ExpressionTestCase {
@@ -332,6 +343,11 @@ public class EvaluationTests extends ExpressionTestCase {