Skip to content

Commit a899e06

Browse files
committed
RequestResponseBodyMethodProcessor decorates ServletInputStream as well
Issue: SPR-13014
1 parent 89694b0 commit a899e06

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessor.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
import java.io.PushbackInputStream;
2222
import java.lang.reflect.Type;
2323
import java.util.List;
24+
import javax.servlet.ServletInputStream;
2425
import javax.servlet.http.HttpServletRequest;
26+
import javax.servlet.http.HttpServletRequestWrapper;
2527

2628
import org.springframework.core.Conventions;
2729
import org.springframework.core.MethodParameter;
@@ -137,7 +139,23 @@ else if (inputStream.markSupported()) {
137139
else {
138140
pushbackInputStream.unread(b);
139141
}
140-
inputMessage = new ServletServerHttpRequest(servletRequest) {
142+
HttpServletRequest wrappedRequest = new HttpServletRequestWrapper(servletRequest) {
143+
@Override
144+
public ServletInputStream getInputStream() throws IOException {
145+
return new ServletInputStream() {
146+
@Override
147+
public int read() throws IOException {
148+
return pushbackInputStream.read();
149+
}
150+
@Override
151+
public void close() throws IOException {
152+
super.close();
153+
pushbackInputStream.close();
154+
}
155+
};
156+
}
157+
};
158+
inputMessage = new ServletServerHttpRequest(wrappedRequest) {
141159
@Override
142160
public InputStream getBody() {
143161
// Form POST should not get here

0 commit comments

Comments
 (0)