diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java index 25453cda414..8fb7f5383c9 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java @@ -85,21 +85,20 @@ public class InterceptorRegistration { if (this.includePatterns.isEmpty() && this.excludePatterns.isEmpty()) { return this.interceptor; } - MappedInterceptor mappedInterceptor = new MappedInterceptor( - toArray(this.includePatterns), toArray(this.excludePatterns), interceptor); + + String[] include = toArray(this.includePatterns); + String[] exclude = toArray(this.excludePatterns); + MappedInterceptor mappedInterceptor = new MappedInterceptor(include, exclude, this.interceptor); + if (this.pathMatcher != null) { mappedInterceptor.setPathMatcher(this.pathMatcher); } + return mappedInterceptor; } private static String[] toArray(List list) { - if (CollectionUtils.isEmpty(list)) { - return null; - } - else { - return list.toArray(new String[list.size()]); - } + return (CollectionUtils.isEmpty(list) ? null : list.toArray(new String[list.size()])); } } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/InterceptorRegistryTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/InterceptorRegistryTests.java index 0176930f847..6ff3b107524 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/InterceptorRegistryTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/InterceptorRegistryTests.java @@ -53,101 +53,99 @@ public class InterceptorRegistryTests { private final HandlerInterceptor interceptor2 = new ThemeChangeInterceptor(); - private TestWebRequestInterceptor webRequestInterceptor1; + private TestWebRequestInterceptor webInterceptor1; - private TestWebRequestInterceptor webRequestInterceptor2; + private TestWebRequestInterceptor webInterceptor2; private final MockHttpServletRequest request = new MockHttpServletRequest(); private final MockHttpServletResponse response = new MockHttpServletResponse(); + @Before public void setUp() { - registry = new InterceptorRegistry(); - webRequestInterceptor1 = new TestWebRequestInterceptor(); - webRequestInterceptor2 = new TestWebRequestInterceptor(); + this.registry = new InterceptorRegistry(); + this.webInterceptor1 = new TestWebRequestInterceptor(); + this.webInterceptor2 = new TestWebRequestInterceptor(); } @Test public void addInterceptor() { - registry.addInterceptor(interceptor1); + this.registry.addInterceptor(this.interceptor1); List interceptors = getInterceptorsForPath(null); - - assertEquals(Arrays.asList(interceptor1), interceptors); + assertEquals(Arrays.asList(this.interceptor1), interceptors); } @Test public void addTwoInterceptors() { - registry.addInterceptor(interceptor1); - registry.addInterceptor(interceptor2); + this.registry.addInterceptor(this.interceptor1); + this.registry.addInterceptor(this.interceptor2); List interceptors = getInterceptorsForPath(null); - - assertEquals(Arrays.asList(interceptor1, interceptor2), interceptors); + assertEquals(Arrays.asList(this.interceptor1, this.interceptor2), interceptors); } @Test public void addInterceptorsWithUrlPatterns() { - registry.addInterceptor(interceptor1).addPathPatterns("/path1/**").excludePathPatterns("/path1/secret"); - registry.addInterceptor(interceptor2).addPathPatterns("/path2"); + this.registry.addInterceptor(this.interceptor1).addPathPatterns("/path1/**").excludePathPatterns("/path1/secret"); + this.registry.addInterceptor(this.interceptor2).addPathPatterns("/path2"); - assertEquals(Arrays.asList(interceptor1), getInterceptorsForPath("/path1")); - assertEquals(Arrays.asList(interceptor2), getInterceptorsForPath("/path2")); + assertEquals(Arrays.asList(this.interceptor1), getInterceptorsForPath("/path1")); + assertEquals(Arrays.asList(this.interceptor2), getInterceptorsForPath("/path2")); assertEquals(Collections.emptyList(), getInterceptorsForPath("/path1/secret")); } @Test public void addWebRequestInterceptor() throws Exception { - registry.addWebRequestInterceptor(webRequestInterceptor1); + this.registry.addWebRequestInterceptor(this.webInterceptor1); List interceptors = getInterceptorsForPath(null); assertEquals(1, interceptors.size()); - verifyAdaptedInterceptor(interceptors.get(0), webRequestInterceptor1); + verifyWebInterceptor(interceptors.get(0), this.webInterceptor1); } @Test public void addWebRequestInterceptors() throws Exception { - registry.addWebRequestInterceptor(webRequestInterceptor1); - registry.addWebRequestInterceptor(webRequestInterceptor2); + this.registry.addWebRequestInterceptor(this.webInterceptor1); + this.registry.addWebRequestInterceptor(this.webInterceptor2); List interceptors = getInterceptorsForPath(null); assertEquals(2, interceptors.size()); - verifyAdaptedInterceptor(interceptors.get(0), webRequestInterceptor1); - verifyAdaptedInterceptor(interceptors.get(1), webRequestInterceptor2); + verifyWebInterceptor(interceptors.get(0), this.webInterceptor1); + verifyWebInterceptor(interceptors.get(1), this.webInterceptor2); } @Test public void addInterceptorsWithCustomPathMatcher() { PathMatcher pathMatcher = Mockito.mock(PathMatcher.class); - registry.addInterceptor(interceptor1).addPathPatterns("/path1/**").pathMatcher(pathMatcher); + this.registry.addInterceptor(interceptor1).addPathPatterns("/path1/**").pathMatcher(pathMatcher); - MappedInterceptor mappedInterceptor = (MappedInterceptor) registry.getInterceptors().get(0); + MappedInterceptor mappedInterceptor = (MappedInterceptor) this.registry.getInterceptors().get(0); assertSame(pathMatcher, mappedInterceptor.getPathMatcher()); } @Test public void addWebRequestInterceptorsWithUrlPatterns() throws Exception { - registry.addWebRequestInterceptor(webRequestInterceptor1).addPathPatterns("/path1"); - registry.addWebRequestInterceptor(webRequestInterceptor2).addPathPatterns("/path2"); + this.registry.addWebRequestInterceptor(this.webInterceptor1).addPathPatterns("/path1"); + this.registry.addWebRequestInterceptor(this.webInterceptor2).addPathPatterns("/path2"); List interceptors = getInterceptorsForPath("/path1"); assertEquals(1, interceptors.size()); - verifyAdaptedInterceptor(interceptors.get(0), webRequestInterceptor1); + verifyWebInterceptor(interceptors.get(0), this.webInterceptor1); interceptors = getInterceptorsForPath("/path2"); assertEquals(1, interceptors.size()); - verifyAdaptedInterceptor(interceptors.get(0), webRequestInterceptor2); + verifyWebInterceptor(interceptors.get(0), this.webInterceptor2); } - /** - * Test for SPR-11130 - */ + // SPR-11130 + @Test public void addInterceptorWithExcludePathPatternOnly() { - registry.addInterceptor(interceptor1).excludePathPatterns("/path1/secret"); - registry.addInterceptor(interceptor2).addPathPatterns("/path2"); + this.registry.addInterceptor(this.interceptor1).excludePathPatterns("/path1/secret"); + this.registry.addInterceptor(this.interceptor2).addPathPatterns("/path2"); - assertEquals(Arrays.asList(interceptor1), getInterceptorsForPath("/path1")); - assertEquals(Arrays.asList(interceptor1, interceptor2), getInterceptorsForPath("/path2")); + assertEquals(Arrays.asList(this.interceptor1), getInterceptorsForPath("/path1")); + assertEquals(Arrays.asList(this.interceptor1, this.interceptor2), getInterceptorsForPath("/path2")); assertEquals(Collections.emptyList(), getInterceptorsForPath("/path1/secret")); } @@ -155,7 +153,7 @@ public class InterceptorRegistryTests { private List getInterceptorsForPath(String lookupPath) { PathMatcher pathMatcher = new AntPathMatcher(); List result = new ArrayList(); - for (Object interceptor : registry.getInterceptors()) { + for (Object interceptor : this.registry.getInterceptors()) { if (interceptor instanceof MappedInterceptor) { MappedInterceptor mappedInterceptor = (MappedInterceptor) interceptor; if (mappedInterceptor.matches(lookupPath, pathMatcher)) { @@ -172,10 +170,9 @@ public class InterceptorRegistryTests { return result; } - private void verifyAdaptedInterceptor(HandlerInterceptor interceptor, TestWebRequestInterceptor webInterceptor) - throws Exception { + private void verifyWebInterceptor(HandlerInterceptor interceptor, TestWebRequestInterceptor webInterceptor) throws Exception { assertTrue(interceptor instanceof WebRequestHandlerInterceptorAdapter); - interceptor.preHandle(request, response, null); + interceptor.preHandle(this.request, this.response, null); assertTrue(webInterceptor.preHandleInvoked); } @@ -195,7 +192,6 @@ public class InterceptorRegistryTests { @Override public void afterCompletion(WebRequest request, Exception ex) throws Exception { } - } }