From e37d0eb1c9883ee53a1925d44c385ef1c6812542 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 30 Jan 2013 23:24:56 -0800 Subject: [PATCH] Implement equals() and hashCode() for permissions. --- ...amoleConfigurationDirectoryPermission.java | 22 +++++++++++++ .../GuacamoleConfigurationPermission.java | 32 +++++++++++++++++++ .../permission/UserDirectoryPermission.java | 21 ++++++++++++ .../net/auth/permission/UserPermission.java | 31 ++++++++++++++++++ 4 files changed, 106 insertions(+) diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/GuacamoleConfigurationDirectoryPermission.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/GuacamoleConfigurationDirectoryPermission.java index 4d9b4d4e4..71a24ffef 100644 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/GuacamoleConfigurationDirectoryPermission.java +++ b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/GuacamoleConfigurationDirectoryPermission.java @@ -66,4 +66,26 @@ public class GuacamoleConfigurationDirectoryPermission return type; } + @Override + public int hashCode() { + return type.hashCode(); + } + + @Override + public boolean equals(Object obj) { + + // Not equal if null or wrong type + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + final GuacamoleConfigurationDirectoryPermission other = + (GuacamoleConfigurationDirectoryPermission) obj; + + // Compare types + if (type != other.type) + return false; + + return true; + } + } diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/GuacamoleConfigurationPermission.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/GuacamoleConfigurationPermission.java index abaacebce..1661c5c93 100644 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/GuacamoleConfigurationPermission.java +++ b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/GuacamoleConfigurationPermission.java @@ -86,4 +86,36 @@ public class GuacamoleConfigurationPermission return type; } + @Override + public int hashCode() { + int hash = 5; + if (identifier != null) hash = 47 * hash + identifier.hashCode(); + if (type != null) hash = 47 * hash + type.hashCode(); + return hash; + } + + @Override + public boolean equals(Object obj) { + + // Not equal if null or wrong type + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + final GuacamoleConfigurationPermission other = + (GuacamoleConfigurationPermission) obj; + + // Not equal if different type + if (this.type != other.type) + return false; + + // If null identifier, equality depends on whether other identifier + // is null + if (identifier == null) + return other.identifier != null; + + // Otherwise, equality depends entirely on identifier + return identifier.equals(other.identifier); + + } + } diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserDirectoryPermission.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserDirectoryPermission.java index dc87da095..52548cb7e 100644 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserDirectoryPermission.java +++ b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserDirectoryPermission.java @@ -64,4 +64,25 @@ public class UserDirectoryPermission implements SystemPermission { return type; } + @Override + public int hashCode() { + return type.hashCode(); + } + + @Override + public boolean equals(Object obj) { + + // Not equal if null or wrong type + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + final UserDirectoryPermission other = (UserDirectoryPermission) obj; + + // Compare types + if (type != other.type) + return false; + + return true; + } + } diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserPermission.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserPermission.java index bfe2b9fad..e83000619 100644 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserPermission.java +++ b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserPermission.java @@ -82,4 +82,35 @@ public class UserPermission implements ObjectPermission { return type; } + @Override + public int hashCode() { + int hash = 5; + if (identifier != null) hash = 47 * hash + identifier.hashCode(); + if (type != null) hash = 47 * hash + type.hashCode(); + return hash; + } + + @Override + public boolean equals(Object obj) { + + // Not equal if null or wrong type + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + final UserPermission other = (UserPermission) obj; + + // Not equal if different type + if (this.type != other.type) + return false; + + // If null identifier, equality depends on whether other identifier + // is null + if (identifier == null) + return other.identifier != null; + + // Otherwise, equality depends entirely on identifier + return identifier.equals(other.identifier); + + } + }