Align with 5.0.x change #cd3ed7
This commit is contained in:
parent
da98ff72d2
commit
b6da63aeb7
|
@ -184,7 +184,7 @@ class DefaultRenderingResponseBuilder implements RenderingResponse.Builder {
|
|||
|
||||
@Override
|
||||
protected Mono<Void> writeToInternal(ServerWebExchange exchange, Context context) {
|
||||
MediaType responseContentType = exchange.getResponse().getHeaders().getContentType();
|
||||
MediaType contentType = exchange.getResponse().getHeaders().getContentType();
|
||||
Locale locale = LocaleContextHolder.getLocale(exchange.getLocaleContext());
|
||||
Stream<ViewResolver> viewResolverStream = context.viewResolvers().stream();
|
||||
|
||||
|
@ -195,8 +195,9 @@ class DefaultRenderingResponseBuilder implements RenderingResponse.Builder {
|
|||
new IllegalArgumentException("Could not resolve view with name '" + name() + "'")))
|
||||
.flatMap(view -> {
|
||||
List<MediaType> mediaTypes = view.getSupportedMediaTypes();
|
||||
MediaType contentType = (responseContentType == null && !mediaTypes.isEmpty() ? mediaTypes.get(0) : responseContentType);
|
||||
return view.render(model(), contentType, exchange);
|
||||
return view.render(model(),
|
||||
contentType == null && !mediaTypes.isEmpty() ? mediaTypes.get(0) : contentType,
|
||||
exchange);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -144,6 +144,7 @@ public abstract class AbstractMessageReaderArgumentResolver extends HandlerMetho
|
|||
Class<?> resolvedType = bodyType.resolve();
|
||||
ReactiveAdapter adapter = (resolvedType != null ? getAdapterRegistry().getAdapter(resolvedType) : null);
|
||||
ResolvableType elementType = (adapter != null ? bodyType.getGeneric() : bodyType);
|
||||
isBodyRequired = isBodyRequired || (adapter != null && !adapter.supportsEmpty());
|
||||
|
||||
ServerHttpRequest request = exchange.getRequest();
|
||||
ServerHttpResponse response = exchange.getResponse();
|
||||
|
@ -151,17 +152,14 @@ public abstract class AbstractMessageReaderArgumentResolver extends HandlerMetho
|
|||
MediaType contentType = request.getHeaders().getContentType();
|
||||
MediaType mediaType = (contentType != null ? contentType : MediaType.APPLICATION_OCTET_STREAM);
|
||||
|
||||
Supplier<Throwable> missingBodyError = isBodyRequired || (adapter != null && !adapter.supportsEmpty()) ?
|
||||
() -> handleMissingBody(bodyParam) : null;
|
||||
|
||||
for (HttpMessageReader<?> reader : getMessageReaders()) {
|
||||
if (reader.canRead(elementType, mediaType)) {
|
||||
Map<String, Object> readHints = Collections.emptyMap();
|
||||
if (adapter != null && adapter.isMultiValue()) {
|
||||
Flux<?> flux = reader.read(actualType, elementType, request, response, readHints);
|
||||
flux = flux.onErrorResume(ex -> Flux.error(handleReadError(bodyParam, ex)));
|
||||
if (missingBodyError != null) {
|
||||
flux = flux.switchIfEmpty(Flux.error(missingBodyError));
|
||||
if (isBodyRequired) {
|
||||
flux = flux.switchIfEmpty(Flux.error(() -> handleMissingBody(bodyParam)));
|
||||
}
|
||||
Object[] hints = extractValidationHints(bodyParam);
|
||||
if (hints != null) {
|
||||
|
@ -174,8 +172,8 @@ public abstract class AbstractMessageReaderArgumentResolver extends HandlerMetho
|
|||
// Single-value (with or without reactive type wrapper)
|
||||
Mono<?> mono = reader.readMono(actualType, elementType, request, response, readHints);
|
||||
mono = mono.onErrorResume(ex -> Mono.error(handleReadError(bodyParam, ex)));
|
||||
if (missingBodyError != null) {
|
||||
mono = mono.switchIfEmpty(Mono.error(missingBodyError));
|
||||
if (isBodyRequired) {
|
||||
mono = mono.switchIfEmpty(Mono.error(() -> handleMissingBody(bodyParam)));
|
||||
}
|
||||
Object[] hints = extractValidationHints(bodyParam);
|
||||
if (hints != null) {
|
||||
|
@ -195,8 +193,8 @@ public abstract class AbstractMessageReaderArgumentResolver extends HandlerMetho
|
|||
// Body not empty, back to 415..
|
||||
throw new UnsupportedMediaTypeStatusException(mediaType, this.supportedMediaTypes);
|
||||
});
|
||||
if (missingBodyError != null) {
|
||||
body = body.switchIfEmpty(Mono.error(missingBodyError));
|
||||
if (isBodyRequired) {
|
||||
body = body.switchIfEmpty(Mono.error(() -> handleMissingBody(bodyParam)));
|
||||
}
|
||||
return (adapter != null ? Mono.just(adapter.fromPublisher(body)) : Mono.from(body));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue