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()));
param.set(KeyConstants._type,args[y].getTypeAsString());
displayname=args[y].getDisplayName();
if(!StringUtil.isEmpty(displayname)) param.set(KeyConstants._displayname,displayname);
int defType = args[y].getDefaultType();
if(defType==FunctionArgument.DEFAULT_TYPE_RUNTIME_EXPRESSION){
param.set(KeyConstants._default, "[runtime expression]");
}
else if(defType==FunctionArgument.DEFAULT_TYPE_LITERAL){
param.set(KeyConstants._default,
UDFUtil.getDefaultValue(pc, udf.pageSource, udf.index, y, null));
}
hint=args[y].getHint();
if(!StringUtil.isEmpty(hint))param.set(KeyConstants._hint,hint);
// TODO func.set("userMetadata", value); neo unterst゚tzt irgendwelche attr, die dann hier ausgebenen werden blレdsinn
// meta data
m=args[y].getMetaData();
if(m!=null) StructUtil.copy(m, param, true);
params.append(param);
}
func.set(KeyConstants._parameters,params);
return func;
}