Skip to content

Commit 3dba915

Browse files
committed
Improve null-safety of module/spring-boot-webflux
See gh-46926
1 parent 89c64ef commit 3dba915

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

module/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/actuate/endpoint/web/AbstractWebFluxEndpointHandlerMapping.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -433,8 +433,8 @@ private Mono<ResponseEntity<Object>> handleResult(@Nullable Publisher<?> result,
433433
if (result instanceof Flux) {
434434
result = ((Flux<?>) result).collectList();
435435
}
436-
return Mono.from(result)
437-
.map(this::toResponseEntity)
436+
Mono<?> mono = (result != null) ? Mono.from(result) : Mono.empty();
437+
return mono.map(this::toResponseEntity)
438438
.onErrorMap(InvalidEndpointRequestException.class,
439439
(ex) -> new ResponseStatusException(HttpStatus.BAD_REQUEST, ex.getReason()))
440440
.defaultIfEmpty(new ResponseEntity<>(

module/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/autoconfigure/error/DefaultErrorWebExceptionHandler.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,15 @@ protected Mono<ServerResponse> renderErrorView(ServerRequest request) {
130130
return Flux.just(getData(status).toArray(new String[] {}))
131131
.flatMap((viewName) -> renderErrorView(viewName, responseBody, errorAttributes))
132132
.switchIfEmpty(this.errorProperties.getWhitelabel().isEnabled()
133-
? renderDefaultErrorView(responseBody, errorAttributes) : Mono.error(getError(request)))
133+
? renderDefaultErrorView(responseBody, errorAttributes) : getErrorMono(request))
134134
.next();
135135
}
136136

137+
private Mono<ServerResponse> getErrorMono(ServerRequest request) {
138+
Throwable error = getError(request);
139+
return (error != null) ? Mono.error(error) : Mono.empty();
140+
}
141+
137142
private List<String> getData(int errorStatus) {
138143
List<String> data = new ArrayList<>();
139144
data.add("error/" + errorStatus);

0 commit comments

Comments
 (0)