Skip to content

Commit db5505d

Browse files
committed
Merge branch '6.2.x'
2 parents a08be36 + 5a0bd9e commit db5505d

File tree

5 files changed

+42
-3
lines changed

5 files changed

+42
-3
lines changed

spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,12 @@ private DateFormat newDateFormat() {
681681

682682
@Override
683683
public void setHeader(String name, @Nullable String value) {
684-
setHeaderValue(name, value);
684+
if (value == null) {
685+
this.headers.remove(name);
686+
}
687+
else {
688+
setHeaderValue(name, value);
689+
}
685690
}
686691

687692
@Override

spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,18 @@ void setHeaderWithNullValue(String headerName) {
8888
assertThat(response.containsHeader(headerName)).isFalse();
8989
}
9090

91+
@ParameterizedTest
92+
@ValueSource(strings = {
93+
CONTENT_TYPE,
94+
CONTENT_LANGUAGE,
95+
"X-Test-Header"
96+
})
97+
void removeHeaderIfNullValue(String headerName) {
98+
response.addHeader(headerName, "test");
99+
response.setHeader(headerName, null);
100+
assertThat(response.containsHeader(headerName)).isFalse();
101+
}
102+
91103
@Test // gh-26493
92104
void setLocaleWithNullValue() {
93105
assertThat(response.getLocale()).isEqualTo(Locale.getDefault());

spring-web/src/main/java/org/springframework/web/util/ContentCachingResponseWrapper.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,13 @@ public boolean containsHeader(String name) {
161161
@Override
162162
public void setHeader(String name, String value) {
163163
if (HttpHeaders.CONTENT_LENGTH.equalsIgnoreCase(name)) {
164-
this.contentLength = toContentLengthInt(Long.parseLong(value));
164+
if (value != null) {
165+
this.contentLength = toContentLengthInt(Long.parseLong(value));
166+
}
167+
else {
168+
this.contentLength = null;
169+
super.setHeader(name, null);
170+
}
165171
}
166172
else {
167173
super.setHeader(name, value);

spring-web/src/test/java/org/springframework/web/filter/ContentCachingResponseWrapperTests.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,17 @@ void setContentLengthAbove2GbViaSetHeader() {
270270
.withMessageContaining(overflow);
271271
}
272272

273+
@Test
274+
void setContentLengthNull() {
275+
MockHttpServletResponse response = new MockHttpServletResponse();
276+
ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response);
277+
responseWrapper.setContentLength(1024);
278+
responseWrapper.setHeader(CONTENT_LENGTH, null);
279+
280+
assertThat(response.getHeaderNames()).doesNotContain(CONTENT_LENGTH);
281+
assertThat(responseWrapper.getHeader(CONTENT_LENGTH)).isNull();
282+
}
283+
273284

274285
private void assertHeader(HttpServletResponse response, String header, int value) {
275286
assertHeader(response, header, Integer.toString(value));

spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockHttpServletResponse.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,12 @@ private DateFormat newDateFormat() {
681681

682682
@Override
683683
public void setHeader(String name, @Nullable String value) {
684-
setHeaderValue(name, value);
684+
if (value == null) {
685+
this.headers.remove(name);
686+
}
687+
else {
688+
setHeaderValue(name, value);
689+
}
685690
}
686691

687692
@Override

0 commit comments

Comments
 (0)