From d4010573af2ca04adb63cfe554cacb2d52683d6f Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 2 Feb 2017 19:55:42 +0100 Subject: [PATCH] MockHttpServletRequest returns empty BufferedReader in case of no content Issue: SPR-15215 (cherry picked from commit 0da964f) --- .../mock/web/MockHttpServletRequest.java | 11 ++++++++--- .../mock/web/test/MockHttpServletRequest.java | 11 ++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) 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 7d2ec9582b..732e453f28 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 @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.security.Principal; import java.text.ParseException; @@ -124,6 +125,9 @@ public class MockHttpServletRequest implements HttpServletRequest { private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = new DelegatingServletInputStream(StreamUtils.emptyInput()); + 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 @@ -617,11 +621,12 @@ public class MockHttpServletRequest implements HttpServletRequest { if (this.content != null) { InputStream sourceStream = new ByteArrayInputStream(this.content); Reader sourceReader = (this.characterEncoding != null) ? - new InputStreamReader(sourceStream, this.characterEncoding) : new InputStreamReader(sourceStream); + new InputStreamReader(sourceStream, this.characterEncoding) : + new InputStreamReader(sourceStream); return new BufferedReader(sourceReader); } else { - return null; + return EMPTY_BUFFERED_READER; } } @@ -900,7 +905,7 @@ public class MockHttpServletRequest implements HttpServletRequest { this.headers.put(name, header); } if (value instanceof Collection) { - header.addValues((Collection) value); + header.addValues((Collection) value); } else if (value.getClass().isArray()) { header.addValueArray(value); diff --git a/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java b/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java index 83657edf19..eee12b5540 100644 --- a/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java +++ b/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.security.Principal; import java.text.ParseException; @@ -124,6 +125,9 @@ public class MockHttpServletRequest implements HttpServletRequest { private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = new DelegatingServletInputStream(StreamUtils.emptyInput()); + 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 @@ -617,11 +621,12 @@ public class MockHttpServletRequest implements HttpServletRequest { if (this.content != null) { InputStream sourceStream = new ByteArrayInputStream(this.content); Reader sourceReader = (this.characterEncoding != null) ? - new InputStreamReader(sourceStream, this.characterEncoding) : new InputStreamReader(sourceStream); + new InputStreamReader(sourceStream, this.characterEncoding) : + new InputStreamReader(sourceStream); return new BufferedReader(sourceReader); } else { - return null; + return EMPTY_BUFFERED_READER; } } @@ -900,7 +905,7 @@ public class MockHttpServletRequest implements HttpServletRequest { this.headers.put(name, header); } if (value instanceof Collection) { - header.addValues((Collection) value); + header.addValues((Collection) value); } else if (value.getClass().isArray()) { header.addValueArray(value);