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 9a6c18f63c..0880440d02 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 @@ -738,7 +735,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 033bf360cf..963846482b 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());