diff --git a/spring-web/src/main/java/org/springframework/web/accept/ContentNegotiationManager.java b/spring-web/src/main/java/org/springframework/web/accept/ContentNegotiationManager.java index 7b727401dd..0913a60350 100644 --- a/spring-web/src/main/java/org/springframework/web/accept/ContentNegotiationManager.java +++ b/spring-web/src/main/java/org/springframework/web/accept/ContentNegotiationManager.java @@ -40,6 +40,7 @@ import org.springframework.web.context.request.NativeWebRequest; * {@code MediaTypeFileExtensionResolver} instances. * * @author Rossen Stoyanchev + * @author Juergen Hoeller * @since 3.2 */ public class ContentNegotiationManager implements ContentNegotiationStrategy, MediaTypeFileExtensionResolver { @@ -66,6 +67,7 @@ public class ContentNegotiationManager implements ContentNegotiationStrategy, Me * A collection-based alternative to * {@link #ContentNegotiationManager(ContentNegotiationStrategy...)}. * @param strategies the strategies to use + * @since 3.2.2 */ public ContentNegotiationManager(Collection strategies) { Assert.notEmpty(strategies, "At least one ContentNegotiationStrategy is expected"); @@ -96,7 +98,7 @@ public class ContentNegotiationManager implements ContentNegotiationStrategy, Me /** * Find a {@code ContentNegotiationStrategy} of the given type. * @param strategyType the strategy type - * @return the first matching strategy or {@code null}. + * @return the first matching strategy, or {@code null} if none * @since 4.3 */ @SuppressWarnings("unchecked") diff --git a/spring-web/src/main/java/org/springframework/web/accept/ContentNegotiationManagerFactoryBean.java b/spring-web/src/main/java/org/springframework/web/accept/ContentNegotiationManagerFactoryBean.java index 1ff43dab43..f132060802 100644 --- a/spring-web/src/main/java/org/springframework/web/accept/ContentNegotiationManagerFactoryBean.java +++ b/spring-web/src/main/java/org/springframework/web/accept/ContentNegotiationManagerFactoryBean.java @@ -86,6 +86,7 @@ import org.springframework.web.context.ServletContextAware; * {@link #setStrategies(List)}. * * @author Rossen Stoyanchev + * @author Brian Clozel * @since 3.2 */ public class ContentNegotiationManagerFactoryBean @@ -293,6 +294,10 @@ public class ContentNegotiationManagerFactoryBean build(); } + /** + * Actually build the {@link ContentNegotiationManager}. + * @since 5.0 + */ public ContentNegotiationManager build() { List strategies = new ArrayList<>(); @@ -303,8 +308,7 @@ public class ContentNegotiationManagerFactoryBean if (this.favorPathExtension) { PathExtensionContentNegotiationStrategy strategy; if (this.servletContext != null && !useRegisteredExtensionsOnly()) { - strategy = new ServletPathExtensionContentNegotiationStrategy( - this.servletContext, this.mediaTypes); + strategy = new ServletPathExtensionContentNegotiationStrategy(this.servletContext, this.mediaTypes); } else { strategy = new PathExtensionContentNegotiationStrategy(this.mediaTypes); @@ -317,14 +321,13 @@ public class ContentNegotiationManagerFactoryBean } if (this.favorParameter) { - ParameterContentNegotiationStrategy strategy = - new ParameterContentNegotiationStrategy(this.mediaTypes); + ParameterContentNegotiationStrategy strategy = new ParameterContentNegotiationStrategy(this.mediaTypes); strategy.setParameterName(this.parameterName); if (this.useRegisteredExtensionsOnly != null) { strategy.setUseRegisteredExtensionsOnly(this.useRegisteredExtensionsOnly); } else { - strategy.setUseRegisteredExtensionsOnly(true); // backwards compatibility + strategy.setUseRegisteredExtensionsOnly(true); // backwards compatibility } strategies.add(strategy); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ContentNegotiationConfigurer.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ContentNegotiationConfigurer.java index e97e168632..3d5d7a5370 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ContentNegotiationConfigurer.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ContentNegotiationConfigurer.java @@ -186,8 +186,8 @@ public class ContentNegotiationConfigurer { } /** - * @deprecated as of 5.0, in favor of {@link #useRegisteredExtensionsOnly(boolean)}, which - * has reverse behavior. + * @deprecated as of 5.0, in favor of {@link #useRegisteredExtensionsOnly(boolean)} + * which has reverse behavior */ @Deprecated public ContentNegotiationConfigurer useJaf(boolean useJaf) { @@ -262,7 +262,12 @@ public class ContentNegotiationConfigurer { } - protected ContentNegotiationManager getContentNegotiationManager() throws Exception { + /** + * Build a {@link ContentNegotiationManager} based on this configurer's settings. + * @since 4.3.12 + * @see ContentNegotiationManagerFactoryBean#getObject() + */ + protected ContentNegotiationManager buildContentNegotiationManager() { this.factory.addMediaTypes(this.mediaTypes); return this.factory.build(); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurer.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurer.java index c19bf07ad9..a4a0bfb8df 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurer.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurer.java @@ -16,15 +16,12 @@ package org.springframework.web.servlet.config.annotation; -import java.util.HashMap; -import java.util.Map; +import java.util.Collections; import javax.servlet.ServletContext; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.web.HttpRequestHandler; import org.springframework.web.servlet.DispatcherServlet; -import org.springframework.web.servlet.handler.AbstractHandlerMapping; import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping; import org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler; @@ -86,23 +83,22 @@ public class DefaultServletHandlerConfigurer { this.handler.setServletContext(this.servletContext); } + /** * Return a handler mapping instance ordered at {@link Integer#MAX_VALUE} containing the * {@link DefaultServletHttpRequestHandler} instance mapped to {@code "/**"}; * or {@code null} if default servlet handling was not been enabled. + * @since 4.3.12 */ @Nullable - protected AbstractHandlerMapping getHandlerMapping() { + protected SimpleUrlHandlerMapping buildHandlerMapping() { if (this.handler == null) { return null; } - Map urlMap = new HashMap<>(); - urlMap.put("/**", this.handler); - SimpleUrlHandlerMapping handlerMapping = new SimpleUrlHandlerMapping(); + handlerMapping.setUrlMap(Collections.singletonMap("/**", this.handler)); handlerMapping.setOrder(Integer.MAX_VALUE); - handlerMapping.setUrlMap(urlMap); return handlerMapping; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/PathMatchConfigurer.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/PathMatchConfigurer.java index 66266f318f..e8db05bc59 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/PathMatchConfigurer.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/PathMatchConfigurer.java @@ -84,9 +84,7 @@ public class PathMatchConfigurer { *

By default this is set to "false". * @see WebMvcConfigurer#configureContentNegotiation */ - public PathMatchConfigurer setUseRegisteredSuffixPatternMatch( - Boolean registeredSuffixPatternMatch) { - + public PathMatchConfigurer setUseRegisteredSuffixPatternMatch(Boolean registeredSuffixPatternMatch) { this.registeredSuffixPatternMatch = registeredSuffixPatternMatch; return this; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ViewControllerRegistry.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ViewControllerRegistry.java index 93ed1d25ae..c02a40a77a 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ViewControllerRegistry.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ViewControllerRegistry.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,6 @@ import java.util.Map; import org.springframework.context.ApplicationContext; import org.springframework.http.HttpStatus; import org.springframework.lang.Nullable; -import org.springframework.web.servlet.handler.AbstractHandlerMapping; import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping; /** @@ -37,14 +36,23 @@ import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping; */ public class ViewControllerRegistry { + @Nullable + private ApplicationContext applicationContext; + private final List registrations = new ArrayList<>(4); private final List redirectRegistrations = new ArrayList<>(10); private int order = 1; - @Nullable - private ApplicationContext applicationContext; + + /** + * Class constructor with {@link ApplicationContext}. + * @since 4.3.12 + */ + public ViewControllerRegistry(@Nullable ApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } /** @@ -97,30 +105,29 @@ public class ViewControllerRegistry { this.order = order; } - protected void setApplicationContext(@Nullable ApplicationContext applicationContext) { - this.applicationContext = applicationContext; - } - /** * Return the {@code HandlerMapping} that contains the registered view * controller mappings, or {@code null} for no registrations. + * @since 4.3.12 */ @Nullable - protected AbstractHandlerMapping getHandlerMapping() { + protected SimpleUrlHandlerMapping buildHandlerMapping() { if (this.registrations.isEmpty() && this.redirectRegistrations.isEmpty()) { return null; } - Map urlMap = new LinkedHashMap<>(); + + Map urlMap = new LinkedHashMap(); for (ViewControllerRegistration registration : this.registrations) { urlMap.put(registration.getUrlPath(), registration.getViewController()); } for (RedirectViewControllerRegistration registration : this.redirectRegistrations) { urlMap.put(registration.getUrlPath(), registration.getViewController()); } + SimpleUrlHandlerMapping handlerMapping = new SimpleUrlHandlerMapping(); - handlerMapping.setOrder(this.order); handlerMapping.setUrlMap(urlMap); + handlerMapping.setOrder(this.order); return handlerMapping; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ViewResolverRegistry.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ViewResolverRegistry.java index eb2e23abdf..86b15390ba 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ViewResolverRegistry.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ViewResolverRegistry.java @@ -54,6 +54,12 @@ import org.springframework.web.servlet.view.tiles3.TilesViewResolver; */ public class ViewResolverRegistry { + @Nullable + private ContentNegotiationManager contentNegotiationManager; + + @Nullable + private ApplicationContext applicationContext; + @Nullable private ContentNegotiatingViewResolver contentNegotiatingResolver; @@ -62,20 +68,18 @@ public class ViewResolverRegistry { @Nullable private Integer order; - @Nullable - private ContentNegotiationManager contentNegotiationManager; - @Nullable - private ApplicationContext applicationContext; + /** + * Class constructor with {@link ContentNegotiationManager} and {@link ApplicationContext}. + * @since 4.3.12 + */ + public ViewResolverRegistry( + ContentNegotiationManager contentNegotiationManager, @Nullable ApplicationContext context) { - - protected void setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager) { this.contentNegotiationManager = contentNegotiationManager; + this.applicationContext = context; } - protected void setApplicationContext(ApplicationContext applicationContext) { - this.applicationContext = applicationContext; - } /** * Whether any view resolvers have been registered. @@ -84,7 +88,6 @@ public class ViewResolverRegistry { return (this.contentNegotiatingResolver != null || !this.viewResolvers.isEmpty()); } - /** * Enable use of a {@link ContentNegotiatingViewResolver} to front all other * configured view resolvers and select among all selected Views based on @@ -305,6 +308,7 @@ public class ViewResolverRegistry { } } + private static class GroovyMarkupRegistration extends UrlBasedViewResolverRegistration { public GroovyMarkupRegistration() { @@ -313,6 +317,7 @@ public class ViewResolverRegistry { } } + private static class ScriptRegistration extends UrlBasedViewResolverRegistration { public ScriptRegistration() { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java index ecb0ab9ec2..30cc566e87 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java @@ -391,12 +391,7 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv ContentNegotiationConfigurer configurer = new ContentNegotiationConfigurer(this.servletContext); configurer.mediaTypes(getDefaultMediaTypes()); configureContentNegotiation(configurer); - try { - this.contentNegotiationManager = configurer.getContentNegotiationManager(); - } - catch (Throwable ex) { - throw new BeanInitializationException("Could not create ContentNegotiationManager", ex); - } + this.contentNegotiationManager = configurer.buildContentNegotiationManager(); } return this.contentNegotiationManager; } @@ -436,11 +431,10 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv */ @Bean public HandlerMapping viewControllerHandlerMapping() { - ViewControllerRegistry registry = new ViewControllerRegistry(); - registry.setApplicationContext(this.applicationContext); + ViewControllerRegistry registry = new ViewControllerRegistry(this.applicationContext); addViewControllers(registry); - AbstractHandlerMapping handlerMapping = registry.getHandlerMapping(); + AbstractHandlerMapping handlerMapping = registry.buildHandlerMapping(); handlerMapping = (handlerMapping != null ? handlerMapping : new EmptyHandlerMapping()); handlerMapping.setPathMatcher(mvcPathMatcher()); handlerMapping.setUrlPathHelper(mvcUrlPathHelper()); @@ -531,9 +525,9 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv Assert.state(this.servletContext != null, "No ServletContext set"); DefaultServletHandlerConfigurer configurer = new DefaultServletHandlerConfigurer(this.servletContext); configureDefaultServletHandling(configurer); - AbstractHandlerMapping handlerMapping = configurer.getHandlerMapping(); - handlerMapping = handlerMapping != null ? handlerMapping : new EmptyHandlerMapping(); - return handlerMapping; + + HandlerMapping handlerMapping = configurer.buildHandlerMapping(); + return (handlerMapping != null ? handlerMapping : new EmptyHandlerMapping()); } /** @@ -975,14 +969,11 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv */ @Bean public ViewResolver mvcViewResolver() { - ViewResolverRegistry registry = new ViewResolverRegistry(); - registry.setContentNegotiationManager(mvcContentNegotiationManager()); - if (this.applicationContext != null) { - registry.setApplicationContext(this.applicationContext); - } + ViewResolverRegistry registry = new ViewResolverRegistry( + mvcContentNegotiationManager(), this.applicationContext); configureViewResolvers(registry); - if (registry.getViewResolvers().isEmpty()) { + if (registry.getViewResolvers().isEmpty() && this.applicationContext != null) { String[] names = BeanFactoryUtils.beanNamesForTypeIncludingAncestors( this.applicationContext, ViewResolver.class, true, false); if (names.length == 1) { @@ -993,7 +984,9 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv ViewResolverComposite composite = new ViewResolverComposite(); composite.setOrder(registry.getOrder()); composite.setViewResolvers(registry.getViewResolvers()); - composite.setApplicationContext(this.applicationContext); + if (this.applicationContext != null) { + composite.setApplicationContext(this.applicationContext); + } if (this.servletContext != null) { composite.setServletContext(this.servletContext); } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ContentNegotiationConfigurerTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ContentNegotiationConfigurerTests.java index 7c42ceed11..30a1283730 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ContentNegotiationConfigurerTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ContentNegotiationConfigurerTests.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.web.servlet.config.annotation; import java.util.Arrays; @@ -28,7 +29,7 @@ import org.springframework.web.accept.FixedContentNegotiationStrategy; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.ServletWebRequest; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.*; /** * Test fixture for {@link ContentNegotiationConfigurer} tests. @@ -42,6 +43,7 @@ public class ContentNegotiationConfigurerTests { private MockHttpServletRequest servletRequest; + @Before public void setup() { this.servletRequest = new MockHttpServletRequest(); @@ -49,9 +51,10 @@ public class ContentNegotiationConfigurerTests { this.configurer = new ContentNegotiationConfigurer(this.servletRequest.getServletContext()); } + @Test public void defaultSettings() throws Exception { - ContentNegotiationManager manager = this.configurer.getContentNegotiationManager(); + ContentNegotiationManager manager = this.configurer.buildContentNegotiationManager(); this.servletRequest.setRequestURI("/flower.gif"); @@ -74,7 +77,7 @@ public class ContentNegotiationConfigurerTests { @Test public void addMediaTypes() throws Exception { this.configurer.mediaTypes(Collections.singletonMap("json", MediaType.APPLICATION_JSON)); - ContentNegotiationManager manager = this.configurer.getContentNegotiationManager(); + ContentNegotiationManager manager = this.configurer.buildContentNegotiationManager(); this.servletRequest.setRequestURI("/flower.json"); assertEquals(MediaType.APPLICATION_JSON, manager.resolveMediaTypes(this.webRequest).get(0)); @@ -85,7 +88,7 @@ public class ContentNegotiationConfigurerTests { this.configurer.favorParameter(true); this.configurer.parameterName("f"); this.configurer.mediaTypes(Collections.singletonMap("json", MediaType.APPLICATION_JSON)); - ContentNegotiationManager manager = this.configurer.getContentNegotiationManager(); + ContentNegotiationManager manager = this.configurer.buildContentNegotiationManager(); this.servletRequest.setRequestURI("/flower"); this.servletRequest.addParameter("f", "json"); @@ -96,7 +99,7 @@ public class ContentNegotiationConfigurerTests { @Test public void ignoreAcceptHeader() throws Exception { this.configurer.ignoreAcceptHeader(true); - ContentNegotiationManager manager = this.configurer.getContentNegotiationManager(); + ContentNegotiationManager manager = this.configurer.buildContentNegotiationManager(); this.servletRequest.setRequestURI("/flower"); this.servletRequest.addHeader("Accept", MediaType.IMAGE_GIF_VALUE); @@ -107,7 +110,7 @@ public class ContentNegotiationConfigurerTests { @Test public void setDefaultContentType() throws Exception { this.configurer.defaultContentType(MediaType.APPLICATION_JSON); - ContentNegotiationManager manager = this.configurer.getContentNegotiationManager(); + ContentNegotiationManager manager = this.configurer.buildContentNegotiationManager(); assertEquals(MediaType.APPLICATION_JSON, manager.resolveMediaTypes(this.webRequest).get(0)); } @@ -115,7 +118,7 @@ public class ContentNegotiationConfigurerTests { @Test public void setMultipleDefaultContentTypes() throws Exception { this.configurer.defaultContentType(MediaType.APPLICATION_JSON, MediaType.ALL); - ContentNegotiationManager manager = this.configurer.getContentNegotiationManager(); + ContentNegotiationManager manager = this.configurer.buildContentNegotiationManager(); assertEquals(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.ALL), manager.resolveMediaTypes(this.webRequest)); } @@ -123,8 +126,9 @@ public class ContentNegotiationConfigurerTests { @Test public void setDefaultContentTypeStrategy() throws Exception { this.configurer.defaultContentTypeStrategy(new FixedContentNegotiationStrategy(MediaType.APPLICATION_JSON)); - ContentNegotiationManager manager = this.configurer.getContentNegotiationManager(); + ContentNegotiationManager manager = this.configurer.buildContentNegotiationManager(); assertEquals(MediaType.APPLICATION_JSON, manager.resolveMediaTypes(this.webRequest).get(0)); } + } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurerTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurerTests.java index e9c45776d5..c50dd0a6c7 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurerTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/DefaultServletHandlerConfigurerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,23 +43,25 @@ public class DefaultServletHandlerConfigurerTests { private MockHttpServletResponse response; + @Before - public void setUp() { + public void setup() { response = new MockHttpServletResponse(); servletContext = new DispatchingMockServletContext(); configurer = new DefaultServletHandlerConfigurer(servletContext); } + @Test public void notEnabled() { - assertNull(configurer.getHandlerMapping()); + assertNull(configurer.buildHandlerMapping()); } @Test public void enable() throws Exception { configurer.enable(); - SimpleUrlHandlerMapping getHandlerMapping = getHandlerMapping(); - SimpleUrlHandlerMapping handlerMapping = getHandlerMapping; + SimpleUrlHandlerMapping getHandlerMapping = configurer.buildHandlerMapping(); + SimpleUrlHandlerMapping handlerMapping = configurer.buildHandlerMapping(); DefaultServletHttpRequestHandler handler = (DefaultServletHttpRequestHandler) handlerMapping.getUrlMap().get("/**"); assertNotNull(handler); @@ -75,7 +77,7 @@ public class DefaultServletHandlerConfigurerTests { @Test public void enableWithServletName() throws Exception { configurer.enable("defaultServlet"); - SimpleUrlHandlerMapping handlerMapping = getHandlerMapping(); + SimpleUrlHandlerMapping handlerMapping = configurer.buildHandlerMapping(); DefaultServletHttpRequestHandler handler = (DefaultServletHttpRequestHandler) handlerMapping.getUrlMap().get("/**"); assertNotNull(handler); @@ -88,6 +90,7 @@ public class DefaultServletHandlerConfigurerTests { assertEquals("The request was not forwarded", expected, response.getForwardedUrl()); } + private static class DispatchingMockServletContext extends MockServletContext { private String url; @@ -99,8 +102,4 @@ public class DefaultServletHandlerConfigurerTests { } } - private SimpleUrlHandlerMapping getHandlerMapping() { - return (SimpleUrlHandlerMapping) configurer.getHandlerMapping(); - } - } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ViewControllerRegistryTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ViewControllerRegistryTests.java index 486023f8c0..4672b48f32 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ViewControllerRegistryTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ViewControllerRegistryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -47,16 +47,16 @@ public class ViewControllerRegistryTests { @Before - public void setUp() { - this.registry = new ViewControllerRegistry(); - this.registry.setApplicationContext(new StaticApplicationContext()); + public void setup() { + this.registry = new ViewControllerRegistry(new StaticApplicationContext()); this.request = new MockHttpServletRequest("GET", "/"); this.response = new MockHttpServletResponse(); } + @Test - public void noViewControllers() throws Exception { - assertNull(this.registry.getHandlerMapping()); + public void noViewControllers() { + assertNull(this.registry.buildHandlerMapping()); } @Test @@ -125,17 +125,17 @@ public class ViewControllerRegistryTests { @Test public void order() { this.registry.addViewController("/path"); - SimpleUrlHandlerMapping handlerMapping = getHandlerMapping(); + SimpleUrlHandlerMapping handlerMapping = this.registry.buildHandlerMapping(); assertEquals(1, handlerMapping.getOrder()); this.registry.setOrder(2); - handlerMapping = getHandlerMapping(); + handlerMapping = this.registry.buildHandlerMapping(); assertEquals(2, handlerMapping.getOrder()); } private ParameterizableViewController getController(String path) { - Map urlMap = getHandlerMapping().getUrlMap(); + Map urlMap = this.registry.buildHandlerMapping().getUrlMap(); ParameterizableViewController controller = (ParameterizableViewController) urlMap.get(path); assertNotNull(controller); return controller; @@ -149,8 +149,4 @@ public class ViewControllerRegistryTests { return (RedirectView) controller.getView(); } - private SimpleUrlHandlerMapping getHandlerMapping() { - return (SimpleUrlHandlerMapping) this.registry.getHandlerMapping(); - } - } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ViewResolverRegistryTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ViewResolverRegistryTests.java index e21fab7de1..00df205b3f 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ViewResolverRegistryTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ViewResolverRegistryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -54,15 +54,14 @@ public class ViewResolverRegistryTests { @Before - public void setUp() { + public void setup() { StaticWebApplicationContext context = new StaticWebApplicationContext(); context.registerSingleton("freeMarkerConfigurer", FreeMarkerConfigurer.class); context.registerSingleton("tilesConfigurer", TilesConfigurer.class); context.registerSingleton("groovyMarkupConfigurer", GroovyMarkupConfigurer.class); context.registerSingleton("scriptTemplateConfigurer", ScriptTemplateConfigurer.class); - this.registry = new ViewResolverRegistry(); - this.registry.setApplicationContext(context); - this.registry.setContentNegotiationManager(new ContentNegotiationManager()); + + this.registry = new ViewResolverRegistry(new ContentNegotiationManager(), context); }