Expose path matching settings in MVC Java config
Prior to this commit, one had to provide her own RequestMappingHandlerMapping instance (i.e extend WebMvcConfigurationSupport and override the requestMappingHandlerMapping method) in order to customize path matching properties on that bean. Since SPR-10163, XML config users can do that using the <mvc:path-matching/> XML tag. This commit adds the same feature to MVC Java config with a PathMatchConfigurer. Issue: SPR-11486
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
* Copyright 2002-2014 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.
|
||||
@@ -30,6 +30,7 @@ import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.format.support.FormattingConversionService;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.http.converter.StringHttpMessageConverter;
|
||||
import org.springframework.util.PathMatcher;
|
||||
import org.springframework.validation.DefaultMessageCodesResolver;
|
||||
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
|
||||
import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
|
||||
@@ -40,7 +41,9 @@ import org.springframework.web.servlet.handler.HandlerExceptionResolverComposite
|
||||
import org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||
import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver;
|
||||
import org.springframework.web.util.UrlPathHelper;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.BDDMockito.*;
|
||||
@@ -178,4 +181,35 @@ public class DelegatingWebMvcConfigurationTests {
|
||||
assertEquals("Only one custom converter is expected", 1, composite.getExceptionResolvers().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void configurePathMatch() throws Exception {
|
||||
final PathMatcher pathMatcher = mock(PathMatcher.class);
|
||||
final UrlPathHelper pathHelper = mock(UrlPathHelper.class);
|
||||
|
||||
List<WebMvcConfigurer> configurers = new ArrayList<WebMvcConfigurer>();
|
||||
configurers.add(new WebMvcConfigurerAdapter() {
|
||||
@Override
|
||||
public void configurePathMatch(PathMatchConfigurer configurer) {
|
||||
configurer.setUseRegisteredSuffixPatternMatch(true)
|
||||
.setUseTrailingSlashMatch(false)
|
||||
.setUrlPathHelper(pathHelper)
|
||||
.setPathMatcher(pathMatcher);
|
||||
}
|
||||
});
|
||||
delegatingConfig.setConfigurers(configurers);
|
||||
|
||||
RequestMappingHandlerMapping handlerMapping = delegatingConfig.requestMappingHandlerMapping();
|
||||
assertNotNull(handlerMapping);
|
||||
assertEquals("PathMatchConfigurer should configure RegisteredSuffixPatternMatch",
|
||||
true, handlerMapping.useRegisteredSuffixPatternMatch());
|
||||
assertEquals("PathMatchConfigurer should configure SuffixPatternMatch",
|
||||
true, handlerMapping.useSuffixPatternMatch());
|
||||
assertEquals("PathMatchConfigurer should configure TrailingSlashMatch",
|
||||
false, handlerMapping.useTrailingSlashMatch());
|
||||
assertEquals("PathMatchConfigurer should configure UrlPathHelper",
|
||||
pathHelper, handlerMapping.getUrlPathHelper());
|
||||
assertEquals("PathMatchConfigurer should configure PathMatcher",
|
||||
pathMatcher, handlerMapping.getPathMatcher());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user