protected AstFunction createAstFunction(String name, int index, AstParameters params) { return new AstFunction(name, index, params, context.isEnabled(Feature.VARARGS)); }
@Override public Object eval(Bindings bindings, ELContext context) { Method method = bindings.getFunction(index); try { return invoke(bindings, context, null, method); } catch (IllegalAccessException e) { throw new ELException(LocalMessages.get("error.function.access", name), e); } catch (InvocationTargetException e) { throw new ELException(LocalMessages.get("error.function.invocation", name), e.getCause()); } }
if (varargs && method.isVarArgs()) { for (int i = 0; i < params.length - 1; i++) { Object param = getParam(i).eval(bindings, context); if (param != null || types[i].isPrimitive()) { params[i] = bindings.convert(param, types[i]); int length = getParamCount() - varargIndex; Object array = null; if (length == 1) { // special: eventually use argument as is Object param = getParam(varargIndex).eval(bindings, context); if (param != null && param.getClass().isArray()) { if (types[varargIndex].isInstance(param)) { array = Array.newInstance(varargType, length); for (int i = 0; i < length; i++) { Object param = getParam(varargIndex + i).eval(bindings, context); if (param != null || varargType.isPrimitive()) { Array.set(array, i, bindings.convert(param, varargType)); } else { for (int i = 0; i < params.length; i++) { Object param = getParam(i).eval(bindings, context); if (param != null || types[i].isPrimitive()) { params[i] = bindings.convert(param, types[i]);
@Override public Object eval(Bindings bindings, ELContext context) { Method method = bindings.getFunction(index); try { return invoke(bindings, context, null, method); } catch (IllegalAccessException e) { throw new ELException(LocalMessages.get("error.function.access", name), e); } catch (InvocationTargetException e) { throw new ELException(LocalMessages.get("error.function.invocation", name), e.getCause()); } }
if (varargs && method.isVarArgs()) { for (int i = 0; i < params.length - 1; i++) { Object param = getParam(i).eval(bindings, context); if (param != null || types[i].isPrimitive()) { params[i] = bindings.convert(param, types[i]); int length = getParamCount() - varargIndex; Object array = null; if (length == 1) { // special: eventually use argument as is Object param = getParam(varargIndex).eval(bindings, context); if (param != null && param.getClass().isArray()) { if (types[varargIndex].isInstance(param)) { array = Array.newInstance(varargType, length); for (int i = 0; i < length; i++) { Object param = getParam(varargIndex + i).eval(bindings, context); if (param != null || varargType.isPrimitive()) { Array.set(array, i, bindings.convert(param, varargType)); } else { for (int i = 0; i < params.length; i++) { Object param = getParam(i).eval(bindings, context); if (param != null || types[i].isPrimitive()) { params[i] = bindings.convert(param, types[i]);
protected AstFunction createAstFunction(String name, int index, AstParameters params) { return new AstFunction(name, index, params, context.isEnabled(Feature.VARARGS)); }