001    package railo.runtime.interpreter.ref.var;
002    
003    import railo.runtime.PageContext;
004    import railo.runtime.exp.ExpressionException;
005    import railo.runtime.exp.PageException;
006    import railo.runtime.interpreter.ref.Ref;
007    import railo.runtime.interpreter.ref.RefSupport;
008    import railo.runtime.interpreter.ref.Set;
009    
010    public final class Assign extends RefSupport implements Ref {
011            
012            private Ref value;
013            private Set coll;
014    
015    
016        public Assign(Ref coll, Ref value) throws ExpressionException {
017            if(!(coll instanceof Set))
018                    throw new ExpressionException("invalid assignment left-hand side ("+coll.getTypeName()+")");
019            this.coll=(Set) coll;
020            this.value=value;
021        }
022    
023        public Assign(Set coll, Ref value) {
024            this.coll=coll;
025            this.value=value;
026        }
027            
028        @Override
029        public Object getValue(PageContext pc) throws PageException {
030            return coll.setValue(pc,value.getValue(pc));
031            }
032    
033        @Override
034        public String getTypeName() {
035                    return "operation";
036            }
037    }