@Override public Optional<Value> resolve(JavaMethodParameter parameter) { for (ParameterResolver parameterResolver : list) { Optional<Value> resolve = parameterResolver.resolve(parameter); if (resolve.isPresent()) return resolve; } return Optional.absent(); } }
@Override public ResolvedParameters resolve(ResolvedParameters parameters, InputParameters inputParameters) { Collection<JavaMethodParameter> unresolvedParameters = parameters.unresolvedParameters(); for (JavaMethodParameter unresolvedParameter : unresolvedParameters) { Optional<ParameterResolver.Value> resolved = factory .create(inputParameters) .resolve(unresolvedParameter); if (resolved.isPresent()) parameters.resolve(unresolvedParameter, resolved.get().value()); } return parameters; } }
@Nullable @Override public Object apply(@Nullable SpecificationAndValue input) { return input.value.get().value(); } };
public ResolvedParameters resolve(JavaMethodParameter parameter, Object value) { parameters.get(parameter.position()).value = Optional.of(new ParameterResolver.Value(value)); return this; }
@Override public Optional<Executable> resolve(String name, InputParameters parameters) { Collection<Function> functions = repository.retrieve(name, parameters); for (Function function : functions) { ResolvedParameters resolvedParameters = new ResolvedParameters(function.method()); resolvedParameters = parametersResolver.resolve(resolvedParameters, parameters); if (resolvedParameters.isFullyResolved()) return Optional.of(new Executable(function, resolvedParameters.values())); } return absent(); } }
@Override public Optional<Value> resolve(JavaMethodParameter parameter) { if (parameter.type().isAssignableFrom(HttpServletRequest.class)) return Optional.of(new Value(LocalThreadHolder.getServletRequest())); return Optional.absent(); } }
Array.set(newInstance, i, args.get(i)); return Optional.of(new Value(newInstance)); } else { int index = parameter.annotationIndex(Parameter.class); Object value = input.valueAt(index); if (value == null) return of(new Value(null)); if (ClassUtils.isAssignable(value.getClass(), parameter.type())) { return of(new Value(value)); } else { Optional convert = converter.convert(value, parameter.type()); if (convert.isPresent()) return of(new Value(convert.get()));