Support for custom status in ResponseStatusException
Closes gh-20336
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,8 +17,6 @@
|
||||
package org.springframework.web.reactive.handler;
|
||||
|
||||
import org.springframework.core.annotation.AnnotatedElementUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.server.handler.ResponseStatusExceptionHandler;
|
||||
|
||||
@@ -39,13 +37,12 @@ import org.springframework.web.server.handler.ResponseStatusExceptionHandler;
|
||||
public class WebFluxResponseStatusExceptionHandler extends ResponseStatusExceptionHandler {
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected HttpStatus determineStatus(Throwable ex) {
|
||||
HttpStatus status = super.determineStatus(ex);
|
||||
if (status == null) {
|
||||
protected int determineRawStatusCode(Throwable ex) {
|
||||
int status = super.determineRawStatusCode(ex);
|
||||
if (status == -1) {
|
||||
ResponseStatus ann = AnnotatedElementUtils.findMergedAnnotation(ex.getClass(), ResponseStatus.class);
|
||||
if (ann != null) {
|
||||
status = ann.code();
|
||||
status = ann.code().value();
|
||||
}
|
||||
}
|
||||
return status;
|
||||
|
||||
@@ -275,7 +275,7 @@ public class ResourceWebHandlerTests {
|
||||
StepVerifier.create(handler.handle(exchange))
|
||||
.expectErrorSatisfies(err -> {
|
||||
assertThat(err).isInstanceOf(ResponseStatusException.class);
|
||||
assertThat(((ResponseStatusException) err).getStatus()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(((ResponseStatusException) err).getRawStatusCode()).isEqualTo(404);
|
||||
}).verify(TIMEOUT);
|
||||
}
|
||||
|
||||
@@ -321,7 +321,7 @@ public class ResourceWebHandlerTests {
|
||||
StepVerifier.create(this.handler.handle(exchange))
|
||||
.expectErrorSatisfies(err -> {
|
||||
assertThat(err).isInstanceOf(ResponseStatusException.class);
|
||||
assertThat(((ResponseStatusException) err).getStatus()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(((ResponseStatusException) err).getRawStatusCode()).isEqualTo(404);
|
||||
})
|
||||
.verify(TIMEOUT);
|
||||
if (!location.createRelative(requestPath).exists() && !requestPath.contains(":")) {
|
||||
@@ -416,7 +416,7 @@ public class ResourceWebHandlerTests {
|
||||
StepVerifier.create(this.handler.handle(exchange))
|
||||
.expectErrorSatisfies(err -> {
|
||||
assertThat(err).isInstanceOf(ResponseStatusException.class);
|
||||
assertThat(((ResponseStatusException) err).getStatus()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(((ResponseStatusException) err).getRawStatusCode()).isEqualTo(404);
|
||||
}).verify(TIMEOUT);
|
||||
}
|
||||
|
||||
@@ -427,7 +427,7 @@ public class ResourceWebHandlerTests {
|
||||
StepVerifier.create(this.handler.handle(exchange))
|
||||
.expectErrorSatisfies(err -> {
|
||||
assertThat(err).isInstanceOf(ResponseStatusException.class);
|
||||
assertThat(((ResponseStatusException) err).getStatus()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(((ResponseStatusException) err).getRawStatusCode()).isEqualTo(404);
|
||||
}).verify(TIMEOUT);
|
||||
}
|
||||
|
||||
@@ -438,7 +438,7 @@ public class ResourceWebHandlerTests {
|
||||
StepVerifier.create(this.handler.handle(exchange))
|
||||
.expectErrorSatisfies(err -> {
|
||||
assertThat(err).isInstanceOf(ResponseStatusException.class);
|
||||
assertThat(((ResponseStatusException) err).getStatus()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(((ResponseStatusException) err).getRawStatusCode()).isEqualTo(404);
|
||||
}).verify(TIMEOUT);
|
||||
}
|
||||
|
||||
@@ -473,7 +473,7 @@ public class ResourceWebHandlerTests {
|
||||
StepVerifier.create(mono)
|
||||
.expectErrorSatisfies(err -> {
|
||||
assertThat(err).isInstanceOf(ResponseStatusException.class);
|
||||
assertThat(((ResponseStatusException) err).getStatus()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(((ResponseStatusException) err).getRawStatusCode()).isEqualTo(404);
|
||||
}).verify(TIMEOUT);
|
||||
|
||||
// SPR-17475
|
||||
|
||||
Reference in New Issue
Block a user