mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 17:13:21 +00:00 
			
		
		
		
	GUAC-1100: Commit to String identifiers.
This commit is contained in:
		| @@ -44,12 +44,12 @@ public abstract class AbstractUser implements User { | ||||
|     private String password; | ||||
|  | ||||
|     @Override | ||||
|     public String getUsername() { | ||||
|     public String getIdentifier() { | ||||
|         return username; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void setUsername(String username) { | ||||
|     public void setIdentifier(String username) { | ||||
|         this.username = username; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -36,7 +36,7 @@ import org.glyptodon.guacamole.protocol.GuacamoleConfiguration; | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  */ | ||||
| public interface Connection { | ||||
| public interface Connection extends Identifiable { | ||||
|  | ||||
|     /** | ||||
|      * Returns the name assigned to this Connection. | ||||
| @@ -51,24 +51,6 @@ public interface Connection { | ||||
|      */ | ||||
|     public void setName(String name); | ||||
|  | ||||
|     /** | ||||
|      * Returns the unique identifier assigned to this Connection. All | ||||
|      * connections must have a deterministic, unique identifier which may not | ||||
|      * be null. | ||||
|      * | ||||
|      * @return | ||||
|      *     The unique identifier assigned to this Connection, which may not be | ||||
|      *     null. | ||||
|      */ | ||||
|     public String getIdentifier(); | ||||
|  | ||||
|     /** | ||||
|      * Sets the identifier assigned to this Connection. | ||||
|      * | ||||
|      * @param identifier The identifier to assign. | ||||
|      */ | ||||
|     public void setIdentifier(String identifier); | ||||
|  | ||||
|     /** | ||||
|      * Returns the unique identifier of the parent ConnectionGroup for | ||||
|      * this Connection. | ||||
|   | ||||
| @@ -32,10 +32,29 @@ import org.glyptodon.guacamole.protocol.GuacamoleClientInformation; | ||||
|  * | ||||
|  * @author James Muehlner | ||||
|  */ | ||||
| public interface ConnectionGroup { | ||||
|      | ||||
| public interface ConnectionGroup extends Identifiable { | ||||
|    | ||||
|     /** | ||||
|      * All legal types of connection group. | ||||
|      */ | ||||
|     public enum Type { | ||||
|         ORGANIZATIONAL, BALANCING | ||||
|  | ||||
|         /** | ||||
|          * A connection group that purely organizes other connections or | ||||
|          * connection groups, serving only as a container. An organizational | ||||
|          * connection group is analogous to a directory or folder in a | ||||
|          * filesystem. | ||||
|          */ | ||||
|         ORGANIZATIONAL, | ||||
|  | ||||
|         /** | ||||
|          * A connection group that acts as a load balancer. A balancing | ||||
|          * connection group can be connected to in the same manner as a | ||||
|          * connection, and will transparently route to the least-used | ||||
|          * underlying connection. | ||||
|          */ | ||||
|         BALANCING | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
| @@ -51,24 +70,6 @@ public interface ConnectionGroup { | ||||
|      */ | ||||
|     public void setName(String name); | ||||
|  | ||||
|     /** | ||||
|      * Returns the unique identifier assigned to this ConnectionGroup. All | ||||
|      * connection groups must have a deterministic, unique identifier which may | ||||
|      * not be null. | ||||
|      * | ||||
|      * @return | ||||
|      *     The unique identifier assigned to this ConnectionGroup, which may | ||||
|      *     not be null. | ||||
|      */ | ||||
|     public String getIdentifier(); | ||||
|  | ||||
|     /** | ||||
|      * Sets the identifier assigned to this ConnectionGroup. | ||||
|      * | ||||
|      * @param identifier The identifier to assign. | ||||
|      */ | ||||
|     public void setIdentifier(String identifier); | ||||
|  | ||||
|     /** | ||||
|      * Returns the unique identifier of the parent ConnectionGroup for | ||||
|      * this ConnectionGroup. | ||||
| @@ -111,7 +112,7 @@ public interface ConnectionGroup { | ||||
|      * @throws GuacamoleException If an error occurs while creating the | ||||
|      *                            Directory. | ||||
|      */ | ||||
|     Directory<String, Connection> getConnectionDirectory() | ||||
|     Directory<Connection> getConnectionDirectory() | ||||
|             throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
| @@ -125,7 +126,7 @@ public interface ConnectionGroup { | ||||
|      * @throws GuacamoleException If an error occurs while creating the | ||||
|      *                            Directory. | ||||
|      */ | ||||
|     Directory<String, ConnectionGroup> getConnectionGroupDirectory() | ||||
|     Directory<ConnectionGroup> getConnectionGroupDirectory() | ||||
|             throws GuacamoleException; | ||||
|      | ||||
|     /** | ||||
|   | ||||
| @@ -34,11 +34,10 @@ import org.glyptodon.guacamole.GuacamoleException; | ||||
|  * function. | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  * @param <IdentifierType> The type of identifier used to identify objects | ||||
|  *                         stored within this Directory. | ||||
|  * @param <ObjectType> The type of objects stored within this Directory. | ||||
|  * @param <ObjectType> | ||||
|  *     The type of objects stored within this Directory. | ||||
|  */ | ||||
| public interface Directory<IdentifierType, ObjectType> { | ||||
| public interface Directory<ObjectType> { | ||||
|  | ||||
|     /** | ||||
|      * Returns the object having the given identifier. Note that changes to | ||||
| @@ -56,7 +55,7 @@ public interface Directory<IdentifierType, ObjectType> { | ||||
|      *                            object, or if permission for retrieving the | ||||
|      *                            object is denied. | ||||
|      */ | ||||
|     ObjectType get(IdentifierType identifier) throws GuacamoleException; | ||||
|     ObjectType get(String identifier) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Returns the objects having the given identifiers. Note that changes to | ||||
| @@ -78,7 +77,7 @@ public interface Directory<IdentifierType, ObjectType> { | ||||
|      *     If an error occurs while retrieving the objects, or if permission | ||||
|      *     to retrieve the requested objects is denied. | ||||
|      */ | ||||
|     Collection<ObjectType> getAll(Collection<IdentifierType> identifiers) | ||||
|     Collection<ObjectType> getAll(Collection<String> identifiers) | ||||
|             throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
| @@ -89,7 +88,7 @@ public interface Directory<IdentifierType, ObjectType> { | ||||
|      * @throws GuacamoleException If an error occurs while retrieving | ||||
|      *                            the identifiers. | ||||
|      */ | ||||
|     Set<IdentifierType> getIdentifiers() throws GuacamoleException; | ||||
|     Set<String> getIdentifiers() throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Adds the given object to the overall set. | ||||
| @@ -121,7 +120,7 @@ public interface Directory<IdentifierType, ObjectType> { | ||||
|      * @throws GuacamoleException If an error occurs while removing the object, | ||||
|      *                            or if removing object is not allowed. | ||||
|      */ | ||||
|     void remove(IdentifierType identifier) throws GuacamoleException; | ||||
|     void remove(String identifier) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Moves the object with the given identifier to the given directory. | ||||
| @@ -132,7 +131,7 @@ public interface Directory<IdentifierType, ObjectType> { | ||||
|      * @throws GuacamoleException If an error occurs while moving the object, | ||||
|      *                            or if moving object is not allowed. | ||||
|      */ | ||||
|     void move(IdentifierType identifier, Directory<IdentifierType, ObjectType> directory)  | ||||
|     void move(String identifier, Directory<ObjectType> directory)  | ||||
|             throws GuacamoleException; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,52 @@ | ||||
| /* | ||||
|  * 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; | ||||
|  | ||||
| /** | ||||
|  * An object which has a deterministic, unique identifier, which may not be | ||||
|  * null. | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  */ | ||||
| public interface Identifiable { | ||||
|  | ||||
|     /** | ||||
|      * Returns the unique identifier assigned to this object. All identifiable | ||||
|      * objects must have a deterministic, unique identifier which may not be | ||||
|      * null. | ||||
|      * | ||||
|      * @return | ||||
|      *     The unique identifier assigned to this object, which may not be | ||||
|      *     null. | ||||
|      */ | ||||
|     public String getIdentifier(); | ||||
|  | ||||
|     /** | ||||
|      * Sets the identifier assigned to this object. | ||||
|      * | ||||
|      * @param identifier | ||||
|      *     The identifier to assign. | ||||
|      */ | ||||
|     public void setIdentifier(String identifier); | ||||
|  | ||||
| } | ||||
| @@ -32,24 +32,7 @@ import org.glyptodon.guacamole.net.auth.permission.SystemPermissionSet; | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  */ | ||||
| public interface User { | ||||
|  | ||||
|     /** | ||||
|      * Returns the name of this user, which must be unique across all users. | ||||
|      * All users must have a deterministic, unique username which may not be | ||||
|      * null. | ||||
|      * | ||||
|      * @return | ||||
|      *     The unique username of this user, which may not be null. | ||||
|      */ | ||||
|     public String getUsername(); | ||||
|  | ||||
|     /** | ||||
|      * Sets the name of this user, which must be unique across all users. | ||||
|      * | ||||
|      * @param username  The name of this user. | ||||
|      */ | ||||
|     public void setUsername(String username); | ||||
| public interface User extends Identifiable { | ||||
|  | ||||
|     /** | ||||
|      * Returns this user's password. Note that the password returned may be | ||||
| @@ -92,7 +75,7 @@ public interface User { | ||||
|      *     If an error occurs while retrieving permissions, or if reading all | ||||
|      *     permissions is not allowed. | ||||
|      */ | ||||
|     ObjectPermissionSet<String> getConnectionPermissions() | ||||
|     ObjectPermissionSet getConnectionPermissions() | ||||
|             throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
| @@ -106,7 +89,7 @@ public interface User { | ||||
|      *     If an error occurs while retrieving permissions, or if reading all | ||||
|      *     permissions is not allowed. | ||||
|      */ | ||||
|     ObjectPermissionSet<String> getConnectionGroupPermissions() | ||||
|     ObjectPermissionSet getConnectionGroupPermissions() | ||||
|             throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
| @@ -119,6 +102,6 @@ public interface User { | ||||
|      *     If an error occurs while retrieving permissions, or if reading all | ||||
|      *     permissions is not allowed. | ||||
|      */ | ||||
|     ObjectPermissionSet<String> getUserPermissions() throws GuacamoleException; | ||||
|     ObjectPermissionSet getUserPermissions() throws GuacamoleException; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -52,7 +52,7 @@ public interface UserContext { | ||||
|      * @throws GuacamoleException If an error occurs while creating the | ||||
|      *                            Directory. | ||||
|      */ | ||||
|     Directory<String, User> getUserDirectory() throws GuacamoleException; | ||||
|     Directory<User> getUserDirectory() throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Retrieves a connection group which can be used to view and manipulate | ||||
|   | ||||
| @@ -28,10 +28,8 @@ package org.glyptodon.guacamole.net.auth.permission; | ||||
|  * whole. | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  * @param <IdentifierType> | ||||
|  *     The type of identifier used by the object this permission affects. | ||||
|  */ | ||||
| public class ObjectPermission<IdentifierType> implements Permission<ObjectPermission.Type> { | ||||
| public class ObjectPermission implements Permission<ObjectPermission.Type> { | ||||
|  | ||||
|     /** | ||||
|      * Specific types of object-level permissions. Each permission type is | ||||
| @@ -65,7 +63,7 @@ public class ObjectPermission<IdentifierType> implements Permission<ObjectPermis | ||||
|      * The identifier of the GuacamoleConfiguration associated with the | ||||
|      * operation affected by this permission. | ||||
|      */ | ||||
|     private final IdentifierType identifier; | ||||
|     private final String identifier; | ||||
|  | ||||
|     /** | ||||
|      * The type of operation affected by this permission. | ||||
| @@ -84,7 +82,7 @@ public class ObjectPermission<IdentifierType> implements Permission<ObjectPermis | ||||
|      *     The identifier of the object associated with the operation affected | ||||
|      *     by this permission. | ||||
|      */ | ||||
|     public ObjectPermission(Type type, IdentifierType identifier) { | ||||
|     public ObjectPermission(Type type, String identifier) { | ||||
|  | ||||
|         this.identifier = identifier; | ||||
|         this.type = type; | ||||
| @@ -98,7 +96,7 @@ public class ObjectPermission<IdentifierType> implements Permission<ObjectPermis | ||||
|      * @return The identifier of the specific object affected by this | ||||
|      *         permission. | ||||
|      */ | ||||
|     public IdentifierType getObjectIdentifier() { | ||||
|     public String getObjectIdentifier() { | ||||
|         return identifier; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -32,12 +32,8 @@ import org.glyptodon.guacamole.GuacamoleException; | ||||
|  * an associated unique identifier. | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  * @param <IdentifierType> | ||||
|  *     The type of identifier used to identify objects affected by permissions | ||||
|  *     stored in this ObjectPermissionSet. | ||||
|  */ | ||||
| public interface ObjectPermissionSet<IdentifierType> | ||||
|     extends PermissionSet<ObjectPermission<IdentifierType>> { | ||||
| public interface ObjectPermissionSet extends PermissionSet<ObjectPermission> { | ||||
|  | ||||
|     /** | ||||
|      * Tests whether the permission of the given type is granted for the | ||||
| @@ -58,7 +54,7 @@ public interface ObjectPermissionSet<IdentifierType> | ||||
|      *     cannot be checked due to lack of permissions to do so. | ||||
|      */ | ||||
|     boolean hasPermission(ObjectPermission.Type permission, | ||||
|             IdentifierType identifier) throws GuacamoleException; | ||||
|             String identifier) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Adds the specified permission for the object having the given | ||||
| @@ -76,7 +72,7 @@ public interface ObjectPermissionSet<IdentifierType> | ||||
|      *     add permissions is denied. | ||||
|      */ | ||||
|     void addPermission(ObjectPermission.Type permission, | ||||
|             IdentifierType identifier) throws GuacamoleException; | ||||
|             String identifier) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Removes the specified permission for the object having the given | ||||
| @@ -94,7 +90,7 @@ public interface ObjectPermissionSet<IdentifierType> | ||||
|      *     to remove permissions is denied. | ||||
|      */ | ||||
|     void removePermission(ObjectPermission.Type permission, | ||||
|             IdentifierType identifier) throws GuacamoleException; | ||||
|             String identifier) throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Tests whether this user has the specified permissions for the objects | ||||
| @@ -119,20 +115,20 @@ public interface ObjectPermissionSet<IdentifierType> | ||||
|      *     If an error occurs while checking permissions, or if permissions | ||||
|      *     cannot be checked due to lack of permissions to do so. | ||||
|      */ | ||||
|     Collection<IdentifierType> getAccessibleObjects( | ||||
|     Collection<String> getAccessibleObjects( | ||||
|             Collection<ObjectPermission.Type> permissions, | ||||
|             Collection<IdentifierType> identifiers) throws GuacamoleException; | ||||
|             Collection<String> identifiers) throws GuacamoleException; | ||||
|  | ||||
|     @Override | ||||
|     Set<ObjectPermission<IdentifierType>> getPermissions() | ||||
|     Set<ObjectPermission> getPermissions() | ||||
|             throws GuacamoleException; | ||||
|  | ||||
|     @Override | ||||
|     void addPermissions(Set<ObjectPermission<IdentifierType>> permissions) | ||||
|     void addPermissions(Set<ObjectPermission> permissions) | ||||
|             throws GuacamoleException; | ||||
|  | ||||
|     @Override | ||||
|     void removePermissions(Set<ObjectPermission<IdentifierType>> permissions) | ||||
|     void removePermissions(Set<ObjectPermission> permissions) | ||||
|             throws GuacamoleException; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -35,7 +35,7 @@ import org.glyptodon.guacamole.protocol.GuacamoleConfiguration; | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  */ | ||||
| public class SimpleConnectionDirectory extends SimpleDirectory<String, Connection> { | ||||
| public class SimpleConnectionDirectory extends SimpleDirectory<Connection> { | ||||
|  | ||||
|     /** | ||||
|      * The Map of Connections to provide access to. | ||||
|   | ||||
| @@ -44,13 +44,13 @@ public class SimpleConnectionGroup extends AbstractConnectionGroup { | ||||
|      * Underlying connection directory, containing all connections within this | ||||
|      * group. | ||||
|      */ | ||||
|     private final Directory<String, Connection> connectionDirectory; | ||||
|     private final Directory<Connection> connectionDirectory; | ||||
|  | ||||
|     /** | ||||
|      * Underlying connection group directory, containing all connections within | ||||
|      * this group. | ||||
|      */ | ||||
|     private final Directory<String, ConnectionGroup> connectionGroupDirectory; | ||||
|     private final Directory<ConnectionGroup> connectionGroupDirectory; | ||||
|      | ||||
|     /** | ||||
|      * Creates a new SimpleConnectionGroup having the given name and identifier | ||||
| @@ -64,8 +64,8 @@ public class SimpleConnectionGroup extends AbstractConnectionGroup { | ||||
|      *                                 when requested. | ||||
|      */ | ||||
|     public SimpleConnectionGroup(String name, String identifier, | ||||
|             Directory<String, Connection> connectionDirectory,  | ||||
|             Directory<String, ConnectionGroup> connectionGroupDirectory) { | ||||
|             Directory<Connection> connectionDirectory,  | ||||
|             Directory<ConnectionGroup> connectionGroupDirectory) { | ||||
|  | ||||
|         // Set name | ||||
|         setName(name); | ||||
| @@ -83,13 +83,13 @@ public class SimpleConnectionGroup extends AbstractConnectionGroup { | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public Directory<String, Connection> getConnectionDirectory()  | ||||
|     public Directory<Connection> getConnectionDirectory()  | ||||
|             throws GuacamoleException { | ||||
|         return connectionDirectory; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Directory<String, ConnectionGroup> getConnectionGroupDirectory()  | ||||
|     public Directory<ConnectionGroup> getConnectionGroupDirectory()  | ||||
|             throws GuacamoleException { | ||||
|         return connectionGroupDirectory; | ||||
|     } | ||||
|   | ||||
| @@ -35,7 +35,7 @@ import org.glyptodon.guacamole.net.auth.ConnectionGroup; | ||||
|  * @author James Muehlner | ||||
|  */ | ||||
| public class SimpleConnectionGroupDirectory | ||||
|     extends SimpleDirectory<String, ConnectionGroup> { | ||||
|     extends SimpleDirectory<ConnectionGroup> { | ||||
|  | ||||
|     /** | ||||
|      * The Map of ConnectionGroups to provide access to. | ||||
|   | ||||
| @@ -37,20 +37,15 @@ import org.glyptodon.guacamole.net.auth.Directory; | ||||
|  * will affect the available contents of this SimpleDirectory. | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  * @param <IdentifierType> | ||||
|  *     The type of identifier used to identify objects stored within this | ||||
|  *     SimpleDirectory. | ||||
|  * | ||||
|  * @param <ObjectType> | ||||
|  *     The type of objects stored within this SimpleDirectory. | ||||
|  */ | ||||
| public class SimpleDirectory<IdentifierType, ObjectType> | ||||
|     implements Directory<IdentifierType, ObjectType> { | ||||
| public class SimpleDirectory<ObjectType> implements Directory<ObjectType> { | ||||
|  | ||||
|     /** | ||||
|      * The Map of objects to provide access to. | ||||
|      */ | ||||
|     private Map<IdentifierType, ObjectType> objects = Collections.EMPTY_MAP; | ||||
|     private Map<String, ObjectType> objects = Collections.EMPTY_MAP; | ||||
|  | ||||
|     /** | ||||
|      * Creates a new empty SimpleDirectory which does not provide access to | ||||
| @@ -66,7 +61,7 @@ public class SimpleDirectory<IdentifierType, ObjectType> | ||||
|      * @param objects | ||||
|      *     The Map of objects to provide access to. | ||||
|      */ | ||||
|     public SimpleDirectory(Map<IdentifierType, ObjectType> objects) { | ||||
|     public SimpleDirectory(Map<String, ObjectType> objects) { | ||||
|         this.objects = objects; | ||||
|     } | ||||
|  | ||||
| @@ -78,7 +73,7 @@ public class SimpleDirectory<IdentifierType, ObjectType> | ||||
|      * @param objects | ||||
|      *     The Map of objects to provide access to. | ||||
|      */ | ||||
|     protected void setObjects(Map<IdentifierType, ObjectType> objects) { | ||||
|     protected void setObjects(Map<String, ObjectType> objects) { | ||||
|         this.objects = objects; | ||||
|     } | ||||
|  | ||||
| @@ -90,25 +85,25 @@ public class SimpleDirectory<IdentifierType, ObjectType> | ||||
|      * @return | ||||
|      *     The Map of objects which currently backs this SimpleDirectory. | ||||
|      */ | ||||
|     protected Map<IdentifierType, ObjectType> getObjects() { | ||||
|     protected Map<String, ObjectType> getObjects() { | ||||
|         return objects; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ObjectType get(IdentifierType identifier) | ||||
|     public ObjectType get(String identifier) | ||||
|             throws GuacamoleException { | ||||
|         return objects.get(identifier); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Collection<ObjectType> getAll(Collection<IdentifierType> identifiers) | ||||
|     public Collection<ObjectType> getAll(Collection<String> identifiers) | ||||
|             throws GuacamoleException { | ||||
|  | ||||
|         // Create collection which has an appropriate initial size | ||||
|         Collection<ObjectType> foundObjects = new ArrayList<ObjectType>(identifiers.size()); | ||||
|  | ||||
|         // Populate collection with matching objects | ||||
|         for (IdentifierType identifier : identifiers) { | ||||
|         for (String identifier : identifiers) { | ||||
|  | ||||
|             // Add the object which has the current identifier, if any | ||||
|             ObjectType object = objects.get(identifier); | ||||
| @@ -122,7 +117,7 @@ public class SimpleDirectory<IdentifierType, ObjectType> | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Set<IdentifierType> getIdentifiers() throws GuacamoleException { | ||||
|     public Set<String> getIdentifiers() throws GuacamoleException { | ||||
|         return objects.keySet(); | ||||
|     } | ||||
|  | ||||
| @@ -139,13 +134,12 @@ public class SimpleDirectory<IdentifierType, ObjectType> | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void remove(IdentifierType identifier) throws GuacamoleException { | ||||
|     public void remove(String identifier) throws GuacamoleException { | ||||
|         throw new GuacamoleSecurityException("Permission denied."); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void move(IdentifierType identifier, | ||||
|             Directory<IdentifierType, ObjectType> directory) | ||||
|     public void move(String identifier, Directory<ObjectType> directory) | ||||
|             throws GuacamoleException { | ||||
|         throw new GuacamoleSecurityException("Permission denied."); | ||||
|     } | ||||
|   | ||||
| @@ -36,17 +36,13 @@ import org.glyptodon.guacamole.net.auth.permission.ObjectPermissionSet; | ||||
|  * of Permissions to determine which permissions are present. | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  * @param <IdentifierType> | ||||
|  *     The type of identifier used to identify objects affected by permissions | ||||
|  *     stored in this SimpleObjectPermissionSet. | ||||
|  */ | ||||
| public class SimpleObjectPermissionSet<IdentifierType> | ||||
|     implements ObjectPermissionSet<IdentifierType> { | ||||
| public class SimpleObjectPermissionSet implements ObjectPermissionSet { | ||||
|  | ||||
|     /** | ||||
|      * The set of all permissions currently granted. | ||||
|      */ | ||||
|     private Set<ObjectPermission<IdentifierType>> permissions = Collections.EMPTY_SET; | ||||
|     private Set<ObjectPermission> permissions = Collections.EMPTY_SET; | ||||
|  | ||||
|     /** | ||||
|      * Creates a new empty SimpleObjectPermissionSet. | ||||
| @@ -62,7 +58,7 @@ public class SimpleObjectPermissionSet<IdentifierType> | ||||
|      *     The Set of permissions this SimpleObjectPermissionSet should | ||||
|      *     contain. | ||||
|      */ | ||||
|     public SimpleObjectPermissionSet(Set<ObjectPermission<IdentifierType>> permissions) { | ||||
|     public SimpleObjectPermissionSet(Set<ObjectPermission> permissions) { | ||||
|         this.permissions = permissions; | ||||
|     } | ||||
|  | ||||
| @@ -74,21 +70,21 @@ public class SimpleObjectPermissionSet<IdentifierType> | ||||
|      *     The Set of permissions this SimpleObjectPermissionSet should | ||||
|      *     contain. | ||||
|      */ | ||||
|     protected void setPermissions(Set<ObjectPermission<IdentifierType>> permissions) { | ||||
|     protected void setPermissions(Set<ObjectPermission> permissions) { | ||||
|         this.permissions = permissions; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Set<ObjectPermission<IdentifierType>> getPermissions() { | ||||
|     public Set<ObjectPermission> getPermissions() { | ||||
|         return permissions; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean hasPermission(ObjectPermission.Type permission, | ||||
|             IdentifierType identifier) throws GuacamoleException { | ||||
|             String identifier) throws GuacamoleException { | ||||
|  | ||||
|         ObjectPermission<IdentifierType> objectPermission = | ||||
|                 new ObjectPermission<IdentifierType>(permission, identifier); | ||||
|         ObjectPermission objectPermission = | ||||
|                 new ObjectPermission(permission, identifier); | ||||
|          | ||||
|         return permissions.contains(objectPermission); | ||||
|  | ||||
| @@ -96,29 +92,29 @@ public class SimpleObjectPermissionSet<IdentifierType> | ||||
|  | ||||
|     @Override | ||||
|     public void addPermission(ObjectPermission.Type permission, | ||||
|             IdentifierType identifier) throws GuacamoleException { | ||||
|             String identifier) throws GuacamoleException { | ||||
|         throw new GuacamoleSecurityException("Permission denied."); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void removePermission(ObjectPermission.Type permission, | ||||
|             IdentifierType identifier) throws GuacamoleException { | ||||
|             String identifier) throws GuacamoleException { | ||||
|         throw new GuacamoleSecurityException("Permission denied."); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Collection<IdentifierType> getAccessibleObjects( | ||||
|     public Collection<String> getAccessibleObjects( | ||||
|             Collection<ObjectPermission.Type> permissionTypes, | ||||
|             Collection<IdentifierType> identifiers) throws GuacamoleException { | ||||
|             Collection<String> identifiers) throws GuacamoleException { | ||||
|  | ||||
|         Collection<IdentifierType> accessibleObjects = new ArrayList<IdentifierType>(permissions.size()); | ||||
|         Collection<String> accessibleObjects = new ArrayList<String>(permissions.size()); | ||||
|  | ||||
|         // For each identifier/permission combination | ||||
|         for (IdentifierType identifier : identifiers) { | ||||
|         for (String identifier : identifiers) { | ||||
|             for (ObjectPermission.Type permissionType : permissionTypes) { | ||||
|  | ||||
|                 // Add identifier if at least one requested permission is granted | ||||
|                 ObjectPermission<IdentifierType> permission = new ObjectPermission<IdentifierType>(permissionType, identifier); | ||||
|                 ObjectPermission permission = new ObjectPermission(permissionType, identifier); | ||||
|                 if (permissions.contains(permission)) { | ||||
|                     accessibleObjects.add(identifier); | ||||
|                     break; | ||||
| @@ -132,13 +128,13 @@ public class SimpleObjectPermissionSet<IdentifierType> | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void addPermissions(Set<ObjectPermission<IdentifierType>> permissions) | ||||
|     public void addPermissions(Set<ObjectPermission> permissions) | ||||
|             throws GuacamoleException { | ||||
|         throw new GuacamoleSecurityException("Permission denied."); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void removePermissions(Set<ObjectPermission<IdentifierType>> permissions) | ||||
|     public void removePermissions(Set<ObjectPermission> permissions) | ||||
|             throws GuacamoleException { | ||||
|         throw new GuacamoleSecurityException("Permission denied."); | ||||
|     } | ||||
|   | ||||
| @@ -28,9 +28,7 @@ import java.util.Map; | ||||
| import java.util.Set; | ||||
| import org.glyptodon.guacamole.GuacamoleException; | ||||
| import org.glyptodon.guacamole.net.auth.AbstractUser; | ||||
| import org.glyptodon.guacamole.net.auth.Connection; | ||||
| import org.glyptodon.guacamole.net.auth.ConnectionGroup; | ||||
| import org.glyptodon.guacamole.net.auth.User; | ||||
| import org.glyptodon.guacamole.net.auth.permission.ObjectPermission; | ||||
| import org.glyptodon.guacamole.net.auth.permission.ObjectPermissionSet; | ||||
| import org.glyptodon.guacamole.net.auth.permission.SystemPermissionSet; | ||||
| @@ -46,14 +44,14 @@ public class SimpleUser extends AbstractUser { | ||||
|     /** | ||||
|      * All connection permissions granted to this user. | ||||
|      */ | ||||
|     private final Set<ObjectPermission<String>> connectionPermissions = | ||||
|             new HashSet<ObjectPermission<String>>(); | ||||
|     private final Set<ObjectPermission> connectionPermissions = | ||||
|             new HashSet<ObjectPermission>(); | ||||
|      | ||||
|     /** | ||||
|      * All connection group permissions granted to this user. | ||||
|      */ | ||||
|     private final Set<ObjectPermission<String>> connectionGroupPermissions = | ||||
|             new HashSet<ObjectPermission<String>>(); | ||||
|     private final Set<ObjectPermission> connectionGroupPermissions = | ||||
|             new HashSet<ObjectPermission>(); | ||||
|  | ||||
|     /** | ||||
|      * Creates a completely uninitialized SimpleUser. | ||||
| @@ -73,7 +71,7 @@ public class SimpleUser extends AbstractUser { | ||||
|             Collection<ConnectionGroup> groups) { | ||||
|  | ||||
|         // Set username | ||||
|         setUsername(username); | ||||
|         setIdentifier(username); | ||||
|  | ||||
|         // Add connection permissions | ||||
|         for (String identifier : configs.keySet()) { | ||||
| @@ -112,21 +110,21 @@ public class SimpleUser extends AbstractUser { | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ObjectPermissionSet<String> getConnectionPermissions() | ||||
|     public ObjectPermissionSet getConnectionPermissions() | ||||
|             throws GuacamoleException { | ||||
|         return new SimpleObjectPermissionSet<String>(connectionPermissions); | ||||
|         return new SimpleObjectPermissionSet(connectionPermissions); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ObjectPermissionSet<String> getConnectionGroupPermissions() | ||||
|     public ObjectPermissionSet getConnectionGroupPermissions() | ||||
|             throws GuacamoleException { | ||||
|         return new SimpleObjectPermissionSet<String>(connectionGroupPermissions); | ||||
|         return new SimpleObjectPermissionSet(connectionGroupPermissions); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ObjectPermissionSet<String> getUserPermissions() | ||||
|     public ObjectPermissionSet getUserPermissions() | ||||
|             throws GuacamoleException { | ||||
|         return new SimpleObjectPermissionSet<String>(); | ||||
|         return new SimpleObjectPermissionSet(); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -51,7 +51,7 @@ public class SimpleUserContext implements UserContext { | ||||
|      * The Directory with access only to the User associated with this | ||||
|      * UserContext. | ||||
|      */ | ||||
|     private final Directory<String, User> userDirectory; | ||||
|     private final Directory<User> userDirectory; | ||||
|  | ||||
|     /** | ||||
|      * The ConnectionGroup with access only to those Connections that the User | ||||
| @@ -102,7 +102,7 @@ public class SimpleUserContext implements UserContext { | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Directory<String, User> getUserDirectory() | ||||
|     public Directory<User> getUserDirectory() | ||||
|             throws GuacamoleException { | ||||
|         return userDirectory; | ||||
|     } | ||||
|   | ||||
| @@ -31,7 +31,7 @@ import org.glyptodon.guacamole.net.auth.User; | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  */ | ||||
| public class SimpleUserDirectory extends SimpleDirectory<String, User> { | ||||
| public class SimpleUserDirectory extends SimpleDirectory<User> { | ||||
|  | ||||
|     /** | ||||
|      * Creates a new SimpleUserDirectory which provides access to the single | ||||
| @@ -40,7 +40,7 @@ public class SimpleUserDirectory extends SimpleDirectory<String, User> { | ||||
|      * @param user The user to provide access to. | ||||
|      */ | ||||
|     public SimpleUserDirectory(User user) { | ||||
|         super(Collections.singletonMap(user.getUsername(), user)); | ||||
|         super(Collections.singletonMap(user.getIdentifier(), user)); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user