Revision 46505 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultExpressionBuilder.java

View differences:

DefaultExpressionBuilder.java
85 85

  
86 86
        @Override
87 87
        public void accept(Visitor visitor, VisitorFilter filter) {
88
            super.accept(visitor, filter);
89
            this.value.accept(visitor, filter);
88
            boolean visitChildren = true;
89
            if (filter==null || filter.accept(this)) {
90
                visitor.visit(this);
91
            } else {
92
                visitChildren = !filter.skipChildren();
93
            }
94
            if(visitChildren){
95
                this.value.accept(visitor, filter);
96
            }
90 97
        }
91 98

  
92 99
        @Override
......
369 376

  
370 377
        @Override
371 378
        public void accept(Visitor visitor, VisitorFilter filter) {
372
            super.accept(visitor, filter);
373
            if (this.values != null) {
374
                for (Value theValue : values) {
375
                    theValue.accept(visitor, filter);
379
            boolean visitChildren = true;
380
            if (filter==null || filter.accept(this)) {
381
                visitor.visit(this);
382
            } else {
383
                visitChildren = !filter.skipChildren();
384
            }
385
            if(visitChildren){
386
                if (this.values != null) {
387
                    for (Value theValue : values) {
388
                        theValue.accept(visitor, filter);
389
                    }
376 390
                }
377 391
            }
378 392
        }
......
483 497

  
484 498
        @Override
485 499
        public void accept(Visitor visitor, VisitorFilter filter) {
486
            super.accept(visitor, filter);
487
            if( this.parameters!=null ) {
488
                for (Value argument : this.parameters) {
489
                    if( argument!=null ) {
490
                        argument.accept(visitor, filter);
500
            boolean visitChildren = true;
501
            if (filter==null || filter.accept(this)) {
502
                visitor.visit(this);
503
            } else {
504
                visitChildren = !filter.skipChildren();
505
            }
506
            if(visitChildren){
507
                if( this.parameters!=null ) {
508
                    for (Value argument : this.parameters) {
509
                        if( argument!=null ) {
510
                            argument.accept(visitor, filter);
511
                        }
491 512
                    }
492 513
                }
493 514
            }
......
573 594

  
574 595
        @Override
575 596
        public void accept(Visitor visitor, VisitorFilter filter) {
576
            this.instance.accept(visitor, filter);
577
            super.accept(visitor, filter);
597
            boolean visitChildren = true;
598
            if (filter==null || filter.accept(this)) {
599
                visitor.visit(this);
600
            } else {
601
                visitChildren = !filter.skipChildren();
602
            }
603
            if(visitChildren){
604
                this.instance.accept(visitor, filter);
605
            }
578 606
        }
579 607

  
580 608
        @Override
......
791 819
    public Value toValue(String expression) {
792 820
        try {
793 821
            Code code = ExpressionUtils.compile(expression);
822
            code.link(ExpressionUtils.createSymbolTable());
794 823
            return code.toValue(this);
795 824
        } catch(Throwable ex) {
796 825
            return custom(expression);
......
898 927
    
899 928
    @Override
900 929
    public Constant constant(Object value) {
930
        if(value == null){
931
            return VALUE_NULL;
932
        }
901 933
        return new ConstantBase(this, value);
902 934
    }
903 935

  

Also available in: Unified diff