diff --git a/spring-web/src/main/java/org/springframework/web/ErrorResponse.java b/spring-web/src/main/java/org/springframework/web/ErrorResponse.java index 33990ddbcb..0b3c200292 100644 --- a/spring-web/src/main/java/org/springframework/web/ErrorResponse.java +++ b/spring-web/src/main/java/org/springframework/web/ErrorResponse.java @@ -26,7 +26,6 @@ import org.springframework.http.HttpStatusCode; import org.springframework.http.ProblemDetail; import org.springframework.lang.Nullable; - /** * Representation of a complete RFC 7807 error response including status, * headers, and an RFC 7807 formatted {@link ProblemDetail} body. Allows any @@ -89,7 +88,11 @@ public interface ErrorResponse { /** * Variant of {@link #getDetailMessageArguments()} that uses the given * {@link MessageSource} for resolving the message argument values. - * This is useful for example to message codes from validation errors. + *
This is useful for example to expand message codes from validation errors. + *
The default implementation delegates to {@link #getDetailMessageArguments()}, + * ignoring the supplied {@code MessageSource} and {@code Locale}. + * @param messageSource the {@code MessageSource} to use for the lookup + * @param locale the {@code Locale} to use for the lookup */ @Nullable default Object[] getDetailMessageArguments(MessageSource messageSource, Locale locale) { @@ -97,10 +100,10 @@ public interface ErrorResponse { } /** - * Return a code to use to resolve the problem "detail" for this exception + * Return a code to use to resolve the problem "title" for this exception * through a {@link MessageSource}. *
By default this is initialized via
- * {@link #getDefaultDetailMessageCode(Class, String)}.
+ * {@link #getDefaultTitleMessageCode(Class, String)}.
*/
default String getTitleMessageCode() {
return getDefaultTitleMessageCode(getClass());
@@ -108,8 +111,8 @@ public interface ErrorResponse {
/**
* Resolve the {@link #getDetailMessageCode() detailMessageCode} and the
- * {@link #getTitleMessageCode() titleCode} through the given
- * {@link MessageSource}, and if found, update the "detail" and "title!"
+ * {@link #getTitleMessageCode() titleMessageCode} through the given
+ * {@link MessageSource}, and if found, update the "detail" and "title"
* fields respectively.
* @param messageSource the {@code MessageSource} to use for the lookup
* @param locale the {@code Locale} to use for the lookup
@@ -134,8 +137,9 @@ public interface ErrorResponse {
* Build a message code for the "detail" field, for the given exception type.
* @param exceptionType the exception type associated with the problem
* @param suffix an optional suffix, e.g. for exceptions that may have multiple
- * error message with different arguments.
- * @return {@code "problemDetail."} followed by the full {@link Class#getName() class name}
+ * error message with different arguments
+ * @return {@code "problemDetail."} followed by the fully qualified
+ * {@link Class#getName() class name} and an optional suffix
*/
static String getDefaultDetailMessageCode(Class> exceptionType, @Nullable String suffix) {
return "problemDetail." + exceptionType.getName() + (suffix != null ? "." + suffix : "");
@@ -144,13 +148,13 @@ public interface ErrorResponse {
/**
* Build a message code for the "title" field, for the given exception type.
* @param exceptionType the exception type associated with the problem
- * @return {@code "problemDetail.title."} followed by the full {@link Class#getName() class name}
+ * @return {@code "problemDetail.title."} followed by the fully qualified
+ * {@link Class#getName() class name}
*/
static String getDefaultTitleMessageCode(Class> exceptionType) {
return "problemDetail.title." + exceptionType.getName();
}
-
/**
* Static factory method to build an instance via
* {@link #builder(Throwable, HttpStatusCode, String)}.
@@ -163,9 +167,9 @@ public interface ErrorResponse {
* Return a builder to create an {@code ErrorResponse} instance.
* @param ex the underlying exception that lead to the error response;
* mainly to derive default values for the
- * {@link #getDetailMessageCode() detail message code} and for the
- * {@link #getTitleMessageCode() title message code}.
- * @param statusCode the status code to set the response to
+ * {@linkplain #getDetailMessageCode() detail message code} and for the
+ * {@linkplain #getTitleMessageCode() title message code}.
+ * @param statusCode the status code to set in the response
* @param detail the default value for the
* {@link ProblemDetail#setDetail(String) detail} field, unless overridden
* by a {@link MessageSource} lookup with {@link #getDetailMessageCode()}
@@ -200,14 +204,14 @@ public interface ErrorResponse {
Builder headers(Consumer By default, this is set to
* {@link ErrorResponse#getDefaultDetailMessageCode(Class, String)} with the
* associated Exception type.
@@ -227,20 +231,20 @@ public interface ErrorResponse {
Builder detailMessageArguments(Object... messageArguments);
/**
- * Set the underlying {@link ProblemDetail#setType(URI)} field.
+ * Set the underlying {@link ProblemDetail#setType(URI) type} field.
* @return the same builder instance
*/
Builder type(URI type);
/**
- * Set the underlying {@link ProblemDetail#setTitle(String)} field.
+ * Set the underlying {@link ProblemDetail#setTitle(String) title} field.
* @return the same builder instance
*/
Builder title(@Nullable String title);
/**
* Customize the {@link MessageSource} code for looking up the value for
- * the underlying {@link ProblemDetail#setTitle(String)}.
+ * the underlying {@link ProblemDetail#setTitle(String) title}.
* By default, set via
* {@link ErrorResponse#getDefaultTitleMessageCode(Class)} with the
* associated Exception type.
@@ -251,7 +255,7 @@ public interface ErrorResponse {
Builder titleMessageCode(String messageCode);
/**
- * Set the underlying {@link ProblemDetail#setInstance(URI)} field.
+ * Set the underlying {@link ProblemDetail#setInstance(URI) instance} field.
* @return the same builder instance
*/
Builder instance(@Nullable URI instance);
diff --git a/spring-web/src/main/java/org/springframework/web/ErrorResponseException.java b/spring-web/src/main/java/org/springframework/web/ErrorResponseException.java
index 96f35b4b7b..6e6a8165dd 100644
--- a/spring-web/src/main/java/org/springframework/web/ErrorResponseException.java
+++ b/spring-web/src/main/java/org/springframework/web/ErrorResponseException.java
@@ -53,14 +53,14 @@ public class ErrorResponseException extends NestedRuntimeException implements Er
/**
- * Constructor with a {@link HttpStatusCode}.
+ * Constructor with an {@link HttpStatusCode}.
*/
public ErrorResponseException(HttpStatusCode status) {
this(status, null);
}
/**
- * Constructor with a {@link HttpStatusCode} and an optional cause.
+ * Constructor with an {@link HttpStatusCode} and an optional cause.
*/
public ErrorResponseException(HttpStatusCode status, @Nullable Throwable cause) {
this(status, ProblemDetail.forStatus(status), cause);