diff --git a/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/ConnectionGroupPermission.java b/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/ConnectionGroupPermission.java deleted file mode 100644 index f24e63b64..000000000 --- a/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/ConnectionGroupPermission.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2013 Glyptodon LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package org.glyptodon.guacamole.net.auth.permission; - - -/** - * A permission which controls operations that directly affect a specific - * ConnectionGroup. Note that this permission only refers to the - * ConnectionGroup by its identifier. The actual ConnectionGroup - * is not stored within. - * - * @author James Muehlner - */ -public class ConnectionGroupPermission - implements ObjectPermission { - - /** - * The identifier of the GuacamoleConfiguration associated with the - * operation affected by this permission. - */ - private String identifier; - - /** - * The type of operation affected by this permission. - */ - private ObjectPermission.Type type; - - /** - * Creates a new ConnectionGroupPermission having the given type - * and identifier. The identifier must be the unique identifier assigned - * to the ConnectionGroup by the AuthenticationProvider in use. - * - * @param type The type of operation affected by this permission. - * @param identifier The identifier of the ConnectionGroup associated - * with the operation affected by this permission. - */ - public ConnectionGroupPermission(ObjectPermission.Type type, String identifier) { - - this.identifier = identifier; - this.type = type; - - } - - @Override - public String getObjectIdentifier() { - return identifier; - } - - @Override - public ObjectPermission.Type getType() { - 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 ConnectionGroupPermission other = - (ConnectionGroupPermission) 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/org/glyptodon/guacamole/net/auth/permission/ConnectionPermission.java b/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/ConnectionPermission.java deleted file mode 100644 index 0802af5af..000000000 --- a/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/ConnectionPermission.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2013 Glyptodon LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package org.glyptodon.guacamole.net.auth.permission; - - -/** - * A permission which controls operations that directly affect a specific - * GuacamoleConfiguration. Note that this permission only refers to the - * GuacamoleConfiguration by its identifier. The actual GuacamoleConfiguration - * is not stored within. - * - * @author Michael Jumper - */ -public class ConnectionPermission - implements ObjectPermission { - - /** - * The identifier of the GuacamoleConfiguration associated with the - * operation affected by this permission. - */ - private String identifier; - - /** - * The type of operation affected by this permission. - */ - private Type type; - - /** - * Creates a new ConnectionPermission having the given type - * and identifier. The identifier must be the unique identifier assigned - * to the GuacamoleConfiguration by the AuthenticationProvider in use. - * - * @param type The type of operation affected by this permission. - * @param identifier The identifier of the GuacamoleConfiguration associated - * with the operation affected by this permission. - */ - public ConnectionPermission(Type type, String identifier) { - - this.identifier = identifier; - this.type = type; - - } - - @Override - public String getObjectIdentifier() { - return identifier; - } - - @Override - public Type getType() { - 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 ConnectionPermission other = - (ConnectionPermission) 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/org/glyptodon/guacamole/net/auth/permission/ObjectPermission.java b/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/ObjectPermission.java index f079ae4fc..c776e3414 100644 --- a/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/ObjectPermission.java +++ b/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/ObjectPermission.java @@ -28,9 +28,10 @@ package org.glyptodon.guacamole.net.auth.permission; * whole. * * @author Michael Jumper - * @param The type of identifier used by the object this permission affects. + * @param + * The type of identifier used by the object this permission affects. */ -public interface ObjectPermission extends Permission { +public class ObjectPermission implements Permission { /** * Specific types of object-level permissions. Each permission type is @@ -61,12 +62,80 @@ public interface ObjectPermission extends Permission { } /** + * The identifier of the GuacamoleConfiguration associated with the + * operation affected by this permission. + */ + private final IdentifierType identifier; + + /** + * The type of operation affected by this permission. + */ + private final Type type; + + /** + * Creates a new ObjectPermission having the given type and identifier. + * The identifier must be the unique identifier assigned to the object + * associated with this permission by the AuthenticationProvider in use. + * + * @param type + * The type of operation affected by this permission. + * + * @param identifier + * The identifier of the object associated with the operation affected + * by this permission. + */ + public ObjectPermission(Type type, IdentifierType identifier) { + + this.identifier = identifier; + this.type = type; + + } + + /** * Returns the identifier of the specific object affected by this * permission. * * @return The identifier of the specific object affected by this * permission. */ - public T getObjectIdentifier(); + public IdentifierType getObjectIdentifier() { + return identifier; + } + + @Override + public Type getType() { + 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 ObjectPermission other = (ObjectPermission) 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/org/glyptodon/guacamole/net/auth/permission/UserPermission.java b/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/UserPermission.java deleted file mode 100644 index 89aa085b8..000000000 --- a/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/permission/UserPermission.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2013 Glyptodon LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package org.glyptodon.guacamole.net.auth.permission; - - -/** - * A permission which controls operations that directly affect a specific - * User. - * - * @author Michael Jumper - */ -public class UserPermission implements ObjectPermission { - - /** - * The username of the User associated with the operation affected by this - * permission. - */ - private String identifier; - - /** - * The type of operation affected by this permission. - */ - private Type type; - - /** - * Creates a new UserPermission having the given type and identifier. The - * identifier must be the user's username. - * - * @param type The type of operation affected by this permission. - * @param identifier The username of the User associated with the operation - * affected by this permission. - */ - public UserPermission(Type type, String identifier) { - - this.identifier = identifier; - this.type = type; - - } - - @Override - public String getObjectIdentifier() { - return identifier; - } - - @Override - public Type getType() { - 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); - - } - -}