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 c5f02f7d68..0a735f3517 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 @@ -128,6 +128,18 @@ public class AccessControlEntryImpl implements AccessControlEntry, return true; } + @Override + public int hashCode() { + int result = this.acl.hashCode(); + result = 31 * result + this.permission.hashCode(); + result = 31 * result + (this.id != null ? this.id.hashCode() : 0); + result = 31 * result + this.sid.hashCode(); + result = 31 * result + (this.auditFailure ? 1 : 0); + result = 31 * result + (this.auditSuccess ? 1 : 0); + result = 31 * result + (this.granting ? 1 : 0); + return result; + } + public Acl getAcl() { return acl; } 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 7d47f429dc..babeb26d47 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 @@ -325,6 +325,22 @@ public class AclImpl implements Acl, MutableAcl, AuditableAcl, OwnershipAcl { return false; } + @Override + public int hashCode() { + int result = this.parentAcl != null ? this.parentAcl.hashCode() : 0; + result = 31 * result + this.aclAuthorizationStrategy.hashCode(); + result = 31 * result + (this.permissionGrantingStrategy != null ? + this.permissionGrantingStrategy.hashCode() : + 0); + result = 31 * result + (this.aces != null ? this.aces.hashCode() : 0); + result = 31 * result + this.objectIdentity.hashCode(); + result = 31 * result + this.id.hashCode(); + result = 31 * result + (this.owner != null ? this.owner.hashCode() : 0); + result = 31 * result + (this.loadedSids != null ? this.loadedSids.hashCode() : 0); + result = 31 * result + (this.entriesInheriting ? 1 : 0); + return result; + } + public String toString() { StringBuilder sb = new StringBuilder(); sb.append("AclImpl["); 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 fe8cbcab6d..2cf3597326 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 @@ -144,6 +144,17 @@ public class CasAuthenticationToken extends AbstractAuthenticationToken implemen return false; } + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + this.credentials.hashCode(); + result = 31 * result + this.principal.hashCode(); + result = 31 * result + this.userDetails.hashCode(); + result = 31 * result + this.keyHash; + result = 31 * result + (this.assertion != null ? this.assertion.hashCode() : 0); + return result; + } + public Object getCredentials() { return this.credentials; } 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 988d728c65..4a2fac6756 100644 --- a/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java +++ b/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java @@ -100,6 +100,13 @@ public class AnonymousAuthenticationToken extends AbstractAuthenticationToken im return false; } + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + this.keyHash; + return result; + } + /** * Always returns an empty String * 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 3fd5486cbe..745d85b11c 100644 --- a/core/src/main/java/org/springframework/security/authentication/RememberMeAuthenticationToken.java +++ b/core/src/main/java/org/springframework/security/authentication/RememberMeAuthenticationToken.java @@ -120,4 +120,10 @@ public class RememberMeAuthenticationToken extends AbstractAuthenticationToken { return false; } + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + this.keyHash; + return result; + } } 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 e804c5894c..e36715df3b 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 @@ -60,6 +60,23 @@ public final class Header { return this.headerValues; } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + Header header = (Header) o; + + if (!this.headerName.equals(header.headerName)) { + return false; + } + return this.headerValues.equals(header.headerValues); + } + public int hashCode() { return headerName.hashCode() + headerValues.hashCode(); }