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 }