/** * Use all known {@link ParameterResolver}s to try to compute a value for each parameter * of the method to invoke. * @param method the method for which parameters should be computed * @param wordsForArgs the list of 'words' that should be converted to parameter values. * May include markers for passing parameters 'by name' * @return an array containing resolved parameter values, or {@link #UNRESOLVED} for * parameters that could not be resolved */ private Object[] resolveArgs(Method method, List<String> wordsForArgs) { List<MethodParameter> parameters = Utils.createMethodParameters(method).collect(Collectors.toList()); Object[] args = new Object[parameters.size()]; Arrays.fill(args, UNRESOLVED); for (ParameterResolver resolver : parameterResolvers) { for (int argIndex = 0; argIndex < args.length; argIndex++) { MethodParameter parameter = parameters.get(argIndex); if (args[argIndex] == UNRESOLVED && resolver.supports(parameter)) { args[argIndex] = resolver.resolve(parameter, wordsForArgs).resolvedValue(); } } } return args; }