From 983bce125f3e7b4e0be809cc60ae372c0083d441 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 79565cce4f1..af31694795d 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 @@ -206,8 +206,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); } @@ -217,11 +217,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; + }); } /**