Browse Source

RequestResponseBodyMethodProcessor decorates ServletInputStream as well

Issue: SPR-13014
pull/803/head
Juergen Hoeller 11 years ago
parent
commit
a899e066f2
  1. 20
      spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessor.java

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

@ -21,7 +21,9 @@ import java.io.InputStream; @@ -21,7 +21,9 @@ import java.io.InputStream;
import java.io.PushbackInputStream;
import java.lang.reflect.Type;
import java.util.List;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.springframework.core.Conventions;
import org.springframework.core.MethodParameter;
@ -137,7 +139,23 @@ public class RequestResponseBodyMethodProcessor extends AbstractMessageConverter @@ -137,7 +139,23 @@ public class RequestResponseBodyMethodProcessor extends AbstractMessageConverter
else {
pushbackInputStream.unread(b);
}
inputMessage = new ServletServerHttpRequest(servletRequest) {
HttpServletRequest wrappedRequest = new HttpServletRequestWrapper(servletRequest) {
@Override
public ServletInputStream getInputStream() throws IOException {
return new ServletInputStream() {
@Override
public int read() throws IOException {
return pushbackInputStream.read();
}
@Override
public void close() throws IOException {
super.close();
pushbackInputStream.close();
}
};
}
};
inputMessage = new ServletServerHttpRequest(wrappedRequest) {
@Override
public InputStream getBody() {
// Form POST should not get here

Loading…
Cancel
Save