From 09d035a107df9dacf3bb4d7d021aeefe23ea2ca6 Mon Sep 17 00:00:00 2001 From: Vedran Pavic Date: Thu, 28 May 2020 09:04:55 +0200 Subject: [PATCH] Deprecate HandlerInterceptorAdapter This commit deprecates HandlerInterceptorAdapter, as (Async)HandlerInterceptor provide the same convenience by themselves with default methods. Additionally, existing HandlerInterceptorAdapter subclasses have been reworked to implement (Async)HandlerInterceptor. --- .../web/servlet/HandlerInterceptor.java | 3 +- .../handler/AbstractHandlerMapping.java | 2 +- .../handler/AbstractUrlHandlerMapping.java | 7 +-- .../ConversionServiceExposingInterceptor.java | 5 ++- .../handler/HandlerInterceptorAdapter.java | 43 ++----------------- .../UserRoleAuthorizationInterceptor.java | 5 ++- .../servlet/i18n/LocaleChangeInterceptor.java | 6 +-- ...esourceUrlProviderExposingInterceptor.java | 6 +-- .../servlet/theme/ThemeChangeInterceptor.java | 6 +-- ...RequestMappingInfoHandlerMappingTests.java | 5 +-- 10 files changed, 26 insertions(+), 62 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/HandlerInterceptor.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/HandlerInterceptor.java index 1bcdad561a9f..355a5da6d669 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/HandlerInterceptor.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/HandlerInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 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. @@ -66,7 +66,6 @@ * @author Juergen Hoeller * @since 20.06.2003 * @see HandlerExecutionChain#getInterceptors - * @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter * @see org.springframework.web.servlet.handler.AbstractHandlerMapping#setInterceptors * @see org.springframework.web.servlet.handler.UserRoleAuthorizationInterceptor * @see org.springframework.web.servlet.i18n.LocaleChangeInterceptor diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java index beee0ce55d3b..a1279b337543 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java @@ -560,7 +560,7 @@ public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { } - private class CorsInterceptor extends HandlerInterceptorAdapter implements CorsConfigurationSource { + private class CorsInterceptor implements HandlerInterceptor, CorsConfigurationSource { @Nullable private final CorsConfiguration config; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java index 861363c76dde..0f8a65df1d79 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 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. @@ -32,6 +32,7 @@ import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.web.servlet.HandlerExecutionChain; +import org.springframework.web.servlet.HandlerInterceptor; /** * Abstract base class for URL-mapped {@link org.springframework.web.servlet.HandlerMapping} @@ -399,7 +400,7 @@ protected boolean supportsTypeLevelMappings() { * {@link AbstractUrlHandlerMapping#PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE} attribute. * @see AbstractUrlHandlerMapping#exposePathWithinMapping */ - private class PathExposingHandlerInterceptor extends HandlerInterceptorAdapter { + private class PathExposingHandlerInterceptor implements HandlerInterceptor { private final String bestMatchingPattern; @@ -425,7 +426,7 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons * {@link AbstractUrlHandlerMapping#URI_TEMPLATE_VARIABLES_ATTRIBUTE} attribute. * @see AbstractUrlHandlerMapping#exposePathWithinMapping */ - private class UriTemplateVariablesHandlerInterceptor extends HandlerInterceptorAdapter { + private class UriTemplateVariablesHandlerInterceptor implements HandlerInterceptor { private final Map uriTemplateVariables; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/ConversionServiceExposingInterceptor.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/ConversionServiceExposingInterceptor.java index e7fd417eb691..a8e3b0ae3383 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/ConversionServiceExposingInterceptor.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/ConversionServiceExposingInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2020 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,6 +24,7 @@ import org.springframework.core.convert.ConversionService; import org.springframework.util.Assert; +import org.springframework.web.servlet.HandlerInterceptor; /** * Interceptor that places the configured {@link ConversionService} in request scope @@ -36,7 +37,7 @@ * @author Keith Donald * @since 3.0.1 */ -public class ConversionServiceExposingInterceptor extends HandlerInterceptorAdapter { +public class ConversionServiceExposingInterceptor implements HandlerInterceptor { private final ConversionService conversionService; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerInterceptorAdapter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerInterceptorAdapter.java index 63af188f5d4c..c1eb6eb33832 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerInterceptorAdapter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerInterceptorAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2020 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. @@ -16,12 +16,7 @@ package org.springframework.web.servlet.handler; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.lang.Nullable; import org.springframework.web.servlet.AsyncHandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; /** * Abstract adapter class for the {@link AsyncHandlerInterceptor} interface, @@ -29,41 +24,9 @@ * * @author Juergen Hoeller * @since 05.12.2003 + * @deprecated as of 5.3 in favor of {@link AsyncHandlerInterceptor} */ +@Deprecated public abstract class HandlerInterceptorAdapter implements AsyncHandlerInterceptor { - /** - * This implementation always returns {@code true}. - */ - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { - - return true; - } - - /** - * This implementation is empty. - */ - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, - @Nullable ModelAndView modelAndView) throws Exception { - } - - /** - * This implementation is empty. - */ - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, - @Nullable Exception ex) throws Exception { - } - - /** - * This implementation is empty. - */ - @Override - public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, - Object handler) throws Exception { - } - } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/UserRoleAuthorizationInterceptor.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/UserRoleAuthorizationInterceptor.java index caa320f569f6..a4a49ed09e52 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/UserRoleAuthorizationInterceptor.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/UserRoleAuthorizationInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2020 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. @@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletResponse; import org.springframework.lang.Nullable; +import org.springframework.web.servlet.HandlerInterceptor; /** * Interceptor that checks the authorization of the current user via the @@ -32,7 +33,7 @@ * @since 20.06.2003 * @see javax.servlet.http.HttpServletRequest#isUserInRole */ -public class UserRoleAuthorizationInterceptor extends HandlerInterceptorAdapter { +public class UserRoleAuthorizationInterceptor implements HandlerInterceptor { @Nullable private String[] authorizedRoles; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/LocaleChangeInterceptor.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/LocaleChangeInterceptor.java index a50554701d07..8e64ea6ed932 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/LocaleChangeInterceptor.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/LocaleChangeInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 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. @@ -28,8 +28,8 @@ import org.springframework.lang.Nullable; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; +import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.LocaleResolver; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.support.RequestContextUtils; /** @@ -41,7 +41,7 @@ * @since 20.06.2003 * @see org.springframework.web.servlet.LocaleResolver */ -public class LocaleChangeInterceptor extends HandlerInterceptorAdapter { +public class LocaleChangeInterceptor implements HandlerInterceptor { /** * Default name of the locale specification parameter: "locale". diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProviderExposingInterceptor.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProviderExposingInterceptor.java index 49ec8e25d8bb..c83be5a76eba 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProviderExposingInterceptor.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProviderExposingInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 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. @@ -21,7 +21,7 @@ import org.springframework.util.Assert; import org.springframework.web.bind.ServletRequestBindingException; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; +import org.springframework.web.servlet.HandlerInterceptor; /** * An interceptor that exposes the {@link ResourceUrlProvider} instance it @@ -30,7 +30,7 @@ * @author Rossen Stoyanchev * @since 4.1 */ -public class ResourceUrlProviderExposingInterceptor extends HandlerInterceptorAdapter { +public class ResourceUrlProviderExposingInterceptor implements HandlerInterceptor { /** * Name of the request attribute that holds the {@link ResourceUrlProvider}. diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/theme/ThemeChangeInterceptor.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/theme/ThemeChangeInterceptor.java index d46d39d3284a..152e9b19362e 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/theme/ThemeChangeInterceptor.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/theme/ThemeChangeInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2020 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. @@ -20,8 +20,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ThemeResolver; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.support.RequestContextUtils; /** @@ -32,7 +32,7 @@ * @since 20.06.2003 * @see org.springframework.web.servlet.ThemeResolver */ -public class ThemeChangeInterceptor extends HandlerInterceptorAdapter { +public class ThemeChangeInterceptor implements HandlerInterceptor { /** * Default name of the theme specification parameter: "theme". diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMappingTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMappingTests.java index 957cf36d614e..f8b6f7971ba8 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMappingTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/RequestMappingInfoHandlerMappingTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 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. @@ -48,7 +48,6 @@ import org.springframework.web.servlet.HandlerExecutionChain; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerMapping; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.handler.MappedInterceptor; import org.springframework.web.servlet.mvc.condition.ConsumesRequestCondition; import org.springframework.web.servlet.mvc.condition.HeadersRequestCondition; @@ -218,7 +217,7 @@ public void getHandlerProducibleMediaTypesAttribute() throws Exception { @Test public void getHandlerMappedInterceptors() throws Exception { String path = "/foo"; - HandlerInterceptor interceptor = new HandlerInterceptorAdapter() {}; + HandlerInterceptor interceptor = new HandlerInterceptor() {}; MappedInterceptor mappedInterceptor = new MappedInterceptor(new String[] {path}, interceptor); TestRequestMappingInfoHandlerMapping mapping = new TestRequestMappingInfoHandlerMapping();