package lucee.runtime.type;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.HashSet;
import java.util.Set;
import lucee.commons.lang.CFTypes;
import lucee.runtime.Component;
import lucee.runtime.Page;
import lucee.runtime.PageSource;
import lucee.runtime.op.Constants;
import lucee.runtime.type.Collection.Key;
public class UDFPropertiesLight extends UDFPropertiesBase {
private final Page page;
private final PageSource pageSource;
private final FunctionArgument[] arguments;
private final String functionName;
private final short returnType;
private HashSet<Key> argumentsSet;
public UDFPropertiesLight(Page page, PageSource pageSource, FunctionArgument[] arguments, String functionName, short returnType) {
this.page=page;
this.pageSource=pageSource;
this.arguments=arguments;
this.functionName=functionName;
this.returnType=returnType;
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
// TODO Auto-generated method stub
}
@Override
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
// TODO Auto-generated method stub
}
@Override
public int getAccess() {
return Component.ACCESS_PUBLIC;
}
@Override
public int getModifier() {
return Component.MODIFIER_NONE;
}
@Override
public String getFunctionName() {
return functionName;
}
@Override
public boolean getOutput() {
return false;
}
@Override
public Boolean getBufferOutput() {
return Boolean.TRUE;
}
@Override
public int getReturnType() {
return returnType;
}
@Override
public String getReturnTypeAsString() {
return CFTypes.toString(returnType,"any");
}
@Override
public String getDescription() {
return "";
}
@Override
public int getReturnFormat() {
return UDF.RETURN_FORMAT_WDDX;
}
@Override
public String getReturnFormatAsString() {
return "wddx";
}
@Override
public int getIndex() {
return -1;
}
@Override
public PageSource getPageSource() {
return pageSource;
}
@Override
public Object getCachedWithin() {
return Constants.LONG_ZERO;
}
@Override
public Boolean getSecureJson() {
return Boolean.FALSE;
}
@Override
public Boolean getVerifyClient() {
return Boolean.FALSE;
}
@Override
public FunctionArgument[] getFunctionArguments() {
return arguments;
}
@Override
public String getDisplayName() {
return "";
}
@Override
public String getHint() {
return "";
}
@Override
public Struct getMeta() {
return null;
}
@Override
public Integer getLocalMode() {
return null;
}
@Override
public Page getPage() {
return page;
}
@Override
public Set<Key> getArgumentsSet() {
if(arguments!=null && arguments.length>0){
this.argumentsSet=new HashSet<Collection.Key>();
for(int i=0;i<arguments.length;i++){
argumentsSet.add(arguments[i].getName());
}
}
return argumentsSet;
}
}