diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/filter/ErrorPageSecurityFilter.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/filter/ErrorPageSecurityFilter.java index e6b515b2460..7be397939bc 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/filter/ErrorPageSecurityFilter.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/servlet/filter/ErrorPageSecurityFilter.java @@ -109,6 +109,10 @@ public class ErrorPageSecurityFilter implements Filter { } } + @Override + public void destroy() { + } + /** * {@link WebInvocationPrivilegeEvaluator} that always allows access. */ diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/filter/ErrorPageSecurityFilterTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/filter/ErrorPageSecurityFilterTests.java index da9639d66ef..6decc784fb1 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/filter/ErrorPageSecurityFilterTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/filter/ErrorPageSecurityFilterTests.java @@ -16,9 +16,18 @@ package org.springframework.boot.web.servlet.filter; +<<<<<<< HEAD import jakarta.servlet.DispatcherType; import jakarta.servlet.FilterChain; import jakarta.servlet.RequestDispatcher; +======= +import java.lang.reflect.Method; + +import javax.servlet.DispatcherType; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.RequestDispatcher; +>>>>>>> local27x/2.7.x import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -32,6 +41,7 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.access.WebInvocationPrivilegeEvaluator; +import org.springframework.util.ReflectionUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -145,4 +155,18 @@ class ErrorPageSecurityFilterTests { verify(this.privilegeEvaluator).isAllowed(eq("/dispatcher/path/error"), any()); } + @Test + void filterIsCompatibleWithServlet31() { + Method[] methods = Filter.class.getDeclaredMethods(); + for (Method method : methods) { + if (method.isDefault()) { + Method securityFilterMethod = ReflectionUtils.findMethod(ErrorPageSecurityFilter.class, + method.getName(), method.getParameterTypes()); + assertThat(securityFilterMethod).isNotNull(); + assertThat(securityFilterMethod.getDeclaringClass()).as(method.getName()) + .isEqualTo(ErrorPageSecurityFilter.class); + } + } + } + }