diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java index 25032db6a2d..d7f60f936b3 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java @@ -100,9 +100,6 @@ public class MockHttpServletRequest implements HttpServletRequest { private static final TimeZone GMT = TimeZone.getTimeZone("GMT"); - private static final BufferedReader EMPTY_BUFFERED_READER = - new BufferedReader(new StringReader("")); - /** * Date formats as specified in the HTTP RFC. * @see Section 7.1.1.1 of RFC 7231 @@ -736,7 +733,7 @@ public class MockHttpServletRequest implements HttpServletRequest { this.reader = new BufferedReader(sourceReader); } else { - this.reader = EMPTY_BUFFERED_READER; + this.reader = new BufferedReader(new StringReader("")); } return this.reader; } diff --git a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java index 9aec6036fbd..b999557a898 100644 --- a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java +++ b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java @@ -93,6 +93,17 @@ class MockHttpServletRequestTests { secondRequest.getInputStream().close(); } + @Test // gh-32820 + void readEmptyReaderWorksAcrossRequests() throws IOException { + MockHttpServletRequest firstRequest = new MockHttpServletRequest(); + firstRequest.getReader().read(new char[256]); + firstRequest.getReader().close(); + + MockHttpServletRequest secondRequest = new MockHttpServletRequest(); + secondRequest.getReader().read(new char[256]); + secondRequest.getReader().close(); + } + @Test void setContentAndGetReader() throws IOException { byte[] bytes = "body".getBytes(Charset.defaultCharset());