package railo.runtime.functions.dynamicEvaluation;
import railo.runtime.PageContext;
import railo.runtime.exp.PageException;
import railo.runtime.ext.function.Function;
import railo.runtime.op.Caster;
import railo.runtime.op.Decision;
import railo.runtime.type.KeyImpl;
import railo.runtime.type.Struct;
import railo.runtime.type.StructImpl;
public class Invoke implements Function {
private static final long serialVersionUID = 3451409617437302246L;
private static final Struct EMPTY = new StructImpl();
public static Object call(PageContext pc , Object obj, String name) throws PageException {
return call(pc, obj, name, null);
}
public static Object call(PageContext pc , Object obj, String name, Object arguments) throws PageException {
if(arguments==null)arguments=EMPTY;
if(obj instanceof String) {
obj=pc.loadComponent(Caster.toString(obj));
}
if(Decision.isStruct(arguments)) {
return pc.getVariableUtil().callFunctionWithNamedValues(pc,obj,KeyImpl.init(name),Caster.toStruct(arguments));
}
return pc.getVariableUtil().callFunctionWithoutNamedValues(pc,obj,KeyImpl.init(name),Caster.toNativeArray(arguments));
}
}