From fbac428e231118538c7273f04a4ac0bbdae47d68 Mon Sep 17 00:00:00 2001 From: Wesley Hall Date: Thu, 21 Feb 2013 14:05:29 +0000 Subject: [PATCH] Fix DefaultMockMvcBuilder fluent API generic type Changed upper bound of generic parameter for DefaultMockMvcBuilder from MockMvcBuilder to DefaultMockMvcBuilder to allow for ongoing method chaining in the fluent API style. Issue: SPR-10277 --- .../servlet/setup/DefaultMockMvcBuilder.java | 2 +- .../test/web/servlet/setup/Spr10277Tests.java | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 spring-test-mvc/src/test/java/org/springframework/test/web/servlet/setup/Spr10277Tests.java diff --git a/spring-test-mvc/src/main/java/org/springframework/test/web/servlet/setup/DefaultMockMvcBuilder.java b/spring-test-mvc/src/main/java/org/springframework/test/web/servlet/setup/DefaultMockMvcBuilder.java index a44f43a816c..7e8b7afd635 100644 --- a/spring-test-mvc/src/main/java/org/springframework/test/web/servlet/setup/DefaultMockMvcBuilder.java +++ b/spring-test-mvc/src/main/java/org/springframework/test/web/servlet/setup/DefaultMockMvcBuilder.java @@ -42,7 +42,7 @@ import org.springframework.web.servlet.DispatcherServlet; * @author Rob Winch * @since 3.2 */ -public class DefaultMockMvcBuilder extends MockMvcBuilderSupport +public class DefaultMockMvcBuilder extends MockMvcBuilderSupport implements MockMvcBuilder { private final WebApplicationContext webAppContext; diff --git a/spring-test-mvc/src/test/java/org/springframework/test/web/servlet/setup/Spr10277Tests.java b/spring-test-mvc/src/test/java/org/springframework/test/web/servlet/setup/Spr10277Tests.java new file mode 100644 index 00000000000..101285c5201 --- /dev/null +++ b/spring-test-mvc/src/test/java/org/springframework/test/web/servlet/setup/Spr10277Tests.java @@ -0,0 +1,43 @@ +package org.springframework.test.web.servlet.setup; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.filter.CharacterEncodingFilter; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +/** + * Test for SPR-10277 (Multiple method chaining when building MockMvc). + * + * @author Wesley Hall + */ +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration +public class Spr10277Tests { + + @Autowired + private WebApplicationContext wac; + + @Test + public void chainMultiple() { + MockMvcBuilders + .webAppContextSetup(wac) + .addFilter(new CharacterEncodingFilter() ) + .defaultRequest(get("/").contextPath("/mywebapp")) + .build(); + } + + @Configuration + @EnableWebMvc + static class WebConfig extends WebMvcConfigurerAdapter { + } +}