Early registration of ReadListener
This is similar to the WriteListener changes on the ServerHttpResponse where we are more naturally exposed to a delayed write. Nevertheless we could also have a delayed read and should be consistent. The early initialization of the RequestBodyPublisher also simplifies the internal implementation a bit.
This commit is contained in:
@@ -16,14 +16,18 @@
|
||||
|
||||
package org.springframework.http.server.reactive;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import javax.servlet.AsyncContext;
|
||||
import javax.servlet.ReadListener;
|
||||
import javax.servlet.ServletInputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.core.io.buffer.DefaultDataBufferFactory;
|
||||
import org.springframework.mock.web.test.DelegatingServletInputStream;
|
||||
import org.springframework.mock.web.test.MockAsyncContext;
|
||||
import org.springframework.mock.web.test.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.test.MockHttpServletResponse;
|
||||
@@ -75,9 +79,25 @@ public class ServerHttpRequestTests {
|
||||
}
|
||||
|
||||
private ServerHttpRequest createHttpRequest(String path) throws Exception {
|
||||
HttpServletRequest request = new MockHttpServletRequest("GET", path);
|
||||
HttpServletRequest request = new MockHttpServletRequest("GET", path) {
|
||||
@Override
|
||||
public ServletInputStream getInputStream() {
|
||||
return new TestServletInputStream();
|
||||
}
|
||||
};
|
||||
AsyncContext asyncContext = new MockAsyncContext(request, new MockHttpServletResponse());
|
||||
return new ServletServerHttpRequest(request, asyncContext, new DefaultDataBufferFactory(), 1024);
|
||||
}
|
||||
|
||||
private static class TestServletInputStream extends DelegatingServletInputStream {
|
||||
|
||||
public TestServletInputStream() {
|
||||
super(new ByteArrayInputStream(new byte[0]));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadListener(ReadListener readListener) {
|
||||
// Ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user