Package railo.runtime.functions.struct

Source Code of railo.runtime.functions.struct.StructInsert

/**
* Implements the CFML Function structinsert
*/
package railo.runtime.functions.struct;

import railo.runtime.PageContext;
import railo.runtime.exp.ExpressionException;
import railo.runtime.exp.PageException;
import railo.runtime.functions.BIF;
import railo.runtime.op.Caster;
import railo.runtime.type.Collection.Key;
import railo.runtime.type.KeyImpl;
import railo.runtime.type.Struct;

public final class StructInsert extends BIF {
 
  private static final long serialVersionUID = 4244527243856690926L;
 
  public static boolean call(PageContext pc , Struct struct, String key, Object value) throws PageException {
    return call(pc , struct, key, value, false);
  }
 
  public static boolean call(PageContext pc , Struct struct, String strKey, Object value, boolean allowoverwrite) throws PageException {
    Key key = KeyImpl.init(strKey);
    if(allowoverwrite) {
      struct.set(key,value);
    }
    else {
      if(struct.get(key,null)!=null) throw new ExpressionException("key ["+key+"] already exist in struct");
      struct.set(key,value);
    }
    return true;
  }

  @Override
  public Object invoke(PageContext pc, Object[] args) throws PageException {
    if(args.length==4) return call(pc,Caster.toStruct(args[0]),Caster.toString(args[1]),args[2],Caster.toBooleanValue(args[3]));
    return call(pc,Caster.toStruct(args[0]),Caster.toString(args[1]),args[2]);
  }
}
TOP

Related Classes of railo.runtime.functions.struct.StructInsert

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.