Browse Source

Merge branch '6.2.x'

pull/34468/head
Brian Clozel 11 months ago
parent
commit
db5505d55a
  1. 7
      spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java
  2. 12
      spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java
  3. 8
      spring-web/src/main/java/org/springframework/web/util/ContentCachingResponseWrapper.java
  4. 11
      spring-web/src/test/java/org/springframework/web/filter/ContentCachingResponseWrapperTests.java
  5. 7
      spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockHttpServletResponse.java

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

@ -681,7 +681,12 @@ public class MockHttpServletResponse implements HttpServletResponse { @@ -681,7 +681,12 @@ public class MockHttpServletResponse implements HttpServletResponse {
@Override
public void setHeader(String name, @Nullable String value) {
setHeaderValue(name, value);
if (value == null) {
this.headers.remove(name);
}
else {
setHeaderValue(name, value);
}
}
@Override

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

@ -88,6 +88,18 @@ class MockHttpServletResponseTests { @@ -88,6 +88,18 @@ class MockHttpServletResponseTests {
assertThat(response.containsHeader(headerName)).isFalse();
}
@ParameterizedTest
@ValueSource(strings = {
CONTENT_TYPE,
CONTENT_LANGUAGE,
"X-Test-Header"
})
void removeHeaderIfNullValue(String headerName) {
response.addHeader(headerName, "test");
response.setHeader(headerName, null);
assertThat(response.containsHeader(headerName)).isFalse();
}
@Test // gh-26493
void setLocaleWithNullValue() {
assertThat(response.getLocale()).isEqualTo(Locale.getDefault());

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

@ -161,7 +161,13 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper { @@ -161,7 +161,13 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
@Override
public void setHeader(String name, String value) {
if (HttpHeaders.CONTENT_LENGTH.equalsIgnoreCase(name)) {
this.contentLength = toContentLengthInt(Long.parseLong(value));
if (value != null) {
this.contentLength = toContentLengthInt(Long.parseLong(value));
}
else {
this.contentLength = null;
super.setHeader(name, null);
}
}
else {
super.setHeader(name, value);

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

@ -270,6 +270,17 @@ class ContentCachingResponseWrapperTests { @@ -270,6 +270,17 @@ class ContentCachingResponseWrapperTests {
.withMessageContaining(overflow);
}
@Test
void setContentLengthNull() {
MockHttpServletResponse response = new MockHttpServletResponse();
ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response);
responseWrapper.setContentLength(1024);
responseWrapper.setHeader(CONTENT_LENGTH, null);
assertThat(response.getHeaderNames()).doesNotContain(CONTENT_LENGTH);
assertThat(responseWrapper.getHeader(CONTENT_LENGTH)).isNull();
}
private void assertHeader(HttpServletResponse response, String header, int value) {
assertHeader(response, header, Integer.toString(value));

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

@ -681,7 +681,12 @@ public class MockHttpServletResponse implements HttpServletResponse { @@ -681,7 +681,12 @@ public class MockHttpServletResponse implements HttpServletResponse {
@Override
public void setHeader(String name, @Nullable String value) {
setHeaderValue(name, value);
if (value == null) {
this.headers.remove(name);
}
else {
setHeaderValue(name, value);
}
}
@Override

Loading…
Cancel
Save