diff --git a/access/src/main/java/org/springframework/security/access/SecurityConfig.java b/access/src/main/java/org/springframework/security/access/SecurityConfig.java index 7f471d1ef7..967b54e84d 100644 --- a/access/src/main/java/org/springframework/security/access/SecurityConfig.java +++ b/access/src/main/java/org/springframework/security/access/SecurityConfig.java @@ -20,6 +20,8 @@ import java.io.Serial; import java.util.ArrayList; import java.util.List; +import org.jspecify.annotations.Nullable; + import org.springframework.security.authorization.AuthorizationManager; import org.springframework.security.core.annotation.SecurityAnnotationScanner; import org.springframework.util.Assert; @@ -50,7 +52,7 @@ public class SecurityConfig implements ConfigAttribute { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj instanceof ConfigAttribute attr) { return this.attrib.equals(attr.getAttribute()); } diff --git a/access/src/main/java/org/springframework/security/access/method/DelegatingMethodSecurityMetadataSource.java b/access/src/main/java/org/springframework/security/access/method/DelegatingMethodSecurityMetadataSource.java index 138e9f97bb..82f98da821 100644 --- a/access/src/main/java/org/springframework/security/access/method/DelegatingMethodSecurityMetadataSource.java +++ b/access/src/main/java/org/springframework/security/access/method/DelegatingMethodSecurityMetadataSource.java @@ -114,8 +114,10 @@ public final class DelegatingMethodSecurityMetadataSource extends AbstractMethod } @Override - public boolean equals(Object other) { - DefaultCacheKey otherKey = (DefaultCacheKey) other; + public boolean equals(@Nullable Object other) { + if (!(other instanceof DefaultCacheKey otherKey)) { + return false; + } return (this.method.equals(otherKey.method) && ObjectUtils.nullSafeEquals(this.targetClass, otherKey.targetClass)); } diff --git a/access/src/main/java/org/springframework/security/access/method/MapBasedMethodSecurityMetadataSource.java b/access/src/main/java/org/springframework/security/access/method/MapBasedMethodSecurityMetadataSource.java index 3ebb24d141..6bcda9f40f 100644 --- a/access/src/main/java/org/springframework/security/access/method/MapBasedMethodSecurityMetadataSource.java +++ b/access/src/main/java/org/springframework/security/access/method/MapBasedMethodSecurityMetadataSource.java @@ -265,7 +265,7 @@ public class MapBasedMethodSecurityMetadataSource extends AbstractFallbackMethod } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/acl/src/main/java/org/springframework/security/acls/domain/AbstractPermission.java b/acl/src/main/java/org/springframework/security/acls/domain/AbstractPermission.java index 9458aadc23..8a6e2716f9 100644 --- a/acl/src/main/java/org/springframework/security/acls/domain/AbstractPermission.java +++ b/acl/src/main/java/org/springframework/security/acls/domain/AbstractPermission.java @@ -16,6 +16,8 @@ package org.springframework.security.acls.domain; +import org.jspecify.annotations.Nullable; + import org.springframework.security.acls.model.Permission; /** @@ -52,7 +54,7 @@ public abstract class AbstractPermission implements Permission { } @Override - public final boolean equals(Object obj) { + public final boolean equals(@Nullable Object obj) { if (obj == null) { return false; } diff --git a/acl/src/main/java/org/springframework/security/acls/domain/AccessControlEntryImpl.java b/acl/src/main/java/org/springframework/security/acls/domain/AccessControlEntryImpl.java index 035ecd7888..543aff5e25 100644 --- a/acl/src/main/java/org/springframework/security/acls/domain/AccessControlEntryImpl.java +++ b/acl/src/main/java/org/springframework/security/acls/domain/AccessControlEntryImpl.java @@ -63,7 +63,7 @@ public class AccessControlEntryImpl implements AccessControlEntry, AuditableAcce } @Override - public boolean equals(Object arg0) { + public boolean equals(@Nullable Object arg0) { if (!(arg0 instanceof AccessControlEntryImpl)) { return false; } diff --git a/acl/src/main/java/org/springframework/security/acls/domain/AclImpl.java b/acl/src/main/java/org/springframework/security/acls/domain/AclImpl.java index 0771bc05f5..fada8bf964 100644 --- a/acl/src/main/java/org/springframework/security/acls/domain/AclImpl.java +++ b/acl/src/main/java/org/springframework/security/acls/domain/AclImpl.java @@ -278,7 +278,7 @@ public class AclImpl implements Acl, MutableAcl, AuditableAcl, OwnershipAcl { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj == this) { return true; } diff --git a/acl/src/main/java/org/springframework/security/acls/domain/GrantedAuthoritySid.java b/acl/src/main/java/org/springframework/security/acls/domain/GrantedAuthoritySid.java index a72d690cf5..c32b1770b6 100644 --- a/acl/src/main/java/org/springframework/security/acls/domain/GrantedAuthoritySid.java +++ b/acl/src/main/java/org/springframework/security/acls/domain/GrantedAuthoritySid.java @@ -16,6 +16,8 @@ package org.springframework.security.acls.domain; +import org.jspecify.annotations.Nullable; + import org.springframework.security.acls.model.Sid; import org.springframework.security.core.GrantedAuthority; import org.springframework.util.Assert; @@ -47,7 +49,7 @@ public class GrantedAuthoritySid implements Sid { } @Override - public boolean equals(Object object) { + public boolean equals(@Nullable Object object) { if ((object == null) || !(object instanceof GrantedAuthoritySid)) { return false; } diff --git a/acl/src/main/java/org/springframework/security/acls/domain/ObjectIdentityImpl.java b/acl/src/main/java/org/springframework/security/acls/domain/ObjectIdentityImpl.java index aafa3fff3f..3c6259a436 100644 --- a/acl/src/main/java/org/springframework/security/acls/domain/ObjectIdentityImpl.java +++ b/acl/src/main/java/org/springframework/security/acls/domain/ObjectIdentityImpl.java @@ -19,6 +19,8 @@ package org.springframework.security.acls.domain; import java.io.Serializable; import java.lang.reflect.Method; +import org.jspecify.annotations.Nullable; + import org.springframework.security.acls.model.ObjectIdentity; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -97,7 +99,7 @@ public class ObjectIdentityImpl implements ObjectIdentity { * @return true if the presented object matches this object */ @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj == null || !(obj instanceof ObjectIdentityImpl)) { return false; } diff --git a/acl/src/main/java/org/springframework/security/acls/domain/PrincipalSid.java b/acl/src/main/java/org/springframework/security/acls/domain/PrincipalSid.java index 373d85a5e9..df7b3bc51d 100644 --- a/acl/src/main/java/org/springframework/security/acls/domain/PrincipalSid.java +++ b/acl/src/main/java/org/springframework/security/acls/domain/PrincipalSid.java @@ -16,6 +16,8 @@ package org.springframework.security.acls.domain; +import org.jspecify.annotations.Nullable; + import org.springframework.security.acls.model.Sid; import org.springframework.security.core.Authentication; import org.springframework.util.Assert; @@ -46,7 +48,7 @@ public class PrincipalSid implements Sid { } @Override - public boolean equals(Object object) { + public boolean equals(@Nullable Object object) { if ((object == null) || !(object instanceof PrincipalSid)) { return false; } diff --git a/acl/src/main/java/org/springframework/security/acls/model/ObjectIdentity.java b/acl/src/main/java/org/springframework/security/acls/model/ObjectIdentity.java index 995e514056..72216e8316 100644 --- a/acl/src/main/java/org/springframework/security/acls/model/ObjectIdentity.java +++ b/acl/src/main/java/org/springframework/security/acls/model/ObjectIdentity.java @@ -18,6 +18,8 @@ package org.springframework.security.acls.model; import java.io.Serializable; +import org.jspecify.annotations.Nullable; + /** * Represents the identity of an individual domain object instance. * @@ -40,7 +42,7 @@ public interface ObjectIdentity extends Serializable { * @see Object#equals(Object) */ @Override - boolean equals(Object obj); + boolean equals(@Nullable Object obj); /** * Obtains the actual identifier. This identifier must not be reused to represent diff --git a/acl/src/main/java/org/springframework/security/acls/model/Sid.java b/acl/src/main/java/org/springframework/security/acls/model/Sid.java index 1e16e8ea94..31aedb4ea3 100644 --- a/acl/src/main/java/org/springframework/security/acls/model/Sid.java +++ b/acl/src/main/java/org/springframework/security/acls/model/Sid.java @@ -18,6 +18,8 @@ package org.springframework.security.acls.model; import java.io.Serializable; +import org.jspecify.annotations.Nullable; + /** * A security identity recognised by the ACL system. * @@ -40,7 +42,7 @@ public interface Sid extends Serializable { * @return true if the objects are equal, false otherwise */ @Override - boolean equals(Object obj); + boolean equals(@Nullable Object obj); /** * Refer to the java.lang.Object documentation for the interface diff --git a/cas/src/main/java/org/springframework/security/cas/authentication/CasAuthenticationToken.java b/cas/src/main/java/org/springframework/security/cas/authentication/CasAuthenticationToken.java index c05d5c5964..dfd1c4eaa3 100644 --- a/cas/src/main/java/org/springframework/security/cas/authentication/CasAuthenticationToken.java +++ b/cas/src/main/java/org/springframework/security/cas/authentication/CasAuthenticationToken.java @@ -124,7 +124,7 @@ public class CasAuthenticationToken extends AbstractAuthenticationToken implemen } @Override - public boolean equals(final Object obj) { + public boolean equals(@Nullable final Object obj) { if (!super.equals(obj)) { return false; } diff --git a/cas/src/main/java/org/springframework/security/cas/web/authentication/DefaultServiceAuthenticationDetails.java b/cas/src/main/java/org/springframework/security/cas/web/authentication/DefaultServiceAuthenticationDetails.java index ba77e0ce2b..24dff8d49b 100644 --- a/cas/src/main/java/org/springframework/security/cas/web/authentication/DefaultServiceAuthenticationDetails.java +++ b/cas/src/main/java/org/springframework/security/cas/web/authentication/DefaultServiceAuthenticationDetails.java @@ -71,7 +71,7 @@ final class DefaultServiceAuthenticationDetails extends WebAuthenticationDetails } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/configuration/SecurityReactorContextConfiguration.java b/config/src/main/java/org/springframework/security/config/annotation/web/configuration/SecurityReactorContextConfiguration.java index 18cecd485e..11e5595418 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/configuration/SecurityReactorContextConfiguration.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/configuration/SecurityReactorContextConfiguration.java @@ -27,6 +27,7 @@ import java.util.function.Supplier; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; import org.reactivestreams.Subscription; import reactor.core.CoreSubscriber; @@ -286,7 +287,7 @@ class SecurityReactorContextConfiguration { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } diff --git a/core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java b/core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java index 18307f8b64..84ec495919 100644 --- a/core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java +++ b/core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java @@ -132,7 +132,7 @@ public abstract class AbstractAuthenticationToken implements Authentication, Cre } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (!(obj instanceof AbstractAuthenticationToken test)) { return false; } diff --git a/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java b/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java index 2e2a47b7e4..4338f37b48 100644 --- a/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java +++ b/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java @@ -19,6 +19,8 @@ package org.springframework.security.authentication; import java.io.Serializable; import java.util.Collection; +import org.jspecify.annotations.Nullable; + import org.springframework.security.core.GrantedAuthority; import org.springframework.util.Assert; @@ -70,7 +72,7 @@ public class AnonymousAuthenticationToken extends AbstractAuthenticationToken im } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (!super.equals(obj)) { return false; } diff --git a/core/src/main/java/org/springframework/security/authentication/RememberMeAuthenticationToken.java b/core/src/main/java/org/springframework/security/authentication/RememberMeAuthenticationToken.java index 81d7edeafa..6c951fdcfe 100644 --- a/core/src/main/java/org/springframework/security/authentication/RememberMeAuthenticationToken.java +++ b/core/src/main/java/org/springframework/security/authentication/RememberMeAuthenticationToken.java @@ -103,7 +103,7 @@ public class RememberMeAuthenticationToken extends AbstractAuthenticationToken { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (!super.equals(obj)) { return false; } diff --git a/core/src/main/java/org/springframework/security/authentication/jaas/JaasGrantedAuthority.java b/core/src/main/java/org/springframework/security/authentication/jaas/JaasGrantedAuthority.java index 3389d8c60c..a757dfaaec 100644 --- a/core/src/main/java/org/springframework/security/authentication/jaas/JaasGrantedAuthority.java +++ b/core/src/main/java/org/springframework/security/authentication/jaas/JaasGrantedAuthority.java @@ -18,6 +18,8 @@ package org.springframework.security.authentication.jaas; import java.security.Principal; +import org.jspecify.annotations.Nullable; + import org.springframework.security.core.GrantedAuthority; import org.springframework.util.Assert; @@ -53,7 +55,7 @@ public final class JaasGrantedAuthority implements GrantedAuthority { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/core/src/main/java/org/springframework/security/authorization/RequiredFactor.java b/core/src/main/java/org/springframework/security/authorization/RequiredFactor.java index 5c477bb34e..c169f2f68a 100644 --- a/core/src/main/java/org/springframework/security/authorization/RequiredFactor.java +++ b/core/src/main/java/org/springframework/security/authorization/RequiredFactor.java @@ -71,7 +71,7 @@ public final class RequiredFactor { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof RequiredFactor that)) { return false; } diff --git a/core/src/main/java/org/springframework/security/authorization/RequiredFactorError.java b/core/src/main/java/org/springframework/security/authorization/RequiredFactorError.java index 0d6cada187..102be8db17 100644 --- a/core/src/main/java/org/springframework/security/authorization/RequiredFactorError.java +++ b/core/src/main/java/org/springframework/security/authorization/RequiredFactorError.java @@ -18,6 +18,8 @@ package org.springframework.security.authorization; import java.util.Objects; +import org.jspecify.annotations.Nullable; + import org.springframework.security.core.authority.FactorGrantedAuthority; import org.springframework.util.Assert; @@ -68,7 +70,7 @@ public class RequiredFactorError { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (o == null || getClass() != o.getClass()) { return false; } diff --git a/core/src/main/java/org/springframework/security/core/ComparableVersion.java b/core/src/main/java/org/springframework/security/core/ComparableVersion.java index 9e56c850fa..223217f88d 100644 --- a/core/src/main/java/org/springframework/security/core/ComparableVersion.java +++ b/core/src/main/java/org/springframework/security/core/ComparableVersion.java @@ -143,7 +143,7 @@ class ComparableVersion implements Comparable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } @@ -208,7 +208,7 @@ class ComparableVersion implements Comparable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } @@ -271,7 +271,7 @@ class ComparableVersion implements Comparable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } @@ -379,7 +379,7 @@ class ComparableVersion implements Comparable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } @@ -607,7 +607,7 @@ class ComparableVersion implements Comparable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { return (o instanceof ComparableVersion) && items.equals(((ComparableVersion) o).items); } diff --git a/core/src/main/java/org/springframework/security/core/authority/FactorGrantedAuthority.java b/core/src/main/java/org/springframework/security/core/authority/FactorGrantedAuthority.java index 51d88fbb4a..f4ae88572e 100644 --- a/core/src/main/java/org/springframework/security/core/authority/FactorGrantedAuthority.java +++ b/core/src/main/java/org/springframework/security/core/authority/FactorGrantedAuthority.java @@ -150,7 +150,7 @@ public final class FactorGrantedAuthority implements GrantedAuthority { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/core/src/main/java/org/springframework/security/core/authority/SimpleGrantedAuthority.java b/core/src/main/java/org/springframework/security/core/authority/SimpleGrantedAuthority.java index cc918fd70d..3c09a55e48 100644 --- a/core/src/main/java/org/springframework/security/core/authority/SimpleGrantedAuthority.java +++ b/core/src/main/java/org/springframework/security/core/authority/SimpleGrantedAuthority.java @@ -16,6 +16,8 @@ package org.springframework.security.core.authority; +import org.jspecify.annotations.Nullable; + import org.springframework.security.core.GrantedAuthority; import org.springframework.util.Assert; @@ -51,7 +53,7 @@ public final class SimpleGrantedAuthority implements GrantedAuthority { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/core/src/main/java/org/springframework/security/core/context/SecurityContextImpl.java b/core/src/main/java/org/springframework/security/core/context/SecurityContextImpl.java index b6c4380407..af9d030a21 100644 --- a/core/src/main/java/org/springframework/security/core/context/SecurityContextImpl.java +++ b/core/src/main/java/org/springframework/security/core/context/SecurityContextImpl.java @@ -42,7 +42,7 @@ public class SecurityContextImpl implements SecurityContext { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj instanceof SecurityContextImpl other) { if ((this.getAuthentication() == null) && (other.getAuthentication() == null)) { return true; diff --git a/core/src/main/java/org/springframework/security/core/token/DefaultToken.java b/core/src/main/java/org/springframework/security/core/token/DefaultToken.java index b2dfb2d185..89132d73cd 100644 --- a/core/src/main/java/org/springframework/security/core/token/DefaultToken.java +++ b/core/src/main/java/org/springframework/security/core/token/DefaultToken.java @@ -18,6 +18,8 @@ package org.springframework.security.core.token; import java.util.Date; +import org.jspecify.annotations.Nullable; + import org.springframework.util.Assert; /** @@ -58,7 +60,7 @@ public class DefaultToken implements Token { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj instanceof DefaultToken rhs) { return this.key.equals(rhs.key) && this.keyCreationTime == rhs.keyCreationTime && this.extendedInformation.equals(rhs.extendedInformation); diff --git a/core/src/main/java/org/springframework/security/core/userdetails/User.java b/core/src/main/java/org/springframework/security/core/userdetails/User.java index 46839eeec0..794b1d336d 100644 --- a/core/src/main/java/org/springframework/security/core/userdetails/User.java +++ b/core/src/main/java/org/springframework/security/core/userdetails/User.java @@ -177,7 +177,7 @@ public class User implements UserDetails, CredentialsContainer { * the same principal. */ @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj instanceof User user) { return this.username.equals(user.getUsername()); } diff --git a/kerberos/kerberos-core/src/main/java/org/springframework/security/kerberos/authentication/KerberosServiceRequestToken.java b/kerberos/kerberos-core/src/main/java/org/springframework/security/kerberos/authentication/KerberosServiceRequestToken.java index 027408fd4f..3dc5f74272 100644 --- a/kerberos/kerberos-core/src/main/java/org/springframework/security/kerberos/authentication/KerberosServiceRequestToken.java +++ b/kerberos/kerberos-core/src/main/java/org/springframework/security/kerberos/authentication/KerberosServiceRequestToken.java @@ -99,13 +99,16 @@ public class KerberosServiceRequestToken extends AbstractAuthenticationToken imp * equals() is based only on the Kerberos token */ @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } + if (obj == null) { + return false; + } if (getClass() != obj.getClass()) { return false; } diff --git a/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapAuthority.java b/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapAuthority.java index 88021478fb..3c586732d5 100644 --- a/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapAuthority.java +++ b/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapAuthority.java @@ -115,7 +115,7 @@ public class LdapAuthority implements GrantedAuthority { * values. */ @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapUserDetailsImpl.java b/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapUserDetailsImpl.java index 9f7780a008..2a0d2800cf 100644 --- a/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapUserDetailsImpl.java +++ b/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapUserDetailsImpl.java @@ -133,7 +133,7 @@ public class LdapUserDetailsImpl implements LdapUserDetails, PasswordPolicyData } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj instanceof LdapUserDetailsImpl) { Assert.notNull(this.dn, "dn cannot be null"); return this.dn.equals(((LdapUserDetailsImpl) obj).dn); diff --git a/messaging/src/main/java/org/springframework/security/messaging/util/matcher/SimpMessageTypeMatcher.java b/messaging/src/main/java/org/springframework/security/messaging/util/matcher/SimpMessageTypeMatcher.java index d3dab24415..5f66d29f40 100644 --- a/messaging/src/main/java/org/springframework/security/messaging/util/matcher/SimpMessageTypeMatcher.java +++ b/messaging/src/main/java/org/springframework/security/messaging/util/matcher/SimpMessageTypeMatcher.java @@ -16,6 +16,8 @@ package org.springframework.security.messaging.util.matcher; +import org.jspecify.annotations.Nullable; + import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.simp.SimpMessageHeaderAccessor; @@ -53,7 +55,7 @@ public class SimpMessageTypeMatcher implements MessageMatcher { } @Override - public boolean equals(Object other) { + public boolean equals(@Nullable Object other) { if (this == other) { return true; } diff --git a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2TokenExchangeCompositeAuthenticationToken.java b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2TokenExchangeCompositeAuthenticationToken.java index fb8affcb1a..45af4308c7 100644 --- a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2TokenExchangeCompositeAuthenticationToken.java +++ b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2TokenExchangeCompositeAuthenticationToken.java @@ -71,7 +71,7 @@ public class OAuth2TokenExchangeCompositeAuthenticationToken extends AbstractAut } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (!(obj instanceof OAuth2TokenExchangeCompositeAuthenticationToken other)) { return false; } diff --git a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/OAuth2AuthorizedClientId.java b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/OAuth2AuthorizedClientId.java index 7c3015a92e..b74d6d4639 100644 --- a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/OAuth2AuthorizedClientId.java +++ b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/OAuth2AuthorizedClientId.java @@ -19,6 +19,8 @@ package org.springframework.security.oauth2.client; import java.io.Serializable; import java.util.Objects; +import org.jspecify.annotations.Nullable; + import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.util.Assert; @@ -69,7 +71,7 @@ public final class OAuth2AuthorizedClientId implements Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/ClientRegistration.java b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/ClientRegistration.java index 1222ab9f5a..2c0d99ad6b 100644 --- a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/ClientRegistration.java +++ b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/ClientRegistration.java @@ -766,7 +766,7 @@ public final class ClientRegistration implements Serializable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AbstractOAuth2Token.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AbstractOAuth2Token.java index d06b30aa95..e05a54424d 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AbstractOAuth2Token.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AbstractOAuth2Token.java @@ -92,7 +92,7 @@ public abstract class AbstractOAuth2Token implements OAuth2Token, Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AuthenticationMethod.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AuthenticationMethod.java index 75b1d9f6af..69dadd99af 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AuthenticationMethod.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AuthenticationMethod.java @@ -18,6 +18,8 @@ package org.springframework.security.oauth2.core; import java.io.Serializable; +import org.jspecify.annotations.Nullable; + import org.springframework.util.Assert; /** @@ -59,7 +61,7 @@ public final class AuthenticationMethod implements Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AuthorizationGrantType.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AuthorizationGrantType.java index a1543a1cd1..efe984dfc0 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AuthorizationGrantType.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/AuthorizationGrantType.java @@ -18,6 +18,8 @@ package org.springframework.security.oauth2.core; import java.io.Serializable; +import org.jspecify.annotations.Nullable; + import org.springframework.util.Assert; /** @@ -84,7 +86,7 @@ public final class AuthorizationGrantType implements Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/ClientAuthenticationMethod.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/ClientAuthenticationMethod.java index cdb13b3a4f..151c8a2080 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/ClientAuthenticationMethod.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/ClientAuthenticationMethod.java @@ -18,6 +18,8 @@ package org.springframework.security.oauth2.core; import java.io.Serializable; +import org.jspecify.annotations.Nullable; + import org.springframework.util.Assert; /** @@ -114,7 +116,7 @@ public final class ClientAuthenticationMethod implements Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/OAuth2AccessToken.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/OAuth2AccessToken.java index ef0dbe4ccf..48cbbf6fd5 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/OAuth2AccessToken.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/OAuth2AccessToken.java @@ -135,7 +135,7 @@ public class OAuth2AccessToken extends AbstractOAuth2Token { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/endpoint/OAuth2AuthorizationRequest.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/endpoint/OAuth2AuthorizationRequest.java index 5de190b0ca..9ca7aa0d91 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/endpoint/OAuth2AuthorizationRequest.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/endpoint/OAuth2AuthorizationRequest.java @@ -210,7 +210,7 @@ public class OAuth2AuthorizationRequest implements Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/endpoint/OAuth2AuthorizationResponseType.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/endpoint/OAuth2AuthorizationResponseType.java index df33f6b843..d0e39f79b9 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/endpoint/OAuth2AuthorizationResponseType.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/endpoint/OAuth2AuthorizationResponseType.java @@ -18,6 +18,8 @@ package org.springframework.security.oauth2.core.endpoint; import java.io.Serializable; +import org.jspecify.annotations.Nullable; + import org.springframework.util.Assert; /** @@ -56,7 +58,7 @@ public final class OAuth2AuthorizationResponseType implements Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/DefaultAddressStandardClaim.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/DefaultAddressStandardClaim.java index 28360753bd..89e56d6442 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/DefaultAddressStandardClaim.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/DefaultAddressStandardClaim.java @@ -75,7 +75,7 @@ public final class DefaultAddressStandardClaim implements AddressStandardClaim { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/OidcUserInfo.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/OidcUserInfo.java index 06146bf5d3..8b7d629890 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/OidcUserInfo.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/OidcUserInfo.java @@ -23,6 +23,8 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.function.Consumer; +import org.jspecify.annotations.Nullable; + import org.springframework.util.Assert; /** @@ -66,7 +68,7 @@ public class OidcUserInfo implements StandardClaimAccessor, Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/user/OidcUserAuthority.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/user/OidcUserAuthority.java index 3b6acab6e7..9f53967557 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/user/OidcUserAuthority.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/oidc/user/OidcUserAuthority.java @@ -126,7 +126,7 @@ public class OidcUserAuthority extends OAuth2UserAuthority { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/user/DefaultOAuth2User.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/user/DefaultOAuth2User.java index 27d1e9e7d7..c55fd13397 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/user/DefaultOAuth2User.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/user/DefaultOAuth2User.java @@ -104,7 +104,7 @@ public class DefaultOAuth2User implements OAuth2User, Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/user/OAuth2UserAuthority.java b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/user/OAuth2UserAuthority.java index 7d4a5751a2..9e967378b9 100644 --- a/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/user/OAuth2UserAuthority.java +++ b/oauth2/oauth2-core/src/main/java/org/springframework/security/oauth2/core/user/OAuth2UserAuthority.java @@ -115,7 +115,7 @@ public class OAuth2UserAuthority implements GrantedAuthority { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/core/Saml2X509Credential.java b/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/core/Saml2X509Credential.java index 97a3b987e4..1a6016df5c 100644 --- a/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/core/Saml2X509Credential.java +++ b/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/core/Saml2X509Credential.java @@ -199,7 +199,7 @@ public final class Saml2X509Credential implements Serializable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } diff --git a/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/DefaultSaml2AuthenticatedPrincipal.java b/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/DefaultSaml2AuthenticatedPrincipal.java index 98b4e3d9fa..2eb931acbf 100644 --- a/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/DefaultSaml2AuthenticatedPrincipal.java +++ b/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/DefaultSaml2AuthenticatedPrincipal.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.Objects; import org.jspecify.annotations.NullUnmarked; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; @@ -95,7 +96,7 @@ public class DefaultSaml2AuthenticatedPrincipal implements Saml2AuthenticatedPri } @Override - public boolean equals(Object object) { + public boolean equals(@Nullable Object object) { if (this == object) { return true; } diff --git a/test/src/main/java/org/springframework/security/test/web/servlet/setup/SecurityMockMvcConfigurer.java b/test/src/main/java/org/springframework/security/test/web/servlet/setup/SecurityMockMvcConfigurer.java index 8886311671..6a033c18ff 100644 --- a/test/src/main/java/org/springframework/security/test/web/servlet/setup/SecurityMockMvcConfigurer.java +++ b/test/src/main/java/org/springframework/security/test/web/servlet/setup/SecurityMockMvcConfigurer.java @@ -25,6 +25,7 @@ import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; +import org.jspecify.annotations.Nullable; import org.springframework.security.config.BeanIds; import org.springframework.test.web.servlet.request.RequestPostProcessor; @@ -142,7 +143,7 @@ final class SecurityMockMvcConfigurer extends MockMvcConfigurerAdapter { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { return getDelegate().equals(obj); } diff --git a/web/src/main/java/org/springframework/security/web/access/intercept/RequestKey.java b/web/src/main/java/org/springframework/security/web/access/intercept/RequestKey.java index 4b822ce7a2..72781ead1b 100644 --- a/web/src/main/java/org/springframework/security/web/access/intercept/RequestKey.java +++ b/web/src/main/java/org/springframework/security/web/access/intercept/RequestKey.java @@ -49,7 +49,7 @@ public class RequestKey { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (!(obj instanceof RequestKey key)) { return false; } diff --git a/web/src/main/java/org/springframework/security/web/authentication/WebAuthenticationDetails.java b/web/src/main/java/org/springframework/security/web/authentication/WebAuthenticationDetails.java index b4444d1e93..fa56d3520c 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/WebAuthenticationDetails.java +++ b/web/src/main/java/org/springframework/security/web/authentication/WebAuthenticationDetails.java @@ -80,7 +80,7 @@ public class WebAuthenticationDetails implements Serializable { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } diff --git a/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserGrantedAuthority.java b/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserGrantedAuthority.java index 475beae7f9..6da9b14306 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserGrantedAuthority.java +++ b/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserGrantedAuthority.java @@ -16,6 +16,8 @@ package org.springframework.security.web.authentication.switchuser; +import org.jspecify.annotations.Nullable; + import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.util.Assert; @@ -59,7 +61,7 @@ public final class SwitchUserGrantedAuthority implements GrantedAuthority { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/web/src/main/java/org/springframework/security/web/header/Header.java b/web/src/main/java/org/springframework/security/web/header/Header.java index cc6c75b3f5..921852ebfd 100644 --- a/web/src/main/java/org/springframework/security/web/header/Header.java +++ b/web/src/main/java/org/springframework/security/web/header/Header.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.List; import jakarta.servlet.http.HttpServletResponse; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; @@ -62,7 +63,7 @@ public final class Header { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/web/src/main/java/org/springframework/security/web/server/csrf/DefaultCsrfToken.java b/web/src/main/java/org/springframework/security/web/server/csrf/DefaultCsrfToken.java index faac96293d..dfc68fd5ff 100644 --- a/web/src/main/java/org/springframework/security/web/server/csrf/DefaultCsrfToken.java +++ b/web/src/main/java/org/springframework/security/web/server/csrf/DefaultCsrfToken.java @@ -18,6 +18,8 @@ package org.springframework.security.web.server.csrf; import java.io.Serial; +import org.jspecify.annotations.Nullable; + import org.springframework.util.Assert; /** @@ -69,7 +71,7 @@ public final class DefaultCsrfToken implements CsrfToken { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/web/src/main/java/org/springframework/security/web/servlet/util/matcher/PathPatternRequestMatcher.java b/web/src/main/java/org/springframework/security/web/servlet/util/matcher/PathPatternRequestMatcher.java index c86a04f856..8ebd48aca5 100644 --- a/web/src/main/java/org/springframework/security/web/servlet/util/matcher/PathPatternRequestMatcher.java +++ b/web/src/main/java/org/springframework/security/web/servlet/util/matcher/PathPatternRequestMatcher.java @@ -161,7 +161,7 @@ public final class PathPatternRequestMatcher implements RequestMatcher { * {@inheritDoc} */ @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof PathPatternRequestMatcher that)) { return false; } diff --git a/web/src/main/java/org/springframework/security/web/util/OnCommittedResponseWrapper.java b/web/src/main/java/org/springframework/security/web/util/OnCommittedResponseWrapper.java index 6d0f576d76..ecc22724d6 100644 --- a/web/src/main/java/org/springframework/security/web/util/OnCommittedResponseWrapper.java +++ b/web/src/main/java/org/springframework/security/web/util/OnCommittedResponseWrapper.java @@ -24,6 +24,7 @@ import jakarta.servlet.ServletOutputStream; import jakarta.servlet.WriteListener; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponseWrapper; +import org.jspecify.annotations.Nullable; /** * Base class for response wrappers which encapsulate the logic for handling an event when @@ -311,7 +312,7 @@ public abstract class OnCommittedResponseWrapper extends HttpServletResponseWrap } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { return this.delegate.equals(obj); } @@ -678,7 +679,7 @@ public abstract class OnCommittedResponseWrapper extends HttpServletResponseWrap } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { return this.delegate.equals(obj); } diff --git a/web/src/main/java/org/springframework/security/web/util/matcher/AndRequestMatcher.java b/web/src/main/java/org/springframework/security/web/util/matcher/AndRequestMatcher.java index 6b96696f2d..73a234544f 100644 --- a/web/src/main/java/org/springframework/security/web/util/matcher/AndRequestMatcher.java +++ b/web/src/main/java/org/springframework/security/web/util/matcher/AndRequestMatcher.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.Objects; import jakarta.servlet.http.HttpServletRequest; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; @@ -88,7 +89,7 @@ public final class AndRequestMatcher implements RequestMatcher { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } diff --git a/web/src/main/java/org/springframework/security/web/util/matcher/AnyRequestMatcher.java b/web/src/main/java/org/springframework/security/web/util/matcher/AnyRequestMatcher.java index f7a53805e5..28fcfb6605 100644 --- a/web/src/main/java/org/springframework/security/web/util/matcher/AnyRequestMatcher.java +++ b/web/src/main/java/org/springframework/security/web/util/matcher/AnyRequestMatcher.java @@ -17,6 +17,7 @@ package org.springframework.security.web.util.matcher; import jakarta.servlet.http.HttpServletRequest; +import org.jspecify.annotations.Nullable; /** * Matches any supplied request. @@ -38,7 +39,7 @@ public final class AnyRequestMatcher implements RequestMatcher { @Override @SuppressWarnings("deprecation") - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { return obj instanceof AnyRequestMatcher || obj instanceof org.springframework.security.web.util.matcher.AnyRequestMatcher; } diff --git a/web/src/main/java/org/springframework/security/web/util/matcher/MediaTypeRequestMatcher.java b/web/src/main/java/org/springframework/security/web/util/matcher/MediaTypeRequestMatcher.java index f59ff8bb1f..c0c73d51c8 100644 --- a/web/src/main/java/org/springframework/security/web/util/matcher/MediaTypeRequestMatcher.java +++ b/web/src/main/java/org/springframework/security/web/util/matcher/MediaTypeRequestMatcher.java @@ -26,6 +26,7 @@ import java.util.Set; import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.http.MediaType; import org.springframework.util.Assert; @@ -253,7 +254,7 @@ public final class MediaTypeRequestMatcher implements RequestMatcher { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/web/src/main/java/org/springframework/security/web/util/matcher/NegatedRequestMatcher.java b/web/src/main/java/org/springframework/security/web/util/matcher/NegatedRequestMatcher.java index 158b2511c2..cb3c031278 100644 --- a/web/src/main/java/org/springframework/security/web/util/matcher/NegatedRequestMatcher.java +++ b/web/src/main/java/org/springframework/security/web/util/matcher/NegatedRequestMatcher.java @@ -19,6 +19,7 @@ package org.springframework.security.web.util.matcher; import java.util.Objects; import jakarta.servlet.http.HttpServletRequest; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; @@ -50,7 +51,7 @@ public class NegatedRequestMatcher implements RequestMatcher { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/web/src/main/java/org/springframework/security/web/util/matcher/OrRequestMatcher.java b/web/src/main/java/org/springframework/security/web/util/matcher/OrRequestMatcher.java index 8204dc77b9..74b12cfa57 100644 --- a/web/src/main/java/org/springframework/security/web/util/matcher/OrRequestMatcher.java +++ b/web/src/main/java/org/springframework/security/web/util/matcher/OrRequestMatcher.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Objects; import jakarta.servlet.http.HttpServletRequest; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; @@ -83,7 +84,7 @@ public final class OrRequestMatcher implements RequestMatcher { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) { return true; } diff --git a/web/src/main/java/org/springframework/security/web/util/matcher/RequestHeaderRequestMatcher.java b/web/src/main/java/org/springframework/security/web/util/matcher/RequestHeaderRequestMatcher.java index 3d07b18302..d3731c9ddf 100644 --- a/web/src/main/java/org/springframework/security/web/util/matcher/RequestHeaderRequestMatcher.java +++ b/web/src/main/java/org/springframework/security/web/util/matcher/RequestHeaderRequestMatcher.java @@ -94,7 +94,7 @@ public final class RequestHeaderRequestMatcher implements RequestMatcher { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } diff --git a/webauthn/src/main/java/org/springframework/security/web/webauthn/api/Bytes.java b/webauthn/src/main/java/org/springframework/security/web/webauthn/api/Bytes.java index f3aa1a98e1..7827227a49 100644 --- a/webauthn/src/main/java/org/springframework/security/web/webauthn/api/Bytes.java +++ b/webauthn/src/main/java/org/springframework/security/web/webauthn/api/Bytes.java @@ -71,7 +71,7 @@ public final class Bytes implements Serializable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj instanceof Bytes that) { return that.toBase64UrlString().equals(toBase64UrlString()); }