private void processBinding(StringBuilder sbuilder, BindingDescr bind, ConstraintConnectiveDescr parent, boolean isInsideRelCons, MVELDumperContext context) { String expr = bind.getExpression().trim(); AtomicExprDescr atomicExpr = new AtomicExprDescr(expr); String[] constrAndExpr = processImplicitConstraints(expr, atomicExpr, parent, parent.getDescrs().indexOf( bind ), context ); if ( isInsideRelCons ) { sbuilder.append( constrAndExpr[0] ).append( constrAndExpr[1] ); } else if ( constrAndExpr[0].length() > 4 ) { sbuilder.append( constrAndExpr[ 0 ].substring( 0, constrAndExpr[ 0 ].length() - 4 ) ); } if (bind.getExpression().equals(bind.getBindingField())) { bind.setExpressionAndBindingField( constrAndExpr[1] ); } else { bind.setExpression( constrAndExpr[1] ); } context.addBinding(bind); }
private String[] processNullSafeDereferencing( String expr, AtomicExprDescr atomicExpr, ConstraintConnectiveDescr ccd, int nullSafePos, int parentIdx, int childIdx ) { // convert "field1!.field2" in ["field1 != null && ", "field1.field2"] String field1 = expr.substring( 0, nullSafePos ).trim(); expr = field1 + "." + expr.substring( nullSafePos + 2 ).trim(); RelationalExprDescr check = new RelationalExprDescr( "!=", false, null, new AtomicExprDescr( getPreconditionsToAppend( field1 ) ), new AtomicExprDescr( "null" ) ); String innerCheck = ""; if ( ccd.getConnective() == ConnectiveType.AND || ccd.getConnective() == ConnectiveType.INC_AND ) { ccd.getDescrs().add( childIdx, check ); } else { BaseDescr desc = ccd.getDescrs().get( parentIdx ); if ( desc instanceof ConstraintConnectiveDescr ) { ((ConstraintConnectiveDescr) desc).getDescrs().add( childIdx, check ); } else { ConstraintConnectiveDescr localAnd = new ConstraintConnectiveDescr( ConnectiveType.AND ); BaseDescr original = ccd.getDescrs().remove( parentIdx ); localAnd.getDescrs().add( check ); localAnd.getDescrs().add( original ); ccd.getDescrs().add( parentIdx, localAnd ); } } innerCheck = check.toString() + " && "; String[] nullCheckAndExpr = new String[] { innerCheck, expr }; atomicExpr.setRewrittenExpression( expr ); return nullCheckAndExpr; }
false, null, new AtomicExprDescr( field1 ), new AtomicExprDescr( className ) );
if( buildDescr ) { if ( (left!=null?left.result:null) == null ) { result = new AtomicExprDescr( (left!=null?input.toString(left.start,left.stop):null) ); } else if ( (left!=null?left.result:null) instanceof AtomicExprDescr ) { if ( (left!=null?input.toString(left.start,left.stop):null).equals(((AtomicExprDescr)(left!=null?left.result:null)).getExpression()) ) { result = (left!=null?left.result:null); } else { result = new AtomicExprDescr( (left!=null?input.toString(left.start,left.stop):null) ) ;
if ( state.backtracking==0 ) { if( buildDescr ) { result = new RelationalExprDescr( (op!=null?input.toString(op.start,op.stop):null), false, null, left, new AtomicExprDescr((right!=null?input.toString(right.start,right.stop):null)) );
((value!=null?input.toString(value.start,value.stop):null).equals(((AtomicExprDescr)(value!=null?value.result:null)).getExpression())) )) ? (value!=null?value.result:null) : new AtomicExprDescr( (value!=null?input.toString(value.start,value.stop):null) ) ; result = new RelationalExprDescr( (op!=null?op.opr:null), (op!=null?op.negated:false), sa, ((relationalExpression_scope)relationalExpression_stack.peek()).lsd, descr ); if( ((relationalExpression_scope)relationalExpression_stack.peek()).lsd instanceof BindingDescr ) { ((relationalExpression_scope)relationalExpression_stack.peek()).lsd = new AtomicExprDescr( ((BindingDescr)((relationalExpression_scope)relationalExpression_stack.peek()).lsd).getExpression() );
if( left instanceof BindingDescr ) { binding = (BindingDescr)left; leftDescr = new AtomicExprDescr( binding.getExpression() ); } else { leftDescr = left;
if (state.failed) return result; if ( state.backtracking==0 ) { if( buildDescr ) { result = new AtomicExprDescr( (literal11!=null?input.toString(literal11.start,literal11.stop):null), true ); }