This is an automated email from the ASF dual-hosted git repository.

lprimak pushed a commit to branch 3.x
in repository https://gitbox.apache.org/repos/asf/shiro.git

commit 0a1e5206ef57c754c85cf0e9bf92dd84c830a6cc
Author: lprimak <[email protected]>
AuthorDate: Mon Feb 2 16:43:20 2026 -0600

    re-enable spring module
---
 .../samples/spring/config/ApplicationConfig.java   |  3 +-
 support/pom.xml                                    |  2 +-
 .../web/ShiroWebSpringAutoConfigurationTest.groovy |  3 +-
 .../spring/ShiroEventBusBeanPostProcessor.java     |  9 ++----
 .../AuthorizationAttributeSourceAdvisor.java       |  3 +-
 .../shiro/spring/web/ShiroFilterFactoryBean.java   | 37 ++++++++++++----------
 .../web/config/ShiroRequestMappingConfig.java      | 33 -------------------
 .../spring/config/ShiroConfigurationTest.groovy    |  3 +-
 ...oConfigurationWithOptionalComponentsTest.groovy |  3 +-
 .../spring/config/ShiroWebConfigurationTest.groovy |  3 +-
 .../config/ShiroWebFilterConfigurationTest.groovy  |  3 +-
 11 files changed, 32 insertions(+), 70 deletions(-)

diff --git 
a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/config/ApplicationConfig.java
 
b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/config/ApplicationConfig.java
index 36c8a8d03..d5a16d69e 100644
--- 
a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/config/ApplicationConfig.java
+++ 
b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/config/ApplicationConfig.java
@@ -49,8 +49,7 @@ import javax.sql.DataSource;
         ShiroAnnotationProcessorConfiguration.class,
         ShiroWebConfiguration.class,
         ShiroWebFilterConfiguration.class,
-        JspViewsConfig.class,
-        ShiroRequestMappingConfig.class})
+        JspViewsConfig.class})
 @ComponentScan("org.apache.shiro.samples.spring")
 public class ApplicationConfig {
 
diff --git a/support/pom.xml b/support/pom.xml
index 6433b855f..1c78ce0b3 100644
--- a/support/pom.xml
+++ b/support/pom.xml
@@ -42,13 +42,13 @@
         <module>jaxrs</module>
         <module>cdi</module>
         <module>jakarta-ee</module>
+        <module>spring</module>
     </modules>
 
     <profiles>
         <profile>
             <id>deferred-for-3x</id>
             <modules>
-                <module>spring</module>
                 <module>spring-boot</module>
                 <module>features</module>
             </modules>
diff --git 
a/support/spring-boot/spring-boot-starter/src/test/groovy/org/apache/shiro/spring/boot/autoconfigure/web/ShiroWebSpringAutoConfigurationTest.groovy
 
b/support/spring-boot/spring-boot-starter/src/test/groovy/org/apache/shiro/spring/boot/autoconfigure/web/ShiroWebSpringAutoConfigurationTest.groovy
index 8627ccbc1..5a6612dc6 100644
--- 
a/support/spring-boot/spring-boot-starter/src/test/groovy/org/apache/shiro/spring/boot/autoconfigure/web/ShiroWebSpringAutoConfigurationTest.groovy
+++ 
b/support/spring-boot/spring-boot-starter/src/test/groovy/org/apache/shiro/spring/boot/autoconfigure/web/ShiroWebSpringAutoConfigurationTest.groovy
@@ -32,7 +32,6 @@ import org.apache.shiro.web.servlet.AbstractShiroFilter
 import org.junit.jupiter.api.Test
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests
 
 import static org.hamcrest.Matchers.contains
 import static org.hamcrest.Matchers.equalTo
@@ -44,7 +43,7 @@ import static org.hamcrest.MatcherAssert.assertThat
  * @since 1.4.0
  */
 @SpringBootTest(classes = [ShiroWebAutoConfigurationTestApplication])
-class ShiroWebSpringAutoConfigurationTest extends 
AbstractJUnit4SpringContextTests {
+class ShiroWebSpringAutoConfigurationTest {
 
     @Autowired
     private SecurityManager securityManager
diff --git 
a/support/spring/src/main/java/org/apache/shiro/spring/ShiroEventBusBeanPostProcessor.java
 
b/support/spring/src/main/java/org/apache/shiro/spring/ShiroEventBusBeanPostProcessor.java
index 5f88f4363..45f513be9 100644
--- 
a/support/spring/src/main/java/org/apache/shiro/spring/ShiroEventBusBeanPostProcessor.java
+++ 
b/support/spring/src/main/java/org/apache/shiro/spring/ShiroEventBusBeanPostProcessor.java
@@ -26,6 +26,7 @@ import org.apache.shiro.util.CollectionUtils;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 
+import java.lang.reflect.Method;
 import java.util.List;
 
 /**
@@ -49,11 +50,6 @@ public class ShiroEventBusBeanPostProcessor implements 
BeanPostProcessor {
         this.eventBus = eventBus;
     }
 
-    @Override
-    public Object postProcessBeforeInitialization(Object bean, String 
beanName) throws BeansException {
-        return bean;
-    }
-
     @Override
     public Object postProcessAfterInitialization(Object bean, String beanName) 
throws BeansException {
         if (bean instanceof EventBusAware aware) {
@@ -66,8 +62,7 @@ public class ShiroEventBusBeanPostProcessor implements 
BeanPostProcessor {
     }
 
     private boolean isEventSubscriber(Object bean) {
-        List annotatedMethods = 
ClassUtils.getAnnotatedMethods(bean.getClass(), Subscribe.class);
+        List<Method> annotatedMethods = 
ClassUtils.getAnnotatedMethods(bean.getClass(), Subscribe.class);
         return !CollectionUtils.isEmpty(annotatedMethods);
     }
-
 }
diff --git 
a/support/spring/src/main/java/org/apache/shiro/spring/security/interceptor/AuthorizationAttributeSourceAdvisor.java
 
b/support/spring/src/main/java/org/apache/shiro/spring/security/interceptor/AuthorizationAttributeSourceAdvisor.java
index 443c32d84..f8feee4bc 100644
--- 
a/support/spring/src/main/java/org/apache/shiro/spring/security/interceptor/AuthorizationAttributeSourceAdvisor.java
+++ 
b/support/spring/src/main/java/org/apache/shiro/spring/security/interceptor/AuthorizationAttributeSourceAdvisor.java
@@ -42,6 +42,7 @@ public class AuthorizationAttributeSourceAdvisor extends 
StaticMethodMatcherPoin
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(AuthorizationAttributeSourceAdvisor.class);
 
+    @SuppressWarnings("rawtypes")
     private static final Class<? extends Annotation>[] 
AUTHZ_ANNOTATION_CLASSES =
             new Class[] {
                     RequiresPermissions.class, RequiresRoles.class,
@@ -81,7 +82,7 @@ public class AuthorizationAttributeSourceAdvisor extends 
StaticMethodMatcherPoin
      * @return <tt>true</tt> if the method has a Shiro annotation, false 
otherwise.
      * @see 
org.springframework.aop.MethodMatcher#matches(java.lang.reflect.Method, Class)
      */
-    public boolean matches(Method method, Class targetClass) {
+    public boolean matches(Method method, Class<?> targetClass) {
         Method m = method;
 
         if (isAuthzAnnotationPresent(m)) {
diff --git 
a/support/spring/src/main/java/org/apache/shiro/spring/web/ShiroFilterFactoryBean.java
 
b/support/spring/src/main/java/org/apache/shiro/spring/web/ShiroFilterFactoryBean.java
index a8e997522..0cc22c92a 100644
--- 
a/support/spring/src/main/java/org/apache/shiro/spring/web/ShiroFilterFactoryBean.java
+++ 
b/support/spring/src/main/java/org/apache/shiro/spring/web/ShiroFilterFactoryBean.java
@@ -119,7 +119,8 @@ import java.util.Map;
  * @see org.springframework.web.filter.DelegatingFilterProxy 
DelegatingFilterProxy
  * @since 1.0
  */
-public class ShiroFilterFactoryBean implements FactoryBean, BeanPostProcessor {
+@SuppressWarnings("checkstyle:MethodCount")
+public class ShiroFilterFactoryBean implements FactoryBean<Filter>, 
BeanPostProcessor {
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(ShiroFilterFactoryBean.class);
 
@@ -143,11 +144,11 @@ public class ShiroFilterFactoryBean implements 
FactoryBean, BeanPostProcessor {
     private ShiroFilterConfiguration filterConfiguration;
 
     public ShiroFilterFactoryBean() {
-        this.filters = new LinkedHashMap<String, Filter>();
+        this.filters = new LinkedHashMap<>();
         this.globalFilters = new ArrayList<>();
         this.globalFilters.add(DefaultFilter.invalidRequest.name());
         //order matters!
-        this.filterChainDefinitionMap = new LinkedHashMap<String, String>();
+        this.filterChainDefinitionMap = new LinkedHashMap<>();
         this.filterConfiguration = new ShiroFilterConfiguration();
     }
 
@@ -210,7 +211,7 @@ public class ShiroFilterFactoryBean implements FactoryBean, 
BeanPostProcessor {
      * configure the 'loginUrl' property manually on each filter instance, and 
instead that can be configured once
      * via this attribute.
      * <p/>
-     * <b>*</b>If a filter already has already been explicitly configured with 
a value, it will
+     * <b>*</b>If a filter has already been explicitly configured with a 
value, it will
      * <em>not</em> receive this value. Individual filter configuration 
overrides this global convenience property.
      *
      * @param loginUrl the application's login URL to apply to as a 
convenience to all discovered
@@ -242,7 +243,7 @@ public class ShiroFilterFactoryBean implements FactoryBean, 
BeanPostProcessor {
      * configure the 'successUrl' property manually on each filter instance, 
and instead that can be configured once
      * via this attribute.
      * <p/>
-     * <b>*</b>If a filter already has already been explicitly configured with 
a value, it will
+     * <b>*</b>If a filter has already been explicitly configured with a 
value, it will
      * <em>not</em> receive this value. Individual filter configuration 
overrides this global convenience property.
      *
      * @param successUrl the application's after-login success URL to apply to 
as a convenience to all discovered
@@ -274,7 +275,7 @@ public class ShiroFilterFactoryBean implements FactoryBean, 
BeanPostProcessor {
      * configure the 'unauthorizedUrl' property manually on each filter 
instance, and instead that can be configured once
      * via this attribute.
      * <p/>
-     * <b>*</b>If a filter already has already been explicitly configured with 
a value, it will
+     * <b>*</b>If a filter has already been explicitly configured with a 
value, it will
      * <em>not</em> receive this value. Individual filter configuration 
overrides this global convenience property.
      *
      * @param unauthorizedUrl the application's 'unauthorized' URL to apply to 
as a convenience to all discovered
@@ -286,15 +287,15 @@ public class ShiroFilterFactoryBean implements 
FactoryBean, BeanPostProcessor {
     }
 
     /**
-     * @return true if filter chain matching should be case insensitive.
+     * @return true if filter chain matching should be case-insensitive.
      */
     public boolean isCaseInsensitive() {
         return caseInsensitive;
     }
 
     /**
-     * Sets whether filter chain matching should be case insensitive.
-     * @param caseInsensitive true if filter chain matching should be case 
insensitive.
+     * Sets whether filter chain matching should be case-insensitive.
+     * @param caseInsensitive true if filter chain matching should be 
case-insensitive.
      */
     public void setCaseInsensitive(boolean caseInsensitive) {
         this.caseInsensitive = caseInsensitive;
@@ -414,7 +415,8 @@ public class ShiroFilterFactoryBean implements FactoryBean, 
BeanPostProcessor {
      * @return the application's Shiro Filter instance used to filter incoming 
web requests.
      * @throws Exception if there is a problem creating the {@code Filter} 
instance.
      */
-    public Object getObject() throws Exception {
+    @Override
+    public Filter getObject() throws Exception {
         if (instance == null) {
             instance = createInstance();
         }
@@ -426,7 +428,7 @@ public class ShiroFilterFactoryBean implements FactoryBean, 
BeanPostProcessor {
      *
      * @return <code>{@link 
org.apache.shiro.web.servlet.AbstractShiroFilter}.class</code>
      */
-    public Class getObjectType() {
+    public Class<?> getObjectType() {
         return SpringShiroFilter.class;
     }
 
@@ -435,6 +437,7 @@ public class ShiroFilterFactoryBean implements FactoryBean, 
BeanPostProcessor {
      *
      * @return {@code true} always.  There is almost always only ever 1 Shiro 
{@code Filter} per web application.
      */
+    @Override
     public boolean isSingleton() {
         return true;
     }
@@ -585,6 +588,7 @@ public class ShiroFilterFactoryBean implements FactoryBean, 
BeanPostProcessor {
      * instance to the internal {@link #setFilters(java.util.Map) filters map} 
that will be referenced
      * later during filter chain construction.
      */
+    @Override
     public Object postProcessBeforeInitialization(Object bean, String 
beanName) throws BeansException {
         if (bean instanceof Filter filter) {
             LOGGER.debug("Found filter chain candidate filter '{}'", beanName);
@@ -600,6 +604,7 @@ public class ShiroFilterFactoryBean implements FactoryBean, 
BeanPostProcessor {
      * Does nothing - only exists to satisfy the BeanPostProcessor interface 
and immediately returns the
      * {@code bean} argument.
      */
+    @Override
     public Object postProcessAfterInitialization(Object bean, String beanName) 
throws BeansException {
         return bean;
     }
@@ -615,15 +620,15 @@ public class ShiroFilterFactoryBean implements 
FactoryBean, BeanPostProcessor {
      */
     private static final class SpringShiroFilter extends AbstractShiroFilter {
 
-        protected SpringShiroFilter(WebSecurityManager webSecurityManager,
-                                    FilterChainResolver resolver,
-                                    ShiroFilterConfiguration 
filterConfiguration) {
+        private SpringShiroFilter(WebSecurityManager webSecurityManager,
+                                  FilterChainResolver resolver,
+                                  ShiroFilterConfiguration 
filterConfiguration) {
             super();
             if (webSecurityManager == null) {
                 throw new IllegalArgumentException("WebSecurityManager 
property cannot be null.");
             }
-            setSecurityManager(webSecurityManager);
-            setShiroFilterConfiguration(filterConfiguration);
+            super.setSecurityManager(webSecurityManager);
+            super.setShiroFilterConfiguration(filterConfiguration);
 
             if (resolver != null) {
                 setFilterChainResolver(resolver);
diff --git 
a/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroRequestMappingConfig.java
 
b/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroRequestMappingConfig.java
deleted file mode 100644
index 56f4cad08..000000000
--- 
a/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroRequestMappingConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.shiro.spring.web.config;
-
-import org.apache.shiro.spring.web.ShiroUrlPathHelper;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Configuration;
-import 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
-
-@Configuration
-public class ShiroRequestMappingConfig {
-
-    public ShiroRequestMappingConfig(
-            @Qualifier("requestMappingHandlerMapping") 
RequestMappingHandlerMapping requestMappingHandlerMapping) {
-        requestMappingHandlerMapping.setUrlPathHelper(new 
ShiroUrlPathHelper());
-    }
-}
diff --git 
a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationTest.groovy
 
b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationTest.groovy
index d3e09c419..a365cd194 100644
--- 
a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationTest.groovy
+++ 
b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationTest.groovy
@@ -31,7 +31,6 @@ import org.junit.jupiter.api.extension.ExtendWith
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.test.context.junit.jupiter.SpringExtension
 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests
 
 import static org.hamcrest.MatcherAssert.assertThat
 import static org.hamcrest.Matchers.*
@@ -42,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.*
  */
 @SpringJUnitConfig(classes = [RealmTestConfiguration, ShiroConfiguration])
 @ExtendWith(SpringExtension.class)
-class ShiroConfigurationTest extends AbstractJUnit4SpringContextTests {
+class ShiroConfigurationTest {
 
     @Autowired
     private SecurityManager securityManager
diff --git 
a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationWithOptionalComponentsTest.groovy
 
b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationWithOptionalComponentsTest.groovy
index e9ecb35cd..676e1066c 100644
--- 
a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationWithOptionalComponentsTest.groovy
+++ 
b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationWithOptionalComponentsTest.groovy
@@ -32,7 +32,6 @@ import org.junit.jupiter.api.extension.ExtendWith
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.test.context.junit.jupiter.SpringExtension
 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests
 
 import static org.junit.jupiter.api.Assertions.*
 import static org.hamcrest.Matchers.*
@@ -43,7 +42,7 @@ import static org.hamcrest.MatcherAssert.*
  */
 @SpringJUnitConfig(classes = [RealmTestConfiguration, 
OptionalComponentsTestConfiguration, ShiroConfiguration, 
ShiroAnnotationProcessorConfiguration])
 @ExtendWith(SpringExtension.class)
-class ShiroConfigurationWithOptionalComponentsTest extends 
AbstractJUnit4SpringContextTests {
+class ShiroConfigurationWithOptionalComponentsTest {
 
     @Autowired
     private SecurityManager securityManager
diff --git 
a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebConfigurationTest.groovy
 
b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebConfigurationTest.groovy
index d33ceb250..6a76fae2d 100644
--- 
a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebConfigurationTest.groovy
+++ 
b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebConfigurationTest.groovy
@@ -34,7 +34,6 @@ import org.junit.jupiter.api.extension.ExtendWith
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.test.context.junit.jupiter.SpringExtension
 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests
 
 import static org.hamcrest.MatcherAssert.assertThat
 import static org.hamcrest.Matchers.*
@@ -45,7 +44,7 @@ import static org.junit.jupiter.api.Assertions.*
  */
 @SpringJUnitConfig(classes = [RealmTestConfiguration, ShiroConfiguration, 
ShiroWebConfiguration, ShiroWebFilterConfiguration])
 @ExtendWith(SpringExtension.class)
-class ShiroWebConfigurationTest extends AbstractJUnit4SpringContextTests {
+class ShiroWebConfigurationTest {
 
     @Autowired
     private SecurityManager securityManager
diff --git 
a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebFilterConfigurationTest.groovy
 
b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebFilterConfigurationTest.groovy
index e5223432c..cdc4ecca2 100644
--- 
a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebFilterConfigurationTest.groovy
+++ 
b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebFilterConfigurationTest.groovy
@@ -38,7 +38,6 @@ import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.Configuration
 import org.springframework.test.context.junit.jupiter.SpringExtension
 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests
 import org.springframework.test.context.web.WebAppConfiguration
 
 import jakarta.servlet.Filter
@@ -60,7 +59,7 @@ import static org.hamcrest.Matchers.is;
 @WebAppConfiguration
 @SpringJUnitConfig(classes = [RealmTestConfiguration, FilterConfiguration, 
ShiroConfiguration, ShiroWebFilterConfiguration])
 @ExtendWith(SpringExtension.class)
-class ShiroWebFilterConfigurationTest extends AbstractJUnit4SpringContextTests 
{
+class ShiroWebFilterConfigurationTest {
 
     @Autowired
     private SecurityManager securityManager

Reply via email to