@Test public void testMvelCompileNullSafeNullSecond() { String expression = "((parentGroup != null) && ($.?child.firstName in parentGroup.parentList if $.?child.firstName != null).size() > 0)"; ExpressionCompiler compiler = new ExpressionCompiler(expression, true); CompiledExpression compiledExpression = compiler.compile(); Child child = new Child(); child.setFirstName("vlaa"); ParentGroup pGroup = new ParentGroup(); List<Parent> list = new ArrayList<Parent>(); Parent parent = new Parent(); parent.setChild(child); list.add(parent); child = new Child(); child.setFirstName(null); parent = new Parent(); parent.setChild(child); list.add(parent); pGroup.setParentList(list); Boolean result = (Boolean)MVEL.executeExpression(compiledExpression, Collections.<String, Object>singletonMap("parentGroup", pGroup)); assert result == true; pGroup = new ParentGroup(); list = new ArrayList<Parent>(); parent = new Parent(); parent.setChild(null); list.add(parent); pGroup.setParentList(list); result = (Boolean)MVEL.executeExpression(compiledExpression, Collections.<String, Object>singletonMap("parentGroup", pGroup)); assert result == false; }
@Test public void testMvelCompileNullSafeNullFirst() { String expression = "((parentGroup != null) && ($.?child.firstName in parentGroup.parentList if $.?child.firstName != null).size() > 0)"; ExpressionCompiler compiler = new ExpressionCompiler(expression, true); CompiledExpression compiledExpression = compiler.compile(); ParentGroup pGroup = new ParentGroup(); List<Parent> list = new ArrayList<Parent>(); Parent parent = new Parent(); parent.setChild(null); list.add(parent); pGroup.setParentList(list); Boolean result = (Boolean)MVEL.executeExpression(compiledExpression, Collections.<String, Object>singletonMap("parentGroup", pGroup)); assert result == false; Child child = new Child(); child.setFirstName("vlaa"); pGroup = new ParentGroup(); list = new ArrayList<Parent>(); parent = new Parent(); parent.setChild(child); list.add(parent); child = new Child(); child.setFirstName(null); parent = new Parent(); parent.setChild(child); list.add(parent); pGroup.setParentList(list); result = (Boolean)MVEL.executeExpression(compiledExpression, Collections.<String, Object>singletonMap("parentGroup", pGroup)); assert result == true; }