diff --git a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java index ff1e9b0cbd..6a6f9db9db 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -385,7 +385,7 @@ public class HttpHeaders implements MultiValueMap, Serializable * An empty {@code HttpHeaders} instance (immutable). * @since 5.0 */ - public static final HttpHeaders EMPTY = new ReadOnlyHttpHeaders(new HttpHeaders(new LinkedMultiValueMap<>(0))); + public static final HttpHeaders EMPTY = new ReadOnlyHttpHeaders(new LinkedMultiValueMap<>()); /** * Pattern matching ETag multiple field values in headers such as "If-Match", "If-None-Match". @@ -1769,17 +1769,21 @@ public class HttpHeaders implements MultiValueMap, Serializable /** - * Apply a read-only {@code HttpHeaders} wrapper around the given headers. + * Apply a read-only {@code HttpHeaders} wrapper around the given headers, + * if necessary. + * @param headers the headers to expose + * @return a read-only variant of the headers, or the original headers as-is */ - public static HttpHeaders readOnlyHttpHeaders(MultiValueMap headers) { + public static HttpHeaders readOnlyHttpHeaders(HttpHeaders headers) { Assert.notNull(headers, "HttpHeaders must not be null"); - return (headers instanceof ReadOnlyHttpHeaders ? - (HttpHeaders) headers : new ReadOnlyHttpHeaders(headers)); + return (headers instanceof ReadOnlyHttpHeaders ? headers : new ReadOnlyHttpHeaders(headers.headers)); } /** * Remove any read-only wrapper that may have been previously applied around - * the given headers via {@link #readOnlyHttpHeaders(MultiValueMap)}. + * the given headers via {@link #readOnlyHttpHeaders(HttpHeaders)}. + * @param headers the headers to expose + * @return a writable variant of the headers, or the original headers as-is * @since 5.1.1 */ public static HttpHeaders writableHttpHeaders(HttpHeaders headers) {