StructImpl func=new StructImpl();
pc=ThreadLocalPageContext.get(pc);
// TODO func.set("roles", value);
// TODO func.set("userMetadata", value); neo unterst゚tzt irgendwelche a
// meta data
Struct meta = udf.meta;
if(meta!=null) StructUtil.copy(meta, func, true);
func.setEL(KeyConstants._closure, Boolean.FALSE);
func.set(KeyConstants._access,ComponentUtil.toStringAccess(udf.getAccess()));
String hint=udf.hint;
if(!StringUtil.isEmpty(hint))func.set(KeyConstants._hint,hint);
String displayname=udf.displayName;
if(!StringUtil.isEmpty(displayname))func.set(KeyConstants._displayname,displayname);
func.set(KeyConstants._name,udf.functionName);
func.set(KeyConstants._output,Caster.toBoolean(udf.output));
func.set(KeyConstants._returntype, udf.strReturnType);
func.set(KeyConstants._description, udf.description);
func.set(KeyConstants._owner, udf.pageSource.getDisplayPath());
int format = udf.returnFormat;
if(format<0 || format==UDF.RETURN_FORMAT_WDDX) func.set(KeyConstants._returnFormat, "wddx");
else if(format==UDF.RETURN_FORMAT_PLAIN) func.set(KeyConstants._returnFormat, "plain");
else if(format==UDF.RETURN_FORMAT_JSON) func.set(KeyConstants._returnFormat, "json");
else if(format==UDF.RETURN_FORMAT_SERIALIZE)func.set(KeyConstants._returnFormat, "cfml");
FunctionArgument[] args = udf.arguments;
Array params=new ArrayImpl();
//Object defaultValue;
Struct m;
//Object defaultValue;
for(int y=0;y<args.length;y++) {
StructImpl param=new StructImpl();
param.set(KeyConstants._name,args[y].getName().getString());
param.set(KeyConstants._required,Caster.toBoolean(args[y].isRequired()));