/** * Returns all parameters of the given type. * * @param type must not be {@literal null}. * @return * @since 0.9 */ public List<MethodParameter> getParametersOfType(Class<?> type) { Assert.notNull(type, "Type must not be null!"); return getParameters().stream()// .filter(it -> it.getParameterType().equals(type))// .collect(Collectors.toList()); }
private Object[] prepareParameters(Method method, MultiValueMap<String, ? extends Object> rawParameters, Pageable pageable, Sort sort) { List<MethodParameter> parameters = new MethodParameters(method, Optional.of(PARAM_ANNOTATION)).getParameters(); if (parameters.isEmpty()) { return new Object[0]; } Object[] result = new Object[parameters.size()]; Sort sortToUse = pageable.getSortOr(sort); for (int i = 0; i < result.length; i++) { MethodParameter param = parameters.get(i); Class<?> targetType = param.getParameterType(); if (Pageable.class.isAssignableFrom(targetType)) { result[i] = pageable; } else if (Sort.class.isAssignableFrom(targetType)) { result[i] = sortToUse; } else { String parameterName = param.getParameterName(); if (!StringUtils.hasText(parameterName)) { throw new IllegalArgumentException(String.format(NAME_NOT_FOUND, ClassUtils.getQualifiedMethodName(method))); } Object value = unwrapSingleElement(rawParameters.get(parameterName)); result[i] = targetType.isInstance(value) ? value : convert(value, param); } } return result; }
/** * Returns the {@link MethodParameter} with the given name or {@literal null} if none found. * * @param name must not be {@literal null} or empty. * @return */ public Optional<MethodParameter> getParameter(String name) { Assert.hasText(name, "Parameter name must not be null!"); return getParameters().stream()// .filter(it -> name.equals(it.getParameterName())).findFirst(); }
/** * Returns all {@link MethodParameter}s annotated with the given annotation type. * * @param annotation must not be {@literal null}. * @return */ public List<MethodParameter> getParametersWith(Class<? extends Annotation> annotation) { Assert.notNull(annotation, "Annotation must not be null!"); return getParameters().stream()// .filter(it -> it.hasParameterAnnotation(annotation))// .collect(Collectors.toList()); }