(ELContext context, Class<?>[] parameterTypes, boolean isVarArgs, Object[] params)
| 510 | |
| 511 | |
| 512 | static Object[] buildParameters(ELContext context, Class<?>[] parameterTypes, boolean isVarArgs, Object[] params) { |
| 513 | Object[] parameters = null; |
| 514 | if (parameterTypes.length > 0) { |
| 515 | parameters = new Object[parameterTypes.length]; |
| 516 | int paramCount; |
| 517 | if (params == null) { |
| 518 | params = EMPTY_OBJECT_ARRAY; |
| 519 | } |
| 520 | paramCount = params.length; |
| 521 | if (isVarArgs) { |
| 522 | int varArgIndex = parameterTypes.length - 1; |
| 523 | // First argCount-1 parameters are standard |
| 524 | for (int i = 0; (i < varArgIndex); i++) { |
| 525 | parameters[i] = context.convertToType(params[i], parameterTypes[i]); |
| 526 | } |
| 527 | // Last parameter is the varargs |
| 528 | Class<?> varArgClass = parameterTypes[varArgIndex].getComponentType(); |
| 529 | final Object varargs = Array.newInstance(varArgClass, (paramCount - varArgIndex)); |
| 530 | for (int i = (varArgIndex); i < paramCount; i++) { |
| 531 | Array.set(varargs, i - varArgIndex, context.convertToType(params[i], varArgClass)); |
| 532 | } |
| 533 | parameters[varArgIndex] = varargs; |
| 534 | } else { |
| 535 | parameters = new Object[parameterTypes.length]; |
| 536 | for (int i = 0; i < parameterTypes.length; i++) { |
| 537 | parameters[i] = context.convertToType(params[i], parameterTypes[i]); |
| 538 | } |
| 539 | } |
| 540 | } |
| 541 | return parameters; |
| 542 | } |
| 543 | |
| 544 | |
| 545 | private abstract static class Wrapper<T> { |
no test coverage detected