Browse Source

MockHttpServletRequest returns empty BufferedReader in case of no content

Issue: SPR-15215
pull/1312/head
Juergen Hoeller 9 years ago
parent
commit
0da964f0a7
  1. 9
      spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java
  2. 11
      spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java

9
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.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.security.Principal; import java.security.Principal;
import java.text.ParseException; import java.text.ParseException;
@ -125,6 +126,9 @@ public class MockHttpServletRequest implements HttpServletRequest {
private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM =
new DelegatingServletInputStream(StreamUtils.emptyInput()); new DelegatingServletInputStream(StreamUtils.emptyInput());
private static final BufferedReader EMPTY_BUFFERED_READER =
new BufferedReader(new StringReader(""));
/** /**
* Date formats as specified in the HTTP RFC * Date formats as specified in the HTTP RFC
* @see <a href="https://tools.ietf.org/html/rfc7231#section-7.1.1.1">Section 7.1.1.1 of RFC 7231</a> * @see <a href="https://tools.ietf.org/html/rfc7231#section-7.1.1.1">Section 7.1.1.1 of RFC 7231</a>
@ -659,11 +663,12 @@ public class MockHttpServletRequest implements HttpServletRequest {
if (this.content != null) { if (this.content != null) {
InputStream sourceStream = new ByteArrayInputStream(this.content); InputStream sourceStream = new ByteArrayInputStream(this.content);
Reader sourceReader = (this.characterEncoding != null) ? 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); return new BufferedReader(sourceReader);
} }
else { else {
return null; return EMPTY_BUFFERED_READER;
} }
} }

11
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.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.security.Principal; import java.security.Principal;
import java.text.ParseException; import java.text.ParseException;
@ -125,6 +126,9 @@ public class MockHttpServletRequest implements HttpServletRequest {
private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM =
new DelegatingServletInputStream(StreamUtils.emptyInput()); new DelegatingServletInputStream(StreamUtils.emptyInput());
private static final BufferedReader EMPTY_BUFFERED_READER =
new BufferedReader(new StringReader(""));
/** /**
* Date formats as specified in the HTTP RFC * Date formats as specified in the HTTP RFC
* @see <a href="https://tools.ietf.org/html/rfc7231#section-7.1.1.1">Section 7.1.1.1 of RFC 7231</a> * @see <a href="https://tools.ietf.org/html/rfc7231#section-7.1.1.1">Section 7.1.1.1 of RFC 7231</a>
@ -659,11 +663,12 @@ public class MockHttpServletRequest implements HttpServletRequest {
if (this.content != null) { if (this.content != null) {
InputStream sourceStream = new ByteArrayInputStream(this.content); InputStream sourceStream = new ByteArrayInputStream(this.content);
Reader sourceReader = (this.characterEncoding != null) ? 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); return new BufferedReader(sourceReader);
} }
else { else {
return null; return EMPTY_BUFFERED_READER;
} }
} }
@ -940,7 +945,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
this.headers.put(name, header); this.headers.put(name, header);
} }
if (value instanceof Collection) { if (value instanceof Collection) {
header.addValues((Collection) value); header.addValues((Collection<?>) value);
} }
else if (value.getClass().isArray()) { else if (value.getClass().isArray()) {
header.addValueArray(value); header.addValueArray(value);

Loading…
Cancel
Save