From 59c2f4c0694a46bee57f57ffe32f44dadd5af6d9 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Tue, 16 Aug 2022 12:02:00 +0200 Subject: [PATCH] Allow null for ResponseEntity.HeadersBuilder::eTag Closes gh-28947 --- .../org/springframework/http/ResponseEntity.java | 16 +++++++++------- .../http/ResponseEntityTests.java | 3 +++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/ResponseEntity.java b/spring-web/src/main/java/org/springframework/http/ResponseEntity.java index e9f4d87d69e1..216760cb8acc 100644 --- a/spring-web/src/main/java/org/springframework/http/ResponseEntity.java +++ b/spring-web/src/main/java/org/springframework/http/ResponseEntity.java @@ -404,7 +404,7 @@ public interface HeadersBuilder> { * @return this builder * @see HttpHeaders#setETag(String) */ - B eTag(String etag); + B eTag(@Nullable String etag); /** * Set the time the resource was last changed, as specified by the @@ -562,12 +562,14 @@ public BodyBuilder contentType(MediaType contentType) { } @Override - public BodyBuilder eTag(String etag) { - if (!etag.startsWith("\"") && !etag.startsWith("W/\"")) { - etag = "\"" + etag; - } - if (!etag.endsWith("\"")) { - etag = etag + "\""; + public BodyBuilder eTag(@Nullable String etag) { + if (etag != null) { + if (!etag.startsWith("\"") && !etag.startsWith("W/\"")) { + etag = "\"" + etag; + } + if (!etag.endsWith("\"")) { + etag = etag + "\""; + } } this.headers.setETag(etag); return this; diff --git a/spring-web/src/test/java/org/springframework/http/ResponseEntityTests.java b/spring-web/src/test/java/org/springframework/http/ResponseEntityTests.java index b922874b17c6..07b5544db57a 100644 --- a/spring-web/src/test/java/org/springframework/http/ResponseEntityTests.java +++ b/spring-web/src/test/java/org/springframework/http/ResponseEntityTests.java @@ -207,6 +207,9 @@ void Etagheader() throws URISyntaxException { responseEntity = ResponseEntity.ok().eTag("W/\"foo\"").build(); assertThat(responseEntity.getHeaders().getETag()).isEqualTo("W/\"foo\""); + + responseEntity = ResponseEntity.ok().eTag(null).build(); + assertThat(responseEntity.getHeaders().getETag()).isNull(); } @Test