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

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


The following commit(s) were added to refs/heads/main by this push:
     new 9f634a5f4 chore: fix CodeQL issues (#2915)
9f634a5f4 is described below

commit 9f634a5f46036caa41feb2d34cd6f6537b19cfda
Author: Lenny Primak <[email protected]>
AuthorDate: Sun Oct 18 12:20:43 2026 -0400

    chore: fix CodeQL issues (#2915)
    
    * chore: fix CodeQL issues
    
    * delombok for javadoc
    
    * delombok: cleanup
---
 .../src/main/java/org/apache/shiro/config/Ini.java |  2 ++
 .../shiro/config/ogdl/ReflectionBuilder.java       |  4 +--
 core/pom.xml                                       |  2 ++
 .../shiro/authc/pam/ModularRealmAuthenticator.java |  1 +
 .../shiro/authz/permission/WildcardPermission.java |  6 ++--
 .../org/apache/shiro/ini/IniFactorySupport.java    |  1 +
 .../org/apache/shiro/realm/SimpleAccountRealm.java |  2 +-
 .../activedirectory/ActiveDirectoryRealm.java      |  2 ++
 .../org/apache/shiro/realm/jdbc/JdbcRealm.java     |  1 +
 .../apache/shiro/realm/ldap/AbstractLdapRealm.java |  3 ++
 .../apache/shiro/realm/ldap/DefaultLdapRealm.java  |  2 ++
 .../shiro/subject/support/DelegatingSubject.java   |  1 -
 .../java/org/apache/shiro/util/MapContext.java     |  1 +
 .../org/apache/shiro/SecurityUtilsUnwrapTest.java  |  8 ++---
 .../shiro/authc/ConcurrentAccessExceptionTest.java |  1 +
 .../authc/ExcessiveAttemptsExceptionTest.java      |  1 +
 .../authc/ExpiredCredentialsExceptionTest.java     |  1 +
 .../authc/IncorrectCredentialsExceptionTest.java   |  1 +
 .../shiro/authc/LockedAccountExceptionTest.java    |  1 +
 .../shiro/authc/UnknownAccountExceptionTest.java   |  1 +
 .../shiro/authc/pam/AllSuccessfulStrategyTest.java |  2 ++
 .../shiro/authz/AuthorizationExceptionTest.java    |  1 +
 .../shiro/authz/HostUnauthorizedExceptionTest.java |  1 +
 .../shiro/authz/ModularRealmAuthorizerTest.java    |  2 +-
 .../shiro/authz/UnauthenticatedExceptionTest.java  |  1 +
 .../shiro/authz/UnauthorizedExceptionTest.java     |  1 +
 .../apache/shiro/config/HashMapCacheManager.java   |  2 +-
 .../shiro/lang/io/SerializationExceptionTest.java  |  1 +
 .../activedirectory/ActiveDirectoryRealmTest.java  |  2 ++
 .../org/apache/shiro/realm/jdbc/JDBCRealmTest.java | 13 ++++----
 .../org/apache/shiro/realm/text/IniRealmTest.java  |  2 +-
 .../realm/text/TextConfigurationRealmTest.java     |  2 +-
 .../session/mgt/DefaultSessionManagerTest.java     |  2 +-
 .../shiro/session/mgt/DelegatingSessionTest.java   |  2 --
 .../subject/SimplePrincipalCollectionTest.java     |  5 +---
 .../shiro/testing/jakarta/ee/ShiroBeansIT.java     |  4 ---
 .../lang/io/ClassResolvingObjectInputStream.java   |  1 -
 pom.xml                                            | 35 +++++++++++++++++++++-
 .../src/main/java/QuickstartShiroModule.java       |  1 +
 .../shiro/samples/sprhib/security/SampleRealm.java |  2 ++
 .../shiro/samples/spring/web/JnlpController.java   |  1 +
 .../shiro/samples/spring/web/LogoutController.java |  1 +
 support/cdi/pom.xml                                |  2 ++
 .../org/apache/shiro/cdi/AnnotatedTypeWrapper.java |  2 +-
 .../apache/shiro/cdi/AnnotatedTypeWrapperTest.java |  6 ++--
 .../java/org/apache/shiro/cdi/AopHelperTest.java   |  2 +-
 .../shiro/guice/DestroyableInjectionListener.java  |  1 +
 .../guice/InitializableInjectionListener.java      |  1 +
 .../java/org/apache/shiro/guice/ShiroModule.java   |  5 ++--
 .../apache/shiro/guice/GuiceEnvironmentTest.java   |  2 +-
 .../apache/shiro/guice/aop/ShiroAopModuleTest.java |  2 ++
 support/jakarta-ee/pom.xml                         |  2 ++
 .../shiro/ee/filters/FormResubmitRequest.java      |  2 +-
 .../shiro/ee/filters/FormResubmitResponse.java     |  2 +-
 .../autoconfigure/ShiroWebFilterConfiguration.java |  1 +
 .../EventBusConsumersTestConfiguration.java        |  4 +--
 .../java/org/apache/shiro/tools/hasher/Hasher.java |  4 +--
 .../web/config/IniFilterChainResolverFactory.java  |  2 ++
 .../shiro/web/filter/PathMatchingFilter.java       |  1 +
 .../web/filter/authc/AuthenticationFilter.java     |  1 +
 .../web/filter/authc/FormAuthenticationFilter.java |  1 +
 .../web/filter/authc/HttpAuthenticationFilter.java |  1 +
 .../filter/authc/PassThruAuthenticationFilter.java |  1 +
 .../apache/shiro/web/filter/authc/UserFilter.java  |  2 ++
 .../web/filter/authz/AuthorizationFilter.java      |  1 +
 .../apache/shiro/web/filter/authz/HostFilter.java  |  1 +
 .../apache/shiro/web/filter/authz/IpFilter.java    |  1 +
 .../authz/PermissionsAuthorizationFilter.java      |  1 +
 .../apache/shiro/web/filter/authz/PortFilter.java  |  1 +
 .../web/filter/authz/RolesAuthorizationFilter.java |  1 +
 .../web/filter/mgt/SimpleNamedFilterList.java      |  2 ++
 .../shiro/web/servlet/ShiroHttpServletRequest.java |  2 +-
 .../org/apache/shiro/web/servlet/SimpleCookie.java |  2 +-
 .../web/session/mgt/DefaultWebSessionManager.java  |  2 ++
 74 files changed, 136 insertions(+), 51 deletions(-)

diff --git a/config/core/src/main/java/org/apache/shiro/config/Ini.java 
b/config/core/src/main/java/org/apache/shiro/config/Ini.java
index 59b38c111..f7b02572e 100644
--- a/config/core/src/main/java/org/apache/shiro/config/Ini.java
+++ b/config/core/src/main/java/org/apache/shiro/config/Ini.java
@@ -507,6 +507,7 @@ public final class Ini implements Map<String, Ini.Section> {
         return this.sections.remove(key);
     }
 
+    @Override
     public void putAll(Map<? extends String, ? extends Section> m) {
         this.sections.putAll(m);
     }
@@ -704,6 +705,7 @@ public final class Ini implements Map<String, Ini.Section> {
             return this.props.put(key, value);
         }
 
+        @Override
         public void putAll(Map<? extends String, ? extends String> m) {
             this.props.putAll(m);
         }
diff --git 
a/config/ogdl/src/main/java/org/apache/shiro/config/ogdl/ReflectionBuilder.java 
b/config/ogdl/src/main/java/org/apache/shiro/config/ogdl/ReflectionBuilder.java
index aa350452e..2251c75fc 100644
--- 
a/config/ogdl/src/main/java/org/apache/shiro/config/ogdl/ReflectionBuilder.java
+++ 
b/config/ogdl/src/main/java/org/apache/shiro/config/ogdl/ReflectionBuilder.java
@@ -871,7 +871,7 @@ public class ReflectionBuilder {
         }
     }
 
-    private final class BeanConfiguration {
+    private static final class BeanConfiguration {
 
         private final InstantiationStatement instantiationStatement;
         private final List<AssignmentStatement> assignments = new 
ArrayList<AssignmentStatement>();
@@ -941,7 +941,7 @@ public class ReflectionBuilder {
         }
     }
 
-    private abstract class Statement {
+    private abstract static class Statement {
 
         protected final String lhs;
         protected final String rhs;
diff --git a/core/pom.xml b/core/pom.xml
index aa203bfc7..ce037bd3b 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -32,6 +32,8 @@
     <packaging>bundle</packaging>
     <properties>
         <module.name>core</module.name>
+        <delombok.phase>prepare-package</delombok.phase>
+        <javadoc.sourcepath>${javadoc.delombok.sourcepath}</javadoc.sourcepath>
     </properties>
 
     <build>
diff --git 
a/core/src/main/java/org/apache/shiro/authc/pam/ModularRealmAuthenticator.java 
b/core/src/main/java/org/apache/shiro/authc/pam/ModularRealmAuthenticator.java
index 20e62cf89..f5f67ad43 100644
--- 
a/core/src/main/java/org/apache/shiro/authc/pam/ModularRealmAuthenticator.java
+++ 
b/core/src/main/java/org/apache/shiro/authc/pam/ModularRealmAuthenticator.java
@@ -269,6 +269,7 @@ public class ModularRealmAuthenticator extends 
AbstractAuthenticator {
      * @throws AuthenticationException if the user could not be authenticated 
or the user is denied authentication
      *                                 for the given principal and credentials.
      */
+    @Override
     protected AuthenticationInfo doAuthenticate(AuthenticationToken 
authenticationToken) throws AuthenticationException {
         assertRealmsConfigured();
         Collection<Realm> realms = getRealms();
diff --git 
a/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java 
b/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java
index c9e0b88de..a3f17166a 100644
--- 
a/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java
+++ 
b/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java
@@ -150,7 +150,7 @@ public class WildcardPermission implements Permission, 
Serializable {
         wildcardString = StringUtils.clean(wildcardString);
 
         if (wildcardString == null || wildcardString.isEmpty()) {
-            throw new IllegalArgumentException("Wildcard string cannot be null 
or empty."
+            throw new IllegalArgumentException("Wildcard string cannot be null 
or empty. "
                     + "Make sure permission strings are properly formatted.");
         }
 
@@ -165,14 +165,14 @@ public class WildcardPermission implements Permission, 
Serializable {
             Set<String> subparts = 
CollectionUtils.asSet(part.split(SUBPART_DIVIDER_TOKEN));
 
             if (subparts.isEmpty()) {
-                throw new IllegalArgumentException("Wildcard string cannot 
contain parts with only dividers."
+                throw new IllegalArgumentException("Wildcard string cannot 
contain parts with only dividers. "
                         + "Make sure permission strings are properly 
formatted.");
             }
             this.parts.add(subparts);
         }
 
         if (this.parts.isEmpty()) {
-            throw new IllegalArgumentException("Wildcard string cannot contain 
only dividers."
+            throw new IllegalArgumentException("Wildcard string cannot contain 
only dividers. "
                         + "Make sure permission strings are properly 
formatted.");
         }
     }
diff --git a/core/src/main/java/org/apache/shiro/ini/IniFactorySupport.java 
b/core/src/main/java/org/apache/shiro/ini/IniFactorySupport.java
index 4fb2370bd..79c9469f2 100644
--- a/core/src/main/java/org/apache/shiro/ini/IniFactorySupport.java
+++ b/core/src/main/java/org/apache/shiro/ini/IniFactorySupport.java
@@ -137,6 +137,7 @@ public abstract class IniFactorySupport<T> extends 
AbstractFactory<T> {
      *
      * @return a new {@code SecurityManager} instance by using a configured 
INI source.
      */
+    @Override
     public T createInstance() {
         Ini ini = resolveIni();
 
diff --git a/core/src/main/java/org/apache/shiro/realm/SimpleAccountRealm.java 
b/core/src/main/java/org/apache/shiro/realm/SimpleAccountRealm.java
index 3da896bb7..db6c640cd 100644
--- a/core/src/main/java/org/apache/shiro/realm/SimpleAccountRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/SimpleAccountRealm.java
@@ -146,7 +146,7 @@ public class SimpleAccountRealm extends AuthorizingRealm {
     }
 
     protected static Set<String> toSet(String delimited, String delimiter) {
-        if (delimited == null || delimited.trim().equals("")) {
+        if (delimited == null || delimited.trim().isEmpty()) {
             return null;
         }
 
diff --git 
a/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
 
b/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
index 85d465dbd..7272e22ce 100644
--- 
a/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
+++ 
b/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
@@ -103,6 +103,7 @@ public class ActiveDirectoryRealm extends AbstractLdapRealm 
{
      * @return an {@link AuthenticationInfo} instance containing information 
retrieved from LDAP.
      * @throws NamingException if any LDAP errors occur during the search.
      */
+    @Override
     protected AuthenticationInfo 
queryForAuthenticationInfo(AuthenticationToken token, LdapContextFactory 
ldapContextFactory)
             throws NamingException {
 
@@ -140,6 +141,7 @@ public class ActiveDirectoryRealm extends AbstractLdapRealm 
{
      * @return the AuthorizationInfo for the given Subject principal.
      * @throws NamingException if an error occurs when searching the LDAP 
server.
      */
+    @Override
     protected AuthorizationInfo queryForAuthorizationInfo(PrincipalCollection 
principals,
                                                           LdapContextFactory 
ldapContextFactory) throws NamingException {
 
diff --git a/core/src/main/java/org/apache/shiro/realm/jdbc/JdbcRealm.java 
b/core/src/main/java/org/apache/shiro/realm/jdbc/JdbcRealm.java
index aa567790c..70b224dfb 100644
--- a/core/src/main/java/org/apache/shiro/realm/jdbc/JdbcRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/jdbc/JdbcRealm.java
@@ -218,6 +218,7 @@ public class JdbcRealm extends AuthorizingRealm {
     |               M E T H O D S               |
     ============================================*/
 
+    @Override
     protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken 
token) throws AuthenticationException {
 
         UsernamePasswordToken upToken = (UsernamePasswordToken) token;
diff --git 
a/core/src/main/java/org/apache/shiro/realm/ldap/AbstractLdapRealm.java 
b/core/src/main/java/org/apache/shiro/realm/ldap/AbstractLdapRealm.java
index e64425f4e..33c57441f 100644
--- a/core/src/main/java/org/apache/shiro/realm/ldap/AbstractLdapRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/ldap/AbstractLdapRealm.java
@@ -176,6 +176,7 @@ public abstract class AbstractLdapRealm extends 
AuthorizingRealm {
     |               M E T H O D S                |
     ============================================*/
 
+    @Override
     protected void onInit() {
         super.onInit();
         ensureContextFactory();
@@ -199,6 +200,7 @@ public abstract class AbstractLdapRealm extends 
AuthorizingRealm {
     }
 
 
+    @Override
     protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken 
token) throws AuthenticationException {
         AuthenticationInfo info;
         try {
@@ -214,6 +216,7 @@ public abstract class AbstractLdapRealm extends 
AuthorizingRealm {
     }
 
 
+    @Override
     protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection 
principals) {
         AuthorizationInfo info;
         try {
diff --git 
a/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java 
b/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
index 4856b3d07..1f00aea84 100644
--- a/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
@@ -287,6 +287,7 @@ public class DefaultLdapRealm extends AuthorizingRealm {
      * @throws AuthenticationException if the authentication attempt fails or 
if a
      *                                 {@link NamingException} occurs.
      */
+    @Override
     protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken 
token) throws AuthenticationException {
         AuthenticationInfo info;
         try {
@@ -305,6 +306,7 @@ public class DefaultLdapRealm extends AuthorizingRealm {
     }
 
 
+    @Override
     protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection 
principals) {
         AuthorizationInfo info;
         try {
diff --git 
a/core/src/main/java/org/apache/shiro/subject/support/DelegatingSubject.java 
b/core/src/main/java/org/apache/shiro/subject/support/DelegatingSubject.java
index 8430b07d4..60494e0c6 100644
--- a/core/src/main/java/org/apache/shiro/subject/support/DelegatingSubject.java
+++ b/core/src/main/java/org/apache/shiro/subject/support/DelegatingSubject.java
@@ -488,7 +488,6 @@ public class DelegatingSubject implements Subject {
                 previousPrincipals = this.principals;
             } else {
                 //always get the one behind the current:
-                assert stack != null;
                 previousPrincipals = stack.get(1);
             }
         }
diff --git a/core/src/main/java/org/apache/shiro/util/MapContext.java 
b/core/src/main/java/org/apache/shiro/util/MapContext.java
index 2cb97a8ba..7bf94bb64 100644
--- a/core/src/main/java/org/apache/shiro/util/MapContext.java
+++ b/core/src/main/java/org/apache/shiro/util/MapContext.java
@@ -124,6 +124,7 @@ public class MapContext implements Map<String, Object>, 
Serializable {
         return backingMap.remove(o);
     }
 
+    @Override
     public void putAll(Map<? extends String, ?> map) {
         backingMap.putAll(map);
     }
diff --git a/core/src/test/java/org/apache/shiro/SecurityUtilsUnwrapTest.java 
b/core/src/test/java/org/apache/shiro/SecurityUtilsUnwrapTest.java
index 7ec695291..acc126a75 100644
--- a/core/src/test/java/org/apache/shiro/SecurityUtilsUnwrapTest.java
+++ b/core/src/test/java/org/apache/shiro/SecurityUtilsUnwrapTest.java
@@ -108,17 +108,17 @@ class SecurityUtilsUnwrapTest {
         var dsm = unwrapSecurityManager(defaultSecurityManager, 
DefaultSecurityManager.class);
         assertThat(dsm).isEqualTo(defaultSecurityManager);
         
when(defaultSecurityManager.createSubject(subjectContext)).thenReturn(subject);
-        Subject subject = dsm.createSubject(subjectContext);
-        assertThat(subject).isEqualTo(this.subject);
+        Subject created = dsm.createSubject(subjectContext);
+        assertThat(created).isEqualTo(subject);
         verify(defaultSecurityManager).createSubject(subjectContext);
-        verifyNoMoreInteractions(defaultSecurityManager, this.subject, 
subjectContext);
+        verifyNoMoreInteractions(defaultSecurityManager, subject, 
subjectContext);
     }
 
     @Test
     void invalidCast() {
         SecurityManager wrapped = new Wrapped(defaultSecurityManager);
         assertThatExceptionOfType(ClassCastException.class).isThrownBy(() -> {
-            DefaultSecurityManager sm = (DefaultSecurityManager) wrapped;
+            DefaultSecurityManager.class.cast(wrapped);
         });
     }
 
diff --git 
a/core/src/test/java/org/apache/shiro/authc/ConcurrentAccessExceptionTest.java 
b/core/src/test/java/org/apache/shiro/authc/ConcurrentAccessExceptionTest.java
index 079785e07..ee1088f1b 100644
--- 
a/core/src/test/java/org/apache/shiro/authc/ConcurrentAccessExceptionTest.java
+++ 
b/core/src/test/java/org/apache/shiro/authc/ConcurrentAccessExceptionTest.java
@@ -30,6 +30,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class ConcurrentAccessExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return ConcurrentAccessException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authc/ExcessiveAttemptsExceptionTest.java 
b/core/src/test/java/org/apache/shiro/authc/ExcessiveAttemptsExceptionTest.java
index f25f0373c..1331e62d1 100644
--- 
a/core/src/test/java/org/apache/shiro/authc/ExcessiveAttemptsExceptionTest.java
+++ 
b/core/src/test/java/org/apache/shiro/authc/ExcessiveAttemptsExceptionTest.java
@@ -30,6 +30,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class ExcessiveAttemptsExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return ExcessiveAttemptsException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authc/ExpiredCredentialsExceptionTest.java
 
b/core/src/test/java/org/apache/shiro/authc/ExpiredCredentialsExceptionTest.java
index eef1337e7..f21b8768d 100644
--- 
a/core/src/test/java/org/apache/shiro/authc/ExpiredCredentialsExceptionTest.java
+++ 
b/core/src/test/java/org/apache/shiro/authc/ExpiredCredentialsExceptionTest.java
@@ -30,6 +30,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class ExpiredCredentialsExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return ExpiredCredentialsException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authc/IncorrectCredentialsExceptionTest.java
 
b/core/src/test/java/org/apache/shiro/authc/IncorrectCredentialsExceptionTest.java
index 730223663..5e73ef4aa 100644
--- 
a/core/src/test/java/org/apache/shiro/authc/IncorrectCredentialsExceptionTest.java
+++ 
b/core/src/test/java/org/apache/shiro/authc/IncorrectCredentialsExceptionTest.java
@@ -30,6 +30,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class IncorrectCredentialsExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return IncorrectCredentialsException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authc/LockedAccountExceptionTest.java 
b/core/src/test/java/org/apache/shiro/authc/LockedAccountExceptionTest.java
index a4c94c1f6..069dcb4d2 100644
--- a/core/src/test/java/org/apache/shiro/authc/LockedAccountExceptionTest.java
+++ b/core/src/test/java/org/apache/shiro/authc/LockedAccountExceptionTest.java
@@ -30,6 +30,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class LockedAccountExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return LockedAccountException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authc/UnknownAccountExceptionTest.java 
b/core/src/test/java/org/apache/shiro/authc/UnknownAccountExceptionTest.java
index 93a5393f5..9f3efa78f 100644
--- a/core/src/test/java/org/apache/shiro/authc/UnknownAccountExceptionTest.java
+++ b/core/src/test/java/org/apache/shiro/authc/UnknownAccountExceptionTest.java
@@ -30,6 +30,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class UnknownAccountExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return UnknownAccountException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authc/pam/AllSuccessfulStrategyTest.java 
b/core/src/test/java/org/apache/shiro/authc/pam/AllSuccessfulStrategyTest.java
index 95c192987..f7747ec6f 100644
--- 
a/core/src/test/java/org/apache/shiro/authc/pam/AllSuccessfulStrategyTest.java
+++ 
b/core/src/test/java/org/apache/shiro/authc/pam/AllSuccessfulStrategyTest.java
@@ -64,10 +64,12 @@ public class AllSuccessfulStrategyTest {
                     return false;
                 }
 
+                @Override
                 protected AuthenticationInfo 
doGetAuthenticationInfo(AuthenticationToken token) throws 
AuthenticationException {
                     return null;
                 }
 
+                @Override
                 protected AuthorizationInfo 
doGetAuthorizationInfo(PrincipalCollection principal) {
                     return null;
                 }
diff --git 
a/core/src/test/java/org/apache/shiro/authz/AuthorizationExceptionTest.java 
b/core/src/test/java/org/apache/shiro/authz/AuthorizationExceptionTest.java
index 26855a07f..27cd4ed7a 100644
--- a/core/src/test/java/org/apache/shiro/authz/AuthorizationExceptionTest.java
+++ b/core/src/test/java/org/apache/shiro/authz/AuthorizationExceptionTest.java
@@ -26,6 +26,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class AuthorizationExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return AuthorizationException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authz/HostUnauthorizedExceptionTest.java 
b/core/src/test/java/org/apache/shiro/authz/HostUnauthorizedExceptionTest.java
index edbeb242b..5b10a5d25 100644
--- 
a/core/src/test/java/org/apache/shiro/authz/HostUnauthorizedExceptionTest.java
+++ 
b/core/src/test/java/org/apache/shiro/authz/HostUnauthorizedExceptionTest.java
@@ -26,6 +26,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class HostUnauthorizedExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return HostUnauthorizedException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authz/ModularRealmAuthorizerTest.java 
b/core/src/test/java/org/apache/shiro/authz/ModularRealmAuthorizerTest.java
index 4c00b987a..ba8659024 100644
--- a/core/src/test/java/org/apache/shiro/authz/ModularRealmAuthorizerTest.java
+++ b/core/src/test/java/org/apache/shiro/authz/ModularRealmAuthorizerTest.java
@@ -87,7 +87,7 @@ public class ModularRealmAuthorizerTest {
 
     }
 
-    class MockAuthorizingRealm extends AuthorizingRealm {
+    static class MockAuthorizingRealm extends AuthorizingRealm {
 
         @Override
         protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection 
principals) {
diff --git 
a/core/src/test/java/org/apache/shiro/authz/UnauthenticatedExceptionTest.java 
b/core/src/test/java/org/apache/shiro/authz/UnauthenticatedExceptionTest.java
index ef6954d6c..659ded566 100644
--- 
a/core/src/test/java/org/apache/shiro/authz/UnauthenticatedExceptionTest.java
+++ 
b/core/src/test/java/org/apache/shiro/authz/UnauthenticatedExceptionTest.java
@@ -26,6 +26,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class UnauthenticatedExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return UnauthenticatedException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/authz/UnauthorizedExceptionTest.java 
b/core/src/test/java/org/apache/shiro/authz/UnauthorizedExceptionTest.java
index a15959295..ee0d8cb48 100644
--- a/core/src/test/java/org/apache/shiro/authz/UnauthorizedExceptionTest.java
+++ b/core/src/test/java/org/apache/shiro/authz/UnauthorizedExceptionTest.java
@@ -26,6 +26,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class UnauthorizedExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return UnauthorizedException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/config/HashMapCacheManager.java 
b/core/src/test/java/org/apache/shiro/config/HashMapCacheManager.java
index ce5f8dd7a..1f2073ad6 100644
--- a/core/src/test/java/org/apache/shiro/config/HashMapCacheManager.java
+++ b/core/src/test/java/org/apache/shiro/config/HashMapCacheManager.java
@@ -41,7 +41,7 @@ public class HashMapCacheManager<K, V> extends 
AbstractCacheManager {
 
     //This class is not strictly necessary - it exists to verify a test case 
only.
 
-    public class HashMapCache<K, V> extends MapCache<K, V> {
+    public static class HashMapCache<K, V> extends MapCache<K, V> {
         public HashMapCache(String name) {
             super(name, new HashMap<K, V>());
         }
diff --git 
a/core/src/test/java/org/apache/shiro/lang/io/SerializationExceptionTest.java 
b/core/src/test/java/org/apache/shiro/lang/io/SerializationExceptionTest.java
index c43ddc3f4..b95f78f73 100644
--- 
a/core/src/test/java/org/apache/shiro/lang/io/SerializationExceptionTest.java
+++ 
b/core/src/test/java/org/apache/shiro/lang/io/SerializationExceptionTest.java
@@ -26,6 +26,7 @@ import org.apache.shiro.ExceptionTest;
  */
 public class SerializationExceptionTest extends ExceptionTest {
 
+    @Override
     protected Class<?> getExceptionClass() {
         return SerializationException.class;
     }
diff --git 
a/core/src/test/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealmTest.java
 
b/core/src/test/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealmTest.java
index 3c03c864a..cbd17aa52 100644
--- 
a/core/src/test/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealmTest.java
+++ 
b/core/src/test/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealmTest.java
@@ -283,6 +283,7 @@ public class ActiveDirectoryRealmTest {
             setCredentialsMatcher(credentialsMatcher);
         }
 
+        @Override
         protected AuthenticationInfo 
doGetAuthenticationInfo(AuthenticationToken token) throws 
AuthenticationException {
             SimpleAccount account = (SimpleAccount) 
super.doGetAuthenticationInfo(token);
 
@@ -297,6 +298,7 @@ public class ActiveDirectoryRealmTest {
 
         }
 
+        @Override
         protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection 
principals) {
             Set<String> roles = new HashSet<>();
             roles.add(ROLE);
diff --git a/core/src/test/java/org/apache/shiro/realm/jdbc/JDBCRealmTest.java 
b/core/src/test/java/org/apache/shiro/realm/jdbc/JDBCRealmTest.java
index ff4c86c6d..c0f899115 100644
--- a/core/src/test/java/org/apache/shiro/realm/jdbc/JDBCRealmTest.java
+++ b/core/src/test/java/org/apache/shiro/realm/jdbc/JDBCRealmTest.java
@@ -142,9 +142,10 @@ public class JDBCRealmTest {
         JdbcRealm realm = realmMap.get(testMethodName);
         createDefaultSchema(testMethodName, false);
         realm.setSaltStyle(JdbcRealm.SaltStyle.NO_SALT);
-        Connection conn = dsMap.get(testMethodName).getConnection();
-        Statement sql = conn.createStatement();
-        sql.executeUpdate("insert into users values ('" + username + "', 
'dupe')");
+        try (Connection conn = dsMap.get(testMethodName).getConnection();
+             Statement sql = conn.createStatement()) {
+            sql.executeUpdate("insert into users values ('" + username + "', 
'dupe')");
+        }
 
         Subject.Builder builder = new Subject.Builder(securityManager);
         Subject currentUser = builder.buildSubject();
@@ -326,9 +327,9 @@ public class JDBCRealmTest {
         Statement sql = null;
         DataSource ds = dsMap.get(testName);
         try {
-            Connection c = ds.getConnection();
-            Statement s = c.createStatement();
-            s.executeUpdate("SHUTDOWN");
+            conn = ds.getConnection();
+            sql = conn.createStatement();
+            sql.executeUpdate("SHUTDOWN");
         } catch (SQLException ex) {
             // ignore
         } finally {
diff --git a/core/src/test/java/org/apache/shiro/realm/text/IniRealmTest.java 
b/core/src/test/java/org/apache/shiro/realm/text/IniRealmTest.java
index 970b1ca51..b46aee34b 100644
--- a/core/src/test/java/org/apache/shiro/realm/text/IniRealmTest.java
+++ b/core/src/test/java/org/apache/shiro/realm/text/IniRealmTest.java
@@ -35,7 +35,7 @@ public class IniRealmTest {
 
     @Test
     void testNullIni() {
-        IniRealm realm = new IniRealm((Ini) null);
+        new IniRealm((Ini) null);
     }
 
     @Test
diff --git 
a/core/src/test/java/org/apache/shiro/realm/text/TextConfigurationRealmTest.java
 
b/core/src/test/java/org/apache/shiro/realm/text/TextConfigurationRealmTest.java
index 396710e9b..a73d66674 100644
--- 
a/core/src/test/java/org/apache/shiro/realm/text/TextConfigurationRealmTest.java
+++ 
b/core/src/test/java/org/apache/shiro/realm/text/TextConfigurationRealmTest.java
@@ -269,7 +269,7 @@ public class TextConfigurationRealmTest {
     /*
      * A Class that captures a thread's assertion error.
      */
-    private class TestThread implements Runnable {
+    private static class TestThread implements Runnable {
         private Runnable test;
         private volatile AssertionError ae;
 
diff --git 
a/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java
 
b/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java
index ca305913d..7122337d6 100644
--- 
a/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java
+++ 
b/core/src/test/java/org/apache/shiro/session/mgt/DefaultSessionManagerTest.java
@@ -229,7 +229,7 @@ public class DefaultSessionManagerTest {
 
         // starting a session will trigger the starting of the validator
         try {
-            Session session = sessionManager.start(null);
+            sessionManager.start(null);
 
             // now sessionValidationScheduler should be enabled
             
assertThat(sessionValidationScheduler.isEnabled()).as("sessionValidationScheduler
 was not enabled").isTrue();
diff --git 
a/core/src/test/java/org/apache/shiro/session/mgt/DelegatingSessionTest.java 
b/core/src/test/java/org/apache/shiro/session/mgt/DelegatingSessionTest.java
index 855b7b803..cb4b7d524 100644
--- a/core/src/test/java/org/apache/shiro/session/mgt/DelegatingSessionTest.java
+++ b/core/src/test/java/org/apache/shiro/session/mgt/DelegatingSessionTest.java
@@ -25,7 +25,6 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.parallel.Isolated;
 
-import java.io.Serializable;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.fail;
@@ -63,7 +62,6 @@ public class DelegatingSessionTest {
     @SuppressWarnings("checkstyle:MagicNumber")
     @Test
     void testTimeout() {
-        Serializable origId = session.getId();
         
assertThat(session.getTimeout()).isEqualTo(AbstractSessionManager.DEFAULT_GLOBAL_SESSION_TIMEOUT);
         session.touch();
         session.setTimeout(100);
diff --git 
a/core/src/test/java/org/apache/shiro/subject/SimplePrincipalCollectionTest.java
 
b/core/src/test/java/org/apache/shiro/subject/SimplePrincipalCollectionTest.java
index a6c590e8f..04eaa7270 100644
--- 
a/core/src/test/java/org/apache/shiro/subject/SimplePrincipalCollectionTest.java
+++ 
b/core/src/test/java/org/apache/shiro/subject/SimplePrincipalCollectionTest.java
@@ -35,9 +35,6 @@ public class SimplePrincipalCollectionTest {
         principalCollection.addPrincipal("johnny", "realm1");
         principalCollection.addPrincipal("Alberto", "realm2");
 
-        PrincipalCollection underTest = principalCollection.build();
-
-//        underTest.
-        LOG.trace("{}", principalCollection);
+        LOG.trace("{}", principalCollection.build());
     }
 }
diff --git 
a/integration-tests/jakarta-ee/src/test/java/org/apache/shiro/testing/jakarta/ee/ShiroBeansIT.java
 
b/integration-tests/jakarta-ee/src/test/java/org/apache/shiro/testing/jakarta/ee/ShiroBeansIT.java
index 54a3e22eb..8c068e919 100644
--- 
a/integration-tests/jakarta-ee/src/test/java/org/apache/shiro/testing/jakarta/ee/ShiroBeansIT.java
+++ 
b/integration-tests/jakarta-ee/src/test/java/org/apache/shiro/testing/jakarta/ee/ShiroBeansIT.java
@@ -86,9 +86,6 @@ public class ShiroBeansIT {
     @FindBy(id = "login")
     private WebElement login;
 
-    @FindBy(id = "usingWebSessions")
-    private WebElement usingWebSessions;
-
     @BeforeEach
     void deleteAllCookies() {
         webDriver.manage().deleteAllCookies();
@@ -149,7 +146,6 @@ public class ShiroBeansIT {
         login();
 
         webDriver.get(baseURL + "shiro/unprotected/manybeans");
-        boolean webSessions = Boolean.parseBoolean(usingWebSessions.getText());
         guardAjax(elem).click();
         webDriver.navigate().refresh();
         guardAjax(elem).click();
diff --git 
a/lang/src/main/java/org/apache/shiro/lang/io/ClassResolvingObjectInputStream.java
 
b/lang/src/main/java/org/apache/shiro/lang/io/ClassResolvingObjectInputStream.java
index 538f92b6e..f40747784 100644
--- 
a/lang/src/main/java/org/apache/shiro/lang/io/ClassResolvingObjectInputStream.java
+++ 
b/lang/src/main/java/org/apache/shiro/lang/io/ClassResolvingObjectInputStream.java
@@ -52,7 +52,6 @@ public class ClassResolvingObjectInputStream extends 
ObjectInputStream {
      *
      * @param osc the ObjectStreamClass to resolve the class name.
      * @return the discovered class
-     * @throws IOException            never - declaration retained for 
subclass consistency
      * @throws ClassNotFoundException if the class could not be found in any 
known ClassLoader
      */
     @Override
diff --git a/pom.xml b/pom.xml
index eadad5752..b815853d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -133,6 +133,10 @@
         <hibernate.version>7.4.13.Final</hibernate.version>
         <taglibs.standard.version>1.2.5</taglibs.standard.version>
         <lombok.version>1.18.48</lombok.version>
+        <!-- modules using Lombok set delombok.phase=prepare-package and 
javadoc.sourcepath=${javadoc.delombok.sourcepath} -->
+        <delombok.phase>none</delombok.phase>
+        
<javadoc.sourcepath>${project.build.sourceDirectory}</javadoc.sourcepath>
+        
<javadoc.delombok.sourcepath>${project.build.directory}/generated-sources/delombok</javadoc.delombok.sourcepath>
 
         <!-- checkstyle -->
         
<checkstyle.configLocation>${root.dir}/src/checkstyle.xml</checkstyle.configLocation>
@@ -313,9 +317,34 @@
                             
<link>https://docs.spring.io/spring-boot/${spring-boot.version}/api/java/</link>
                             
<link>https://junit.org/junit5/docs/${junit.version}/api/</link>
                             
<link>https://www.quartz-scheduler.org/api/${quartz.docs.version}/</link>
+                            <link>https://projectlombok.org/api/</link>
                         </links>
                     </configuration>
                 </plugin>
+                <plugin>
+                    <groupId>org.projectlombok</groupId>
+                    <artifactId>lombok-maven-plugin</artifactId>
+                    <version>1.18.20.0</version>
+                    <configuration>
+                        
<sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
+                        <addOutputDirectory>false</addOutputDirectory>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <phase>${delombok.phase}</phase>
+                            <goals>
+                                <goal>delombok</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                            <version>${lombok.version}</version>
+                        </dependency>
+                    </dependencies>
+                </plugin>
                 <plugin>
                     <groupId>org.apache.felix</groupId>
                     <artifactId>maven-bundle-plugin</artifactId>
@@ -719,6 +748,10 @@
                     </archive>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.projectlombok</groupId>
+                <artifactId>lombok-maven-plugin</artifactId>
+            </plugin>
 
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
@@ -1511,7 +1544,7 @@
                             <groupId>org.apache.maven.plugins</groupId>
                             <artifactId>maven-javadoc-plugin</artifactId>
                             <configuration>
-                                
<sourcepath>${project.build.sourceDirectory}</sourcepath>
+                                <sourcepath>${javadoc.sourcepath}</sourcepath>
                                 <doclint>none</doclint>
                                 <additionalJOptions>
                                     
<additionalJOption>--allow-script-in-comments</additionalJOption>
diff --git a/samples/quickstart-guice/src/main/java/QuickstartShiroModule.java 
b/samples/quickstart-guice/src/main/java/QuickstartShiroModule.java
index 0b32d5b4b..8662e178c 100644
--- a/samples/quickstart-guice/src/main/java/QuickstartShiroModule.java
+++ b/samples/quickstart-guice/src/main/java/QuickstartShiroModule.java
@@ -23,6 +23,7 @@ import org.apache.shiro.guice.ShiroModule;
 import org.apache.shiro.realm.text.IniRealm;
 
 public class QuickstartShiroModule extends ShiroModule {
+    @Override
     protected void configureShiro() {
         try {
             
bindRealm().toConstructor(IniRealm.class.getConstructor(Ini.class));
diff --git 
a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/security/SampleRealm.java
 
b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/security/SampleRealm.java
index 2852921f4..e0b14ef65 100644
--- 
a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/security/SampleRealm.java
+++ 
b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/security/SampleRealm.java
@@ -61,6 +61,7 @@ public class SampleRealm extends AuthorizingRealm {
         this.userDAO = userDAO;
     }
 
+    @Override
     protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken 
authcToken) throws AuthenticationException {
         UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
         User user = userDAO.findUser(token.getUsername());
@@ -72,6 +73,7 @@ public class SampleRealm extends AuthorizingRealm {
     }
 
 
+    @Override
     protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection 
principals) {
         Long userId = (Long) principals.fromRealm(getName()).iterator().next();
         User user = userDAO.getUser(userId);
diff --git 
a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/web/JnlpController.java
 
b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/web/JnlpController.java
index 06660da8c..ab841af23 100644
--- 
a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/web/JnlpController.java
+++ 
b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/web/JnlpController.java
@@ -69,6 +69,7 @@ public class JnlpController extends AbstractController {
 
     @SuppressWarnings("checkstyle:MagicNumber")
     @GetMapping
+    @Override
     protected ModelAndView handleRequestInternal(HttpServletRequest request, 
HttpServletResponse response) throws Exception {
 
         Subject subject = SecurityUtils.getSubject();
diff --git 
a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java
 
b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java
index 54b9849fe..5f34006fe 100644
--- 
a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java
+++ 
b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java
@@ -39,6 +39,7 @@ import jakarta.servlet.http.HttpServletResponse;
 public class LogoutController extends AbstractController {
 
     @GetMapping
+    @Override
     protected ModelAndView handleRequestInternal(HttpServletRequest request, 
HttpServletResponse response) throws Exception {
         SecurityUtils.getSubject().logout();
         return new ModelAndView("redirect:login");
diff --git a/support/cdi/pom.xml b/support/cdi/pom.xml
index fe1eaf89b..56a0c2b22 100644
--- a/support/cdi/pom.xml
+++ b/support/cdi/pom.xml
@@ -32,6 +32,8 @@
     </parent>
     <properties>
         <module.name>cdi</module.name>
+        <delombok.phase>prepare-package</delombok.phase>
+        <javadoc.sourcepath>${javadoc.delombok.sourcepath}</javadoc.sourcepath>
     </properties>
 
     <dependencies>
diff --git 
a/support/cdi/src/main/java/org/apache/shiro/cdi/AnnotatedTypeWrapper.java 
b/support/cdi/src/main/java/org/apache/shiro/cdi/AnnotatedTypeWrapper.java
index 56cab505d..24565a77f 100644
--- a/support/cdi/src/main/java/org/apache/shiro/cdi/AnnotatedTypeWrapper.java
+++ b/support/cdi/src/main/java/org/apache/shiro/cdi/AnnotatedTypeWrapper.java
@@ -33,7 +33,7 @@ public class AnnotatedTypeWrapper<T> implements 
AnnotatedType<T> {
     }
 
     private final @Delegate(types = AT.class) AnnotatedType<T> wrapped;
-    private final @Getter Set<Annotation> annotations;
+    private final @Getter(onMethod_ = @Override) Set<Annotation> annotations;
 
 
     public AnnotatedTypeWrapper(AnnotatedType<T> wrapped, Annotation... 
additionalAnnotations) {
diff --git 
a/support/cdi/src/test/java/org/apache/shiro/cdi/AnnotatedTypeWrapperTest.java 
b/support/cdi/src/test/java/org/apache/shiro/cdi/AnnotatedTypeWrapperTest.java
index a5df4210f..6057c8151 100644
--- 
a/support/cdi/src/test/java/org/apache/shiro/cdi/AnnotatedTypeWrapperTest.java
+++ 
b/support/cdi/src/test/java/org/apache/shiro/cdi/AnnotatedTypeWrapperTest.java
@@ -50,15 +50,15 @@ class AnnotatedTypeWrapperTest {
     @RequiresAuthentication
     @RequiresGuest
     @RequiresPermissions("hello")
-    private final class Annotated {
+    private static final class Annotated {
     }
 
     @ShiroSecureAnnotation
-    private final class ShiroSecureAnnotated {
+    private static final class ShiroSecureAnnotated {
     }
 
     @Stateless
-    private final class StatelessAnnotated {
+    private static final class StatelessAnnotated {
     }
 
     @SessionScoped
diff --git a/support/cdi/src/test/java/org/apache/shiro/cdi/AopHelperTest.java 
b/support/cdi/src/test/java/org/apache/shiro/cdi/AopHelperTest.java
index baed4c7f5..4c7c88831 100644
--- a/support/cdi/src/test/java/org/apache/shiro/cdi/AopHelperTest.java
+++ b/support/cdi/src/test/java/org/apache/shiro/cdi/AopHelperTest.java
@@ -47,7 +47,7 @@ class AopHelperTest {
     }
 
     @ShiroSecureAnnotation
-    public class NotAnnotated {
+    public static class NotAnnotated {
         @NotNull
         public void method() {
         }
diff --git 
a/support/guice/src/main/java/org/apache/shiro/guice/DestroyableInjectionListener.java
 
b/support/guice/src/main/java/org/apache/shiro/guice/DestroyableInjectionListener.java
index 4d425bb37..ebbab697f 100644
--- 
a/support/guice/src/main/java/org/apache/shiro/guice/DestroyableInjectionListener.java
+++ 
b/support/guice/src/main/java/org/apache/shiro/guice/DestroyableInjectionListener.java
@@ -39,6 +39,7 @@ class DestroyableInjectionListener<I extends Destroyable> 
implements InjectionLi
         this.registry = registry;
     }
 
+    @Override
     public void afterInjection(Destroyable injectee) {
         registry.add(injectee);
     }
diff --git 
a/support/guice/src/main/java/org/apache/shiro/guice/InitializableInjectionListener.java
 
b/support/guice/src/main/java/org/apache/shiro/guice/InitializableInjectionListener.java
index efa7c0f99..d44cd513d 100644
--- 
a/support/guice/src/main/java/org/apache/shiro/guice/InitializableInjectionListener.java
+++ 
b/support/guice/src/main/java/org/apache/shiro/guice/InitializableInjectionListener.java
@@ -33,6 +33,7 @@ class InitializableInjectionListener<I extends Initializable> 
implements Injecti
     @SuppressWarnings("rawtypes")
     public static final Matcher<TypeLiteral> MATCHER = 
ShiroMatchers.typeLiteral(Matchers.subclassesOf(Initializable.class));
 
+    @Override
     public void afterInjection(Initializable injectee) {
         injectee.init();
     }
diff --git 
a/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java 
b/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
index 9095f64d5..9f388c9c0 100644
--- a/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
+++ b/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
@@ -66,6 +66,7 @@ public abstract class ShiroModule extends PrivateModule 
implements Destroyable {
 
     private final Set<Destroyable> destroyables = 
Collections.newSetFromMap(new WeakHashMap<Destroyable, Boolean>());
 
+    @Override
     public void configure() {
         // setup security manager
         bindSecurityManager(bind(SecurityManager.class));
@@ -207,7 +208,7 @@ public abstract class ShiroModule extends PrivateModule 
implements Destroyable {
         this.destroyables.add(destroyable);
     }
 
-    private final class SubscribedEventTypeListener implements TypeListener {
+    private static final class SubscribedEventTypeListener implements 
TypeListener {
         @Override
         public <I> void hear(TypeLiteral<I> typeLiteral, TypeEncounter<I> 
typeEncounter) {
 
@@ -225,7 +226,7 @@ public abstract class ShiroModule extends PrivateModule 
implements Destroyable {
         }
     }
 
-    private final class EventBusAwareTypeListener implements TypeListener {
+    private static final class EventBusAwareTypeListener implements 
TypeListener {
         @Override
         public <I> void hear(TypeLiteral<I> typeLiteral, TypeEncounter<I> 
typeEncounter) {
 
diff --git 
a/support/guice/src/test/java/org/apache/shiro/guice/GuiceEnvironmentTest.java 
b/support/guice/src/test/java/org/apache/shiro/guice/GuiceEnvironmentTest.java
index e48431269..364b2d846 100644
--- 
a/support/guice/src/test/java/org/apache/shiro/guice/GuiceEnvironmentTest.java
+++ 
b/support/guice/src/test/java/org/apache/shiro/guice/GuiceEnvironmentTest.java
@@ -38,7 +38,7 @@ public class GuiceEnvironmentTest {
     @Test
     void ensureInjectable() {
         try {
-            InjectionPoint ip = 
InjectionPoint.forConstructorOf(GuiceEnvironment.class);
+            InjectionPoint.forConstructorOf(GuiceEnvironment.class);
         } catch (Exception e) {
             fail("Could not create constructor injection point.");
         }
diff --git 
a/support/guice/src/test/java/org/apache/shiro/guice/aop/ShiroAopModuleTest.java
 
b/support/guice/src/test/java/org/apache/shiro/guice/aop/ShiroAopModuleTest.java
index 290e5b2be..2b166cd01 100644
--- 
a/support/guice/src/test/java/org/apache/shiro/guice/aop/ShiroAopModuleTest.java
+++ 
b/support/guice/src/test/java/org/apache/shiro/guice/aop/ShiroAopModuleTest.java
@@ -107,6 +107,8 @@ public class ShiroAopModuleTest {
                 }
             }
         }
+        assertThat(calledDefault).isTrue();
+        assertThat(calledCustom).isTrue();
     }
 
     @Test
diff --git a/support/jakarta-ee/pom.xml b/support/jakarta-ee/pom.xml
index 886f99810..93c5ddf2c 100644
--- a/support/jakarta-ee/pom.xml
+++ b/support/jakarta-ee/pom.xml
@@ -33,6 +33,8 @@
 
     <properties>
         <module.name>jakarta.ee</module.name>
+        <delombok.phase>prepare-package</delombok.phase>
+        <javadoc.sourcepath>${javadoc.delombok.sourcepath}</javadoc.sourcepath>
     </properties>
 
     <dependencies>
diff --git 
a/support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitRequest.java
 
b/support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitRequest.java
index e65c25f2a..16fca2903 100644
--- 
a/support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitRequest.java
+++ 
b/support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitRequest.java
@@ -39,7 +39,7 @@ final class FormResubmitRequest extends 
HttpServletRequestWrapper {
             "org.apache.myfaces.", "org.omnifaces.", 
"jakarta.servlet.forward.", "jakarta.servlet.include.",
             FormResubmitSupport.FORM_IS_RESUBMITTED);
     private static final String FACES_REQUEST_HEADER = "Faces-Request";
-    private final @Getter String method;
+    private final @Getter(onMethod_ = @Override) String method;
     private final AjaxReplay ajaxReplay;
     private final @Delegate(types = Parameters.class) MutableRequest 
parameters;
     private final Map<String, Object> attributes = new HashMap<>();
diff --git 
a/support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitResponse.java
 
b/support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitResponse.java
index bfbff58e6..c73ad3615 100644
--- 
a/support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitResponse.java
+++ 
b/support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitResponse.java
@@ -42,7 +42,7 @@ import org.omnifaces.servlet.BufferedHttpServletResponse;
 final class FormResubmitResponse extends BufferedHttpServletResponse {
     private final List<Consumer<HttpServletResponse>> deferred = new 
ArrayList<>();
     private final @Delegate(types = Captured.class) HttpServletResponse 
recorder;
-    private @Getter @Setter int status = SC_OK;
+    private @Getter(onMethod_ = @Override) @Setter(onMethod_ = @Override) int 
status = SC_OK;
     private ClosableOutputStream outputStream;
 
     /**
diff --git 
a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebFilterConfiguration.java
 
b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebFilterConfiguration.java
index a48a43f8d..a78cbf09c 100644
--- 
a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebFilterConfiguration.java
+++ 
b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebFilterConfiguration.java
@@ -80,6 +80,7 @@ public class ShiroWebFilterConfiguration extends 
AbstractShiroWebFilterConfigura
 
     @Bean(name = "globalFilters")
     @ConditionalOnMissingBean
+    @Override
     protected List<String> globalFilters() {
         return super.globalFilters();
     }
diff --git 
a/support/spring/src/test/java/org/apache/shiro/spring/testconfig/EventBusConsumersTestConfiguration.java
 
b/support/spring/src/test/java/org/apache/shiro/spring/testconfig/EventBusConsumersTestConfiguration.java
index 5f9ce9797..53151d4bf 100644
--- 
a/support/spring/src/test/java/org/apache/shiro/spring/testconfig/EventBusConsumersTestConfiguration.java
+++ 
b/support/spring/src/test/java/org/apache/shiro/spring/testconfig/EventBusConsumersTestConfiguration.java
@@ -38,7 +38,7 @@ public class EventBusConsumersTestConfiguration {
         return new EventSubscriber();
     }
 
-    public class EventBusAwareObject implements EventBusAware {
+    public static class EventBusAwareObject implements EventBusAware {
 
         private EventBus eventBus;
 
@@ -52,7 +52,7 @@ public class EventBusConsumersTestConfiguration {
         }
     }
 
-    public class EventSubscriber {
+    public static class EventSubscriber {
 
         @Subscribe
         public void listen(Object object) {
diff --git 
a/tools/hasher/src/main/java/org/apache/shiro/tools/hasher/Hasher.java 
b/tools/hasher/src/main/java/org/apache/shiro/tools/hasher/Hasher.java
index d19fe5f0d..8d07ff8ff 100644
--- a/tools/hasher/src/main/java/org/apache/shiro/tools/hasher/Hasher.java
+++ b/tools/hasher/src/main/java/org/apache/shiro/tools/hasher/Hasher.java
@@ -196,7 +196,7 @@ public final class Hasher {
                 generateSalt = true;
                 generatedSaltSize = getRequiredPositiveInt(line, 
SALT_GEN_SIZE);
                 if (generatedSaltSize % 8 != 0) {
-                    throw new IllegalArgumentException("Generated salt size 
must be"
+                    throw new IllegalArgumentException("Generated salt size 
must be "
                             + "a multiple of 8 (e.g. 128, 192, 256, 512, 
etc.).");
                 }
             }
@@ -222,8 +222,6 @@ public final class Hasher {
                 if (remainingArgs == null || remainingArgs.length != 1) {
                     printHelpAndExit(options, null, debug, -1);
                 }
-
-                assert remainingArgs != null;
                 sourceValue = toString(remainingArgs);
 
                 if (resource) {
diff --git 
a/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
 
b/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
index f5159eab2..de028b715 100644
--- 
a/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
+++ 
b/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
@@ -109,6 +109,7 @@ public class IniFilterChainResolverFactory extends 
IniFactorySupport<FilterChain
         this.caseInsensitive = caseInsensitive;
     }
 
+    @Override
     protected FilterChainResolver createInstance(Ini ini) {
         FilterChainResolver filterChainResolver = createDefaultInstance();
         if (filterChainResolver instanceof PathMatchingFilterChainResolver 
resolver) {
@@ -118,6 +119,7 @@ public class IniFilterChainResolverFactory extends 
IniFactorySupport<FilterChain
         return filterChainResolver;
     }
 
+    @Override
     protected FilterChainResolver createDefaultInstance() {
         FilterConfig filterConfig = getFilterConfig();
         if (filterConfig != null) {
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java 
b/web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java
index df6474517..c332a9c2d 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java
@@ -189,6 +189,7 @@ public abstract class PathMatchingFilter extends 
AdviceFilter implements PathCon
      * handled the request explicitly.
      * @throws Exception if an error occurs
      */
+    @Override
     protected boolean preHandle(ServletRequest request, ServletResponse 
response) throws Exception {
 
         if (this.appliedPaths == null || this.appliedPaths.isEmpty()) {
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authc/AuthenticationFilter.java 
b/web/src/main/java/org/apache/shiro/web/filter/authc/AuthenticationFilter.java
index 20a79fc2f..490ae9c45 100644
--- 
a/web/src/main/java/org/apache/shiro/web/filter/authc/AuthenticationFilter.java
+++ 
b/web/src/main/java/org/apache/shiro/web/filter/authc/AuthenticationFilter.java
@@ -75,6 +75,7 @@ public abstract class AuthenticationFilter extends 
AccessControlFilter {
      *
      * @return true if the subject is authenticated; false if the subject is 
unauthenticated
      */
+    @Override
     protected boolean isAccessAllowed(ServletRequest request, ServletResponse 
response, Object mappedValue) {
         Subject subject = getSubject(request, response);
         return subject.isAuthenticated() && subject.getPrincipal() != null;
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.java
 
b/web/src/main/java/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.java
index 8f98b428f..8fb0e3fe6 100644
--- 
a/web/src/main/java/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.java
+++ 
b/web/src/main/java/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.java
@@ -156,6 +156,7 @@ public class FormAuthenticationFilter extends 
AuthenticatingFilter {
         this.failureKeyAttribute = failureKeyAttribute;
     }
 
+    @Override
     protected boolean onAccessDenied(ServletRequest request, ServletResponse 
response) throws Exception {
         if (isLoginRequest(request, response)) {
             if (isLoginSubmission(request, response)) {
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authc/HttpAuthenticationFilter.java
 
b/web/src/main/java/org/apache/shiro/web/filter/authc/HttpAuthenticationFilter.java
index 503a82dfa..8fbe068a5 100644
--- 
a/web/src/main/java/org/apache/shiro/web/filter/authc/HttpAuthenticationFilter.java
+++ 
b/web/src/main/java/org/apache/shiro/web/filter/authc/HttpAuthenticationFilter.java
@@ -243,6 +243,7 @@ abstract class HttpAuthenticationFilter extends 
AuthenticatingFilter {
      * @param response outgoing ServletResponse
      * @return true if the request should be processed; false if the request 
should not continue to be processed
      */
+    @Override
     protected boolean onAccessDenied(ServletRequest request, ServletResponse 
response) throws Exception {
         //false by default or we wouldn't be in this method
         boolean loggedIn = false;
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authc/PassThruAuthenticationFilter.java
 
b/web/src/main/java/org/apache/shiro/web/filter/authc/PassThruAuthenticationFilter.java
index 520b6c661..4f0ddb57e 100644
--- 
a/web/src/main/java/org/apache/shiro/web/filter/authc/PassThruAuthenticationFilter.java
+++ 
b/web/src/main/java/org/apache/shiro/web/filter/authc/PassThruAuthenticationFilter.java
@@ -48,6 +48,7 @@ public class PassThruAuthenticationFilter extends 
AuthenticationFilter {
 
     //TODO - complete JavaDoc
 
+    @Override
     protected boolean onAccessDenied(ServletRequest request, ServletResponse 
response) throws Exception {
         if (isLoginRequest(request, response)) {
             return true;
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authc/UserFilter.java 
b/web/src/main/java/org/apache/shiro/web/filter/authc/UserFilter.java
index 40cc179cd..450213759 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authc/UserFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authc/UserFilter.java
@@ -46,6 +46,7 @@ public class UserFilter extends AccessControlFilter {
      * if the current {@link #getSubject(jakarta.servlet.ServletRequest, 
jakarta.servlet.ServletResponse) subject}
      * is not <code>null</code>, <code>false</code> otherwise.
      */
+    @Override
     protected boolean isAccessAllowed(ServletRequest request, ServletResponse 
response, Object mappedValue) {
         if (isLoginRequest(request, response)) {
             return true;
@@ -62,6 +63,7 @@ public class UserFilter extends AccessControlFilter {
      * and then immediately returns <code>false</code>, thereby preventing the 
chain from continuing so the redirect may
      * execute.
      */
+    @Override
     protected boolean onAccessDenied(ServletRequest request, ServletResponse 
response) throws Exception {
         saveRequestAndRedirectToLogin(request, response);
         return false;
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authz/AuthorizationFilter.java 
b/web/src/main/java/org/apache/shiro/web/filter/authz/AuthorizationFilter.java
index 50a16c60c..da05fd3a6 100644
--- 
a/web/src/main/java/org/apache/shiro/web/filter/authz/AuthorizationFilter.java
+++ 
b/web/src/main/java/org/apache/shiro/web/filter/authz/AuthorizationFilter.java
@@ -103,6 +103,7 @@ public abstract class AuthorizationFilter extends 
AccessControlFilter {
      * @return {@code false} always for this implementation.
      * @throws IOException if there is any servlet error.
      */
+    @Override
     protected boolean onAccessDenied(ServletRequest request, ServletResponse 
response) throws IOException {
 
         Subject subject = getSubject(request, response);
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authz/HostFilter.java 
b/web/src/main/java/org/apache/shiro/web/filter/authz/HostFilter.java
index 17f1abbf2..19523dd03 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authz/HostFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authz/HostFilter.java
@@ -108,6 +108,7 @@ public class HostFilter extends AuthorizationFilter {
         return true;
     }
 
+    @Override
     protected boolean isAccessAllowed(ServletRequest request, ServletResponse 
response, Object mappedValue) throws Exception {
         throw new UnsupportedOperationException("Not yet fully 
implemented!!!");
     }
diff --git a/web/src/main/java/org/apache/shiro/web/filter/authz/IpFilter.java 
b/web/src/main/java/org/apache/shiro/web/filter/authz/IpFilter.java
index afad6e9fa..3b37842ac 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authz/IpFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authz/IpFilter.java
@@ -112,6 +112,7 @@ public class IpFilter extends AuthorizationFilter {
         return request.getRemoteAddr();
     }
 
+    @Override
     protected boolean isAccessAllowed(ServletRequest request, ServletResponse 
response, Object mappedValue) throws Exception {
         String remoteIp = getHostFromRequest(request);
         for (IpAddressMatcher matcher : deniedIpMatchers) {
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authz/PermissionsAuthorizationFilter.java
 
b/web/src/main/java/org/apache/shiro/web/filter/authz/PermissionsAuthorizationFilter.java
index 9912c660d..d6fe79afd 100644
--- 
a/web/src/main/java/org/apache/shiro/web/filter/authz/PermissionsAuthorizationFilter.java
+++ 
b/web/src/main/java/org/apache/shiro/web/filter/authz/PermissionsAuthorizationFilter.java
@@ -34,6 +34,7 @@ public class PermissionsAuthorizationFilter extends 
AuthorizationFilter {
 
     //TODO - complete JavaDoc
 
+    @Override
     public boolean isAccessAllowed(ServletRequest request, ServletResponse 
response, Object mappedValue) throws IOException {
 
         Subject subject = getSubject(request, response);
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authz/PortFilter.java 
b/web/src/main/java/org/apache/shiro/web/filter/authz/PortFilter.java
index a5e708cc8..20618c27e 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authz/PortFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authz/PortFilter.java
@@ -71,6 +71,7 @@ public class PortFilter extends AuthorizationFilter {
         return Integer.parseInt(ports[0]);
     }
 
+    @Override
     protected boolean isAccessAllowed(ServletRequest request, ServletResponse 
response, Object mappedValue) throws Exception {
         int requiredPort = toPort(mappedValue);
         int requestPort = request.getServerPort();
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/authz/RolesAuthorizationFilter.java
 
b/web/src/main/java/org/apache/shiro/web/filter/authz/RolesAuthorizationFilter.java
index 5aa4444e0..a3995c4fc 100644
--- 
a/web/src/main/java/org/apache/shiro/web/filter/authz/RolesAuthorizationFilter.java
+++ 
b/web/src/main/java/org/apache/shiro/web/filter/authz/RolesAuthorizationFilter.java
@@ -38,6 +38,7 @@ public class RolesAuthorizationFilter extends 
AuthorizationFilter {
     //TODO - complete JavaDoc
 
     @SuppressWarnings({"unchecked"})
+    @Override
     public boolean isAccessAllowed(ServletRequest request, ServletResponse 
response, Object mappedValue) throws IOException {
 
         Subject subject = getSubject(request, response);
diff --git 
a/web/src/main/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterList.java 
b/web/src/main/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterList.java
index 137545ef2..e3b1f4048 100644
--- 
a/web/src/main/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterList.java
+++ 
b/web/src/main/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterList.java
@@ -95,10 +95,12 @@ public class SimpleNamedFilterList implements 
NamedFilterList {
         this.backingList.add(index, filter);
     }
 
+    @Override
     public boolean addAll(Collection<? extends Filter> c) {
         return this.backingList.addAll(c);
     }
 
+    @Override
     public boolean addAll(int index, Collection<? extends Filter> c) {
         return this.backingList.addAll(index, c);
     }
diff --git 
a/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletRequest.java 
b/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletRequest.java
index e76b2eee4..d25e492bd 100644
--- 
a/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletRequest.java
+++ 
b/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletRequest.java
@@ -236,7 +236,7 @@ public class ShiroHttpServletRequest extends 
HttpServletRequestWrapper {
         return isRequestedSessionIdFromURL();
     }
 
-    private class ObjectPrincipal implements java.security.Principal {
+    private static class ObjectPrincipal implements java.security.Principal {
         private Object object;
 
         ObjectPrincipal(Object object) {
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/SimpleCookie.java 
b/web/src/main/java/org/apache/shiro/web/servlet/SimpleCookie.java
index 961c728dc..16a73fc33 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/SimpleCookie.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/SimpleCookie.java
@@ -435,7 +435,7 @@ public class SimpleCookie implements Cookie {
         boolean httpOnly = false;
         SameSiteOptions sameSite = getSameSite();
 
-        addCookieHeader(response, name, DELETED_COOKIE_VALUE, null, domain, 
path, maxAge, version, secure, httpOnly, sameSite);
+        addCookieHeader(response, name, DELETED_COOKIE_VALUE, comment, domain, 
path, maxAge, version, secure, httpOnly, sameSite);
 
         LOGGER.trace("Removed '{}' cookie by setting maxAge=0", name);
     }
diff --git 
a/web/src/main/java/org/apache/shiro/web/session/mgt/DefaultWebSessionManager.java
 
b/web/src/main/java/org/apache/shiro/web/session/mgt/DefaultWebSessionManager.java
index ab4eac356..0d2bf1e4c 100644
--- 
a/web/src/main/java/org/apache/shiro/web/session/mgt/DefaultWebSessionManager.java
+++ 
b/web/src/main/java/org/apache/shiro/web/session/mgt/DefaultWebSessionManager.java
@@ -224,6 +224,7 @@ public class DefaultWebSessionManager extends 
DefaultSessionManager implements W
         return name;
     }
 
+    @Override
     protected Session createExposedSession(Session session, SessionContext 
context) {
         if (!WebUtils.isWeb(context)) {
             return super.createExposedSession(session, context);
@@ -234,6 +235,7 @@ public class DefaultWebSessionManager extends 
DefaultSessionManager implements W
         return new DelegatingSession(this, key);
     }
 
+    @Override
     protected Session createExposedSession(Session session, SessionKey key) {
         if (!WebUtils.isWeb(key)) {
             return super.createExposedSession(session, key);

Reply via email to