diff --git a/spring-web/src/main/java/org/springframework/http/HttpEntity.java b/spring-web/src/main/java/org/springframework/http/HttpEntity.java index fd1f79b30b1..aa114b6899c 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpEntity.java +++ b/spring-web/src/main/java/org/springframework/http/HttpEntity.java @@ -59,9 +59,10 @@ import org.springframework.util.ObjectUtils; public class HttpEntity { /** - * The empty {@code HttpEntity}, with no body or headers. + * An {@code HttpEntity} instance with a {@code null} body and + * {@link HttpHeaders#EMPTY empty headers}. */ - public static final HttpEntity EMPTY = new HttpEntity<>(); + public static final HttpEntity EMPTY = new HttpEntity<>(HttpHeaders.EMPTY); private final HttpHeaders headers; diff --git a/spring-web/src/test/java/org/springframework/http/HttpEntityTests.java b/spring-web/src/test/java/org/springframework/http/HttpEntityTests.java index 808898497cc..cb1f3741d23 100644 --- a/spring-web/src/test/java/org/springframework/http/HttpEntityTests.java +++ b/spring-web/src/test/java/org/springframework/http/HttpEntityTests.java @@ -23,7 +23,10 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; /** + * Unit tests for {@link HttpEntity}. + * * @author Arjen Poutsma + * @author Yanming Zhou */ class HttpEntityTests { @@ -31,6 +34,7 @@ class HttpEntityTests { void noHeaders() { String body = "foo"; HttpEntity entity = new HttpEntity<>(body); + assertThat(entity.getBody()).isSameAs(body); assertThat(entity.getHeaders().isEmpty()).as("isEmpty").isTrue(); } @@ -41,6 +45,7 @@ class HttpEntityTests { headers.setContentType(MediaType.TEXT_PLAIN); String body = "foo"; HttpEntity entity = new HttpEntity<>(body, headers); + assertThat(entity.getBody()).isEqualTo(body); assertThat(entity.getHeaders().getContentType()).isEqualTo(MediaType.TEXT_PLAIN); assertThat(entity.getHeaders().getFirst("Content-Type")).isEqualTo("text/plain"); @@ -52,6 +57,7 @@ class HttpEntityTests { headers.set("Content-Type", "text/plain"); String body = "foo"; HttpEntity entity = new HttpEntity<>(body, headers); + assertThat(entity.getBody()).isEqualTo(body); assertThat(entity.getHeaders().getContentType()).isEqualTo(MediaType.TEXT_PLAIN); assertThat(entity.getHeaders().getFirst("Content-Type")).isEqualTo("text/plain"); @@ -120,4 +126,14 @@ class HttpEntityTests { assertThat(requestEntity2).isEqualTo(requestEntity); } + @Test // gh-34806 + void mutateEmptyInstanceHeaders() { + HttpHeaders headers = new HttpHeaders(HttpEntity.EMPTY.getHeaders()); + headers.add("Authorization", "Bearer some-token"); + + assertThat(HttpEntity.EMPTY.getHeaders()) + .as("Headers of HttpEntity.EMPTY should remain empty") + .isEmpty(); + } + }