From 6329ccb3272d21033937c9394a698162f8e1b778 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Wed, 12 Jul 2017 18:13:24 +0200 Subject: [PATCH] Read-Only HttpHeaders only created when necessary This commit introduces a boolean `readOnly` flag in `HttpHeaders`, which is used to check if creating a new `HttpHeaders` instance is necessary in `readOnlyHttpHeaders`. --- .../src/main/java/org/springframework/http/HttpHeaders.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 0a005081ac..4a060b17aa 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -397,6 +397,8 @@ public class HttpHeaders implements MultiValueMap, Serializable private final Map> headers; + private final boolean readOnly; + /** * Constructs a new, empty instance of the {@code HttpHeaders} object. @@ -422,6 +424,7 @@ public class HttpHeaders implements MultiValueMap, Serializable else { this.headers = headers; } + this.readOnly = readOnly; } @@ -1542,7 +1545,7 @@ public class HttpHeaders implements MultiValueMap, Serializable * Return a {@code HttpHeaders} object that can only be read, not written to. */ public static HttpHeaders readOnlyHttpHeaders(HttpHeaders headers) { - return new HttpHeaders(headers, true); + return headers.readOnly ? headers : new HttpHeaders(headers, true); } }