/** * Invoked when a named value is required, but * {@link #resolveName(String, MethodParameter, ServerWebExchange)} returned * {@code null} and there is no default value. Subclasses typically throw an * exception in this case. * @param name the name for the value * @param parameter the method parameter * @param exchange the current exchange */ @SuppressWarnings("UnusedParameters") protected void handleMissingValue(String name, MethodParameter parameter, ServerWebExchange exchange) { handleMissingValue(name, parameter); }
/** * Resolve the default value, if any. */ private Mono<Object> getDefaultValue(NamedValueInfo namedValueInfo, MethodParameter parameter, BindingContext bindingContext, Model model, ServerWebExchange exchange) { return Mono.fromSupplier(() -> { Object value = null; if (namedValueInfo.defaultValue != null) { value = resolveStringValue(namedValueInfo.defaultValue); } else if (namedValueInfo.required && !parameter.isOptional()) { handleMissingValue(namedValueInfo.name, parameter, exchange); } value = handleNullValue(namedValueInfo.name, value, parameter.getNestedParameterType()); value = applyConversion(value, namedValueInfo, parameter, bindingContext, exchange); handleResolvedValue(value, namedValueInfo.name, parameter, model, exchange); return value; }); }
/** * Invoked when a named value is required, but * {@link #resolveName(String, MethodParameter, ServerWebExchange)} returned * {@code null} and there is no default value. Subclasses typically throw an * exception in this case. * @param name the name for the value * @param parameter the method parameter * @param exchange the current exchange */ @SuppressWarnings("UnusedParameters") protected void handleMissingValue(String name, MethodParameter parameter, ServerWebExchange exchange) { handleMissingValue(name, parameter); }
private Mono<Object> getDefaultValue(NamedValueInfo namedValueInfo, MethodParameter parameter, BindingContext bindingContext, Model model, ServerWebExchange exchange) { Object value = null; try { if (namedValueInfo.defaultValue != null) { value = resolveStringValue(namedValueInfo.defaultValue); } else if (namedValueInfo.required && !parameter.isOptional()) { handleMissingValue(namedValueInfo.name, parameter, exchange); } value = handleNullValue(namedValueInfo.name, value, parameter.getNestedParameterType()); value = applyConversion(value, namedValueInfo, parameter, bindingContext, exchange); handleResolvedValue(value, namedValueInfo.name, parameter, model, exchange); return Mono.justOrEmpty(value); } catch (Throwable ex) { return Mono.error(ex); } }