From 842297699db5752001570ff85be85e80d575404c Mon Sep 17 00:00:00 2001 From: dmrachkovskyi Date: Thu, 4 Oct 2018 19:24:16 +0300 Subject: [PATCH] Defer obtaining argument resolver default value Issue: SPR-17338 --- .../AbstractNamedValueArgumentResolver.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java index b13cdfeddab..27b2e375757 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java @@ -205,8 +205,8 @@ public abstract class AbstractNamedValueArgumentResolver extends HandlerMethodAr private Mono getDefaultValue(NamedValueInfo namedValueInfo, MethodParameter parameter, BindingContext bindingContext, Model model, ServerWebExchange exchange) { - Object value = null; - try { + return Mono.fromSupplier(() -> { + Object value = null; if (namedValueInfo.defaultValue != null) { value = resolveStringValue(namedValueInfo.defaultValue); } @@ -216,11 +216,8 @@ public abstract class AbstractNamedValueArgumentResolver extends HandlerMethodAr 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); - } + return value; + }); } /**