Skip to content

Commit f7ec738

Browse files
committed
Sync up MockAsyncContext implementations in src/test
1 parent d4e7d19 commit f7ec738

File tree

4 files changed

+53
-57
lines changed

4 files changed

+53
-57
lines changed

spring-test-mvc/src/main/java/org/springframework/test/web/servlet/request/MockAsyncContext.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import javax.servlet.ServletException;
2727
import javax.servlet.ServletRequest;
2828
import javax.servlet.ServletResponse;
29+
import javax.servlet.http.HttpServletRequest;
30+
import javax.servlet.http.HttpServletResponse;
2931

3032
import org.springframework.beans.BeanUtils;
3133
import org.springframework.mock.web.MockHttpServletRequest;
@@ -40,9 +42,9 @@
4042
*/
4143
class MockAsyncContext implements AsyncContext {
4244

43-
private final ServletRequest request;
45+
private final HttpServletRequest request;
4446

45-
private final ServletResponse response;
47+
private final HttpServletResponse response;
4648

4749
private final List<AsyncListener> listeners = new ArrayList<AsyncListener>();
4850

@@ -52,8 +54,8 @@ class MockAsyncContext implements AsyncContext {
5254

5355

5456
public MockAsyncContext(ServletRequest request, ServletResponse response) {
55-
this.request = request;
56-
this.response = response;
57+
this.request = (HttpServletRequest) request;
58+
this.response = (HttpServletResponse) response;
5759
}
5860

5961
public ServletRequest getRequest() {
@@ -73,7 +75,7 @@ public String getDispatchedPath() {
7375
}
7476

7577
public void dispatch() {
76-
dispatch(null);
78+
dispatch(this.request.getRequestURI());
7779
}
7880

7981
public void dispatch(String path) {
@@ -89,13 +91,12 @@ public void complete() {
8991
if (mockRequest != null) {
9092
mockRequest.setAsyncStarted(false);
9193
}
92-
9394
for (AsyncListener listener : this.listeners) {
9495
try {
9596
listener.onComplete(new AsyncEvent(this, this.request, this.response));
9697
}
9798
catch (IOException e) {
98-
throw new IllegalStateException("AsyncListener failed", e);
99+
throw new IllegalStateException("AsyncListener failure", e);
99100
}
100101
}
101102
}

spring-web/src/test/java/org/springframework/mock/web/MockAsyncContext.java

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@
2222
import javax.servlet.AsyncContext;
2323
import javax.servlet.AsyncEvent;
2424
import javax.servlet.AsyncListener;
25-
import javax.servlet.DispatcherType;
2625
import javax.servlet.ServletContext;
2726
import javax.servlet.ServletException;
2827
import javax.servlet.ServletRequest;
2928
import javax.servlet.ServletResponse;
29+
import javax.servlet.http.HttpServletRequest;
30+
import javax.servlet.http.HttpServletResponse;
3031

3132
import org.springframework.beans.BeanUtils;
3233
import org.springframework.web.util.WebUtils;
@@ -39,22 +40,20 @@
3940
*/
4041
public class MockAsyncContext implements AsyncContext {
4142

42-
private final ServletRequest request;
43+
private final HttpServletRequest request;
4344

44-
private final ServletResponse response;
45-
46-
private final MockHttpServletRequest mockRequest;
45+
private final HttpServletResponse response;
4746

4847
private final List<AsyncListener> listeners = new ArrayList<AsyncListener>();
4948

50-
private String dispatchPath;
49+
private String dispatchedPath;
50+
51+
private long timeout = 10 * 1000L; // 10 seconds is Tomcat's default
5152

52-
private long timeout = 10 * 60 * 1000L;
5353

5454
public MockAsyncContext(ServletRequest request, ServletResponse response) {
55-
this.request = request;
56-
this.response = response;
57-
this.mockRequest = WebUtils.getNativeRequest(request, MockHttpServletRequest.class);
55+
this.request = (HttpServletRequest) request;
56+
this.response = (HttpServletResponse) response;
5857
}
5958

6059
public ServletRequest getRequest() {
@@ -66,32 +65,29 @@ public ServletResponse getResponse() {
6665
}
6766

6867
public boolean hasOriginalRequestAndResponse() {
69-
return false;
68+
return (this.request instanceof MockHttpServletRequest) && (this.response instanceof MockHttpServletResponse);
7069
}
7170

72-
public String getDispatchPath() {
73-
return this.dispatchPath;
71+
public String getDispatchedPath() {
72+
return this.dispatchedPath;
7473
}
7574

7675
public void dispatch() {
77-
dispatch(null);
76+
dispatch(this.request.getRequestURI());
7877
}
7978

8079
public void dispatch(String path) {
8180
dispatch(null, path);
8281
}
8382

8483
public void dispatch(ServletContext context, String path) {
85-
this.dispatchPath = path;
86-
if (this.mockRequest != null) {
87-
this.mockRequest.setDispatcherType(DispatcherType.ASYNC);
88-
this.mockRequest.setAsyncStarted(false);
89-
}
84+
this.dispatchedPath = path;
9085
}
9186

9287
public void complete() {
93-
if (this.mockRequest != null) {
94-
this.mockRequest.setAsyncStarted(false);
88+
MockHttpServletRequest mockRequest = WebUtils.getNativeRequest(request, MockHttpServletRequest.class);
89+
if (mockRequest != null) {
90+
mockRequest.setAsyncStarted(false);
9591
}
9692
for (AsyncListener listener : this.listeners) {
9793
try {
@@ -103,7 +99,8 @@ public void complete() {
10399
}
104100
}
105101

106-
public void start(Runnable run) {
102+
public void start(Runnable runnable) {
103+
runnable.run();
107104
}
108105

109106
public List<AsyncListener> getListeners() {

spring-web/src/test/java/org/springframework/web/context/request/async/WebAsyncManagerTimeoutTests.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.junit.Before;
3535
import org.junit.Test;
3636
import org.springframework.core.task.AsyncTaskExecutor;
37+
import org.springframework.mock.web.MockAsyncContext;
3738
import org.springframework.mock.web.MockHttpServletRequest;
3839
import org.springframework.mock.web.MockHttpServletResponse;
3940
import org.springframework.web.context.request.NativeWebRequest;
@@ -57,7 +58,7 @@ public class WebAsyncManagerTimeoutTests {
5758

5859
@Before
5960
public void setUp() {
60-
this.servletRequest = new MockHttpServletRequest();
61+
this.servletRequest = new MockHttpServletRequest("GET", "/test");
6162
this.servletRequest.setAsyncSupported(true);
6263
this.asyncWebRequest = new StandardServletAsyncWebRequest(servletRequest, new MockHttpServletResponse());
6364

@@ -107,7 +108,7 @@ public void startCallableProcessingTimeoutAndResume() throws Exception {
107108
this.asyncWebRequest.onTimeout(ASYNC_EVENT);
108109

109110
assertEquals(22, this.asyncManager.getConcurrentResult());
110-
assertEquals(DispatcherType.ASYNC, this.servletRequest.getDispatcherType());
111+
assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());
111112

112113
verify(interceptor);
113114
}
@@ -128,7 +129,7 @@ public void startCallableProcessingAfterTimeoutException() throws Exception {
128129
this.asyncWebRequest.onTimeout(ASYNC_EVENT);
129130

130131
assertEquals(exception, this.asyncManager.getConcurrentResult());
131-
assertEquals(DispatcherType.ASYNC, this.servletRequest.getDispatcherType());
132+
assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());
132133

133134
verify(interceptor);
134135
}
@@ -174,7 +175,7 @@ public <T> void afterTimeout(NativeWebRequest request, DeferredResult<T> result)
174175
this.asyncWebRequest.onTimeout(event);
175176

176177
assertEquals(23, this.asyncManager.getConcurrentResult());
177-
assertEquals(DispatcherType.ASYNC, this.servletRequest.getDispatcherType());
178+
assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());
178179
}
179180

180181
@Test
@@ -195,7 +196,7 @@ public <T> void afterTimeout(NativeWebRequest request, DeferredResult<T> result)
195196
this.asyncWebRequest.onTimeout(event);
196197

197198
assertEquals(23, this.asyncManager.getConcurrentResult());
198-
assertEquals(DispatcherType.ASYNC, this.servletRequest.getDispatcherType());
199+
assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());
199200
}
200201

201202
@Test
@@ -217,7 +218,7 @@ public <T> void afterTimeout(NativeWebRequest request, DeferredResult<T> result)
217218
this.asyncWebRequest.onTimeout(event);
218219

219220
assertEquals(exception, this.asyncManager.getConcurrentResult());
220-
assertEquals(DispatcherType.ASYNC, this.servletRequest.getDispatcherType());
221+
assertEquals("/test", ((MockAsyncContext) this.servletRequest.getAsyncContext()).getDispatchedPath());
221222
}
222223

223224

spring-webmvc/src/test/java/org/springframework/mock/web/MockAsyncContext.java

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@
2222
import javax.servlet.AsyncContext;
2323
import javax.servlet.AsyncEvent;
2424
import javax.servlet.AsyncListener;
25-
import javax.servlet.DispatcherType;
2625
import javax.servlet.ServletContext;
2726
import javax.servlet.ServletException;
2827
import javax.servlet.ServletRequest;
2928
import javax.servlet.ServletResponse;
29+
import javax.servlet.http.HttpServletRequest;
30+
import javax.servlet.http.HttpServletResponse;
3031

3132
import org.springframework.beans.BeanUtils;
3233
import org.springframework.web.util.WebUtils;
@@ -39,22 +40,20 @@
3940
*/
4041
public class MockAsyncContext implements AsyncContext {
4142

42-
private final ServletRequest request;
43+
private final HttpServletRequest request;
4344

44-
private final ServletResponse response;
45-
46-
private final MockHttpServletRequest mockRequest;
45+
private final HttpServletResponse response;
4746

4847
private final List<AsyncListener> listeners = new ArrayList<AsyncListener>();
4948

50-
private String dispatchPath;
49+
private String dispatchedPath;
50+
51+
private long timeout = 10 * 1000L; // 10 seconds is Tomcat's default
5152

52-
private long timeout = 10 * 60 * 1000L;
5353

5454
public MockAsyncContext(ServletRequest request, ServletResponse response) {
55-
this.request = request;
56-
this.response = response;
57-
this.mockRequest = WebUtils.getNativeRequest(request, MockHttpServletRequest.class);
55+
this.request = (HttpServletRequest) request;
56+
this.response = (HttpServletResponse) response;
5857
}
5958

6059
public ServletRequest getRequest() {
@@ -66,32 +65,29 @@ public ServletResponse getResponse() {
6665
}
6766

6867
public boolean hasOriginalRequestAndResponse() {
69-
return false;
68+
return (this.request instanceof MockHttpServletRequest) && (this.response instanceof MockHttpServletResponse);
7069
}
7170

72-
public String getDispatchPath() {
73-
return this.dispatchPath;
71+
public String getDispatchedPath() {
72+
return this.dispatchedPath;
7473
}
7574

7675
public void dispatch() {
77-
dispatch(null);
76+
dispatch(this.request.getRequestURI());
7877
}
7978

8079
public void dispatch(String path) {
8180
dispatch(null, path);
8281
}
8382

8483
public void dispatch(ServletContext context, String path) {
85-
this.dispatchPath = path;
86-
if (this.mockRequest != null) {
87-
this.mockRequest.setDispatcherType(DispatcherType.ASYNC);
88-
this.mockRequest.setAsyncStarted(false);
89-
}
84+
this.dispatchedPath = path;
9085
}
9186

9287
public void complete() {
93-
if (this.mockRequest != null) {
94-
this.mockRequest.setAsyncStarted(false);
88+
MockHttpServletRequest mockRequest = WebUtils.getNativeRequest(request, MockHttpServletRequest.class);
89+
if (mockRequest != null) {
90+
mockRequest.setAsyncStarted(false);
9591
}
9692
for (AsyncListener listener : this.listeners) {
9793
try {
@@ -103,7 +99,8 @@ public void complete() {
10399
}
104100
}
105101

106-
public void start(Runnable run) {
102+
public void start(Runnable runnable) {
103+
runnable.run();
107104
}
108105

109106
public List<AsyncListener> getListeners() {

0 commit comments

Comments
 (0)