Browse Source

Ignore null Locale in MockHttpServletResponse

Prior to this commit, calls to setLocale() MockHttpServletResponse
would result in a NullPointerException if the supplied Locale was null.

Although the Javadoc for setLocale(Locale) and addHeader(String, String)
in javax.servlet.ServletResponse does not specify how a null
Locale should be handled, both Tomcat and Jetty simply ignore a null
value.

This commit therefore updates MockHttpServletResponse to silently
ignore a null Locale passed to setLocale().

Closes gh-26493
pull/26504/head
Sam Brannen 5 years ago
parent
commit
c19b2851f1
  1. 3
      spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java
  2. 7
      spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java
  3. 3
      spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockHttpServletResponse.java

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

@ -344,6 +344,9 @@ public class MockHttpServletResponse implements HttpServletResponse { @@ -344,6 +344,9 @@ public class MockHttpServletResponse implements HttpServletResponse {
@Override
public void setLocale(Locale locale) {
if (locale == null) {
return;
}
this.locale = locale;
doAddHeaderValue(HttpHeaders.CONTENT_LANGUAGE, locale.toLanguageTag(), true);
}

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

@ -85,6 +85,13 @@ class MockHttpServletResponseTests { @@ -85,6 +85,13 @@ class MockHttpServletResponseTests {
assertThat(response.containsHeader(headerName)).isFalse();
}
@Test // gh-26493
void setLocaleWithNullValue() {
assertThat(response.getLocale()).isEqualTo(Locale.getDefault());
response.setLocale(null);
assertThat(response.getLocale()).isEqualTo(Locale.getDefault());
}
@Test
void setContentType() {
String contentType = "test/plain";

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

@ -344,6 +344,9 @@ public class MockHttpServletResponse implements HttpServletResponse { @@ -344,6 +344,9 @@ public class MockHttpServletResponse implements HttpServletResponse {
@Override
public void setLocale(Locale locale) {
if (locale == null) {
return;
}
this.locale = locale;
doAddHeaderValue(HttpHeaders.CONTENT_LANGUAGE, locale.toLanguageTag(), true);
}

Loading…
Cancel
Save