From f7fc2cbc3b27054ac9498849309cb8836c817a20 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 13 Jan 2014 22:20:46 +0100 Subject: [PATCH] Replaced reflection code with straight Servlet 3.0 setAsyncStarted call --- .../request/MockMvcRequestBuilders.java | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java index 358827a4fb4..34102bdb21e 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java @@ -15,20 +15,17 @@ */ package org.springframework.test.web.servlet.request; -import java.lang.reflect.Method; - import javax.servlet.ServletContext; import org.springframework.http.HttpMethod; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.RequestBuilder; -import org.springframework.util.ReflectionUtils; /** * Static factory methods for {@link RequestBuilder}s. * - *

Eclipse users: consider adding this class as a Java + *

Eclipse users: Consider adding this class as a Java * editor favorite. To navigate, open the Preferences and type "favorites". * * @author Arjen Poutsma @@ -38,12 +35,8 @@ import org.springframework.util.ReflectionUtils; */ public abstract class MockMvcRequestBuilders { - private MockMvcRequestBuilders() { - } - /** * Create a {@link MockHttpServletRequestBuilder} for a GET request. - * * @param urlTemplate a URL template; the resulting URL will be encoded * @param urlVariables zero or more URL variables */ @@ -53,7 +46,6 @@ public abstract class MockMvcRequestBuilders { /** * Create a {@link MockHttpServletRequestBuilder} for a POST request. - * * @param urlTemplate a URL template; the resulting URL will be encoded * @param urlVariables zero or more URL variables */ @@ -63,7 +55,6 @@ public abstract class MockMvcRequestBuilders { /** * Create a {@link MockHttpServletRequestBuilder} for a PUT request. - * * @param urlTemplate a URL template; the resulting URL will be encoded * @param urlVariables zero or more URL variables */ @@ -73,7 +64,6 @@ public abstract class MockMvcRequestBuilders { /** * Create a {@link MockHttpServletRequestBuilder} for a PATCH request. - * * @param urlTemplate a URL template; the resulting URL will be encoded * @param urlVariables zero or more URL variables */ @@ -83,7 +73,6 @@ public abstract class MockMvcRequestBuilders { /** * Create a {@link MockHttpServletRequestBuilder} for a DELETE request. - * * @param urlTemplate a URL template; the resulting URL will be encoded * @param urlVariables zero or more URL variables */ @@ -93,7 +82,6 @@ public abstract class MockMvcRequestBuilders { /** * Create a {@link MockHttpServletRequestBuilder} for an OPTIONS request. - * * @param urlTemplate a URL template; the resulting URL will be encoded * @param urlVariables zero or more URL variables */ @@ -104,7 +92,6 @@ public abstract class MockMvcRequestBuilders { /** * Create a {@link MockHttpServletRequestBuilder} for a request with the given HTTP method. - * * @param httpMethod the HTTP method * @param urlTemplate a URL template; the resulting URL will be encoded * @param urlVariables zero or more URL variables @@ -115,7 +102,6 @@ public abstract class MockMvcRequestBuilders { /** * Create a {@link MockHttpServletRequestBuilder} for a multipart request. - * * @param urlTemplate a URL template; the resulting URL will be encoded * @param urlVariables zero or more URL variables */ @@ -126,14 +112,12 @@ public abstract class MockMvcRequestBuilders { /** * Create a {@link RequestBuilder} for an async dispatch from the * {@link MvcResult} of the request that started async processing. - * *

Usage involves performing one request first that starts async processing: *

 	 * MvcResult mvcResult = this.mockMvc.perform(get("/1"))
 	 *	.andExpect(request().asyncStarted())
 	 *	.andReturn();
 	 *  
- * *

And then performing the async dispatch re-using the {@code MvcResult}: *

 	 * this.mockMvc.perform(asyncDispatch(mvcResult))
@@ -141,7 +125,6 @@ public abstract class MockMvcRequestBuilders {
 	 * 	.andExpect(content().contentType(MediaType.APPLICATION_JSON))
 	 * 	.andExpect(content().string("{\"name\":\"Joe\",\"someDouble\":0.0,\"someBoolean\":false}"));
 	 * 
- * * @param mvcResult the result from the request that started async processing */ public static RequestBuilder asyncDispatch(final MvcResult mvcResult) { @@ -149,9 +132,7 @@ public abstract class MockMvcRequestBuilders { @Override public MockHttpServletRequest buildRequest(ServletContext servletContext) { MockHttpServletRequest request = mvcResult.getRequest(); - Method method = ReflectionUtils.findMethod(request.getClass(), "setAsyncStarted", boolean.class); - method.setAccessible(true); - ReflectionUtils.invokeMethod(method, request, false); + request.setAsyncStarted(false); return request; } };