From a27f2e994b632a63ca1bbd6f3de5d9b60246ccaa Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Thu, 24 Nov 2022 12:40:25 +0000 Subject: [PATCH] ResponseStatusException sets detail from reason again Closes gh-29567 --- .../web/server/MethodNotAllowedException.java | 3 +-- .../web/server/MissingRequestValueException.java | 2 +- .../web/server/NotAcceptableStatusException.java | 4 ++-- .../springframework/web/server/ResponseStatusException.java | 6 ++++-- .../web/server/UnsatisfiedRequestParameterException.java | 2 +- .../web/server/UnsupportedMediaTypeStatusException.java | 2 +- .../springframework/web/ErrorResponseExceptionTests.java | 2 +- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/server/MethodNotAllowedException.java b/spring-web/src/main/java/org/springframework/web/server/MethodNotAllowedException.java index 244471bcab7b..541171d29391 100644 --- a/spring-web/src/main/java/org/springframework/web/server/MethodNotAllowedException.java +++ b/spring-web/src/main/java/org/springframework/web/server/MethodNotAllowedException.java @@ -56,8 +56,7 @@ public MethodNotAllowedException(String method, @Nullable Collection } this.method = method; this.httpMethods = Collections.unmodifiableSet(new LinkedHashSet<>(supportedMethods)); - getBody().setDetail(this.httpMethods.isEmpty() ? - getReason() : "Supported methods: " + this.httpMethods); + setDetail(this.httpMethods.isEmpty() ? getReason() : "Supported methods: " + this.httpMethods); } diff --git a/spring-web/src/main/java/org/springframework/web/server/MissingRequestValueException.java b/spring-web/src/main/java/org/springframework/web/server/MissingRequestValueException.java index f987fb63abdd..de439da0d373 100644 --- a/spring-web/src/main/java/org/springframework/web/server/MissingRequestValueException.java +++ b/spring-web/src/main/java/org/springframework/web/server/MissingRequestValueException.java @@ -42,7 +42,7 @@ public MissingRequestValueException(String name, Class type, String label, Me this.name = name; this.type = type; this.label = label; - getBody().setDetail(getReason()); + setDetail(getReason()); } diff --git a/spring-web/src/main/java/org/springframework/web/server/NotAcceptableStatusException.java b/spring-web/src/main/java/org/springframework/web/server/NotAcceptableStatusException.java index 51014e1d3b6e..aeb728667f7e 100644 --- a/spring-web/src/main/java/org/springframework/web/server/NotAcceptableStatusException.java +++ b/spring-web/src/main/java/org/springframework/web/server/NotAcceptableStatusException.java @@ -47,7 +47,7 @@ public class NotAcceptableStatusException extends ResponseStatusException { public NotAcceptableStatusException(String reason) { super(HttpStatus.NOT_ACCEPTABLE, reason, null, PARSE_ERROR_DETAIL_CODE, null); this.supportedMediaTypes = Collections.emptyList(); - getBody().setDetail("Could not parse Accept header."); + setDetail("Could not parse Accept header."); } /** @@ -58,7 +58,7 @@ public NotAcceptableStatusException(List mediaTypes) { "Could not find acceptable representation", null, null, new Object[] {mediaTypes}); this.supportedMediaTypes = Collections.unmodifiableList(mediaTypes); - getBody().setDetail("Acceptable representations: " + mediaTypes + "."); + setDetail("Acceptable representations: " + mediaTypes + "."); } diff --git a/spring-web/src/main/java/org/springframework/web/server/ResponseStatusException.java b/spring-web/src/main/java/org/springframework/web/server/ResponseStatusException.java index d72992d22ceb..544c40a4dc22 100644 --- a/spring-web/src/main/java/org/springframework/web/server/ResponseStatusException.java +++ b/spring-web/src/main/java/org/springframework/web/server/ResponseStatusException.java @@ -23,8 +23,9 @@ import org.springframework.web.ErrorResponseException; /** - * Subclass of {@link ErrorResponseException} that accepts a "reason" and maps - * it to the "detail" property of {@link org.springframework.http.ProblemDetail}. + * Subclass of {@link ErrorResponseException} that accepts a "reason", and by + * default maps that to the {@link ErrorResponseException#setDetail(String) "detail"} + * of the {@code ProblemDetail}. * * @author Rossen Stoyanchev * @author Juergen Hoeller @@ -93,6 +94,7 @@ protected ResponseStatusException( super(status, ProblemDetail.forStatus(status), cause, messageDetailCode, messageDetailArguments); this.reason = reason; + setDetail(reason); } diff --git a/spring-web/src/main/java/org/springframework/web/server/UnsatisfiedRequestParameterException.java b/spring-web/src/main/java/org/springframework/web/server/UnsatisfiedRequestParameterException.java index 778c251216e5..21c043afdc20 100644 --- a/spring-web/src/main/java/org/springframework/web/server/UnsatisfiedRequestParameterException.java +++ b/spring-web/src/main/java/org/springframework/web/server/UnsatisfiedRequestParameterException.java @@ -40,7 +40,7 @@ public UnsatisfiedRequestParameterException(List conditions, MultiValueM super(initReason(conditions, params), null, null, null, new Object[] {conditions}); this.conditions = conditions; this.requestParams = params; - getBody().setDetail("Invalid request parameters."); + setDetail("Invalid request parameters."); } private static String initReason(List conditions, MultiValueMap queryParams) { diff --git a/spring-web/src/main/java/org/springframework/web/server/UnsupportedMediaTypeStatusException.java b/spring-web/src/main/java/org/springframework/web/server/UnsupportedMediaTypeStatusException.java index dadf69d39fce..2d194236e638 100644 --- a/spring-web/src/main/java/org/springframework/web/server/UnsupportedMediaTypeStatusException.java +++ b/spring-web/src/main/java/org/springframework/web/server/UnsupportedMediaTypeStatusException.java @@ -62,7 +62,7 @@ public UnsupportedMediaTypeStatusException(@Nullable String reason) { this.supportedMediaTypes = Collections.emptyList(); this.bodyType = null; this.method = null; - getBody().setDetail("Could not parse Content-Type."); + setDetail("Could not parse Content-Type."); } /** diff --git a/spring-web/src/test/java/org/springframework/web/ErrorResponseExceptionTests.java b/spring-web/src/test/java/org/springframework/web/ErrorResponseExceptionTests.java index 428984a439ac..f97e3e5d73ac 100644 --- a/spring-web/src/test/java/org/springframework/web/ErrorResponseExceptionTests.java +++ b/spring-web/src/test/java/org/springframework/web/ErrorResponseExceptionTests.java @@ -316,7 +316,7 @@ void serverErrorException() { ServerErrorException ex = new ServerErrorException("Failure", null); assertStatus(ex, HttpStatus.INTERNAL_SERVER_ERROR); - assertDetail(ex, null); + assertDetail(ex, "Failure"); assertDetailMessageCode(ex, null, new Object[] {ex.getReason()}); assertThat(ex.getHeaders()).isEmpty();