From eb676c8b3f820549491054d91003f24e97601170 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sat, 7 Mar 2015 14:06:27 -0800 Subject: [PATCH] GUAC-1104: Move parent identifier functions to common base objects. --- .../jdbc/base/GroupedDirectoryObject.java | 78 +++++++++++++++++++ .../auth/jdbc/base/GroupedObjectModel.java | 67 ++++++++++++++++ .../auth/jdbc/connection/ConnectionModel.java | 33 +------- .../jdbc/connection/ModeledConnection.java | 31 +------- .../connectiongroup/ConnectionGroupModel.java | 33 +------- .../ModeledConnectionGroup.java | 28 +------ 6 files changed, 154 insertions(+), 116 deletions(-) create mode 100644 extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/base/GroupedDirectoryObject.java create mode 100644 extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/base/GroupedObjectModel.java diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/base/GroupedDirectoryObject.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/base/GroupedDirectoryObject.java new file mode 100644 index 000000000..2b804be85 --- /dev/null +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/base/GroupedDirectoryObject.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2015 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.auth.jdbc.base; + +import org.glyptodon.guacamole.auth.jdbc.connectiongroup.RootConnectionGroup; + +/** + * Common base class for objects that will ultimately be made available through + * the Directory class. All such objects will need the same base set of queries + * to fulfill the needs of the Directory class. + * + * @author Michael Jumper + * @param + * The type of model object that corresponds to this object. + */ +public abstract class GroupedDirectoryObject + extends DirectoryObject { + + /** + * Returns the identifier of the parent connection group, which cannot be + * null. If the parent is the root connection group, this will be + * RootConnectionGroup.IDENTIFIER. + * + * @return + * The identifier of the parent connection group. + */ + public String getParentIdentifier() { + + // Translate null parent to proper identifier + String parentIdentifier = getModel().getParentIdentifier(); + if (parentIdentifier == null) + return RootConnectionGroup.IDENTIFIER; + + return parentIdentifier; + + } + + /** + * Sets the identifier of the associated parent connection group. If the + * parent is the root connection group, this should be + * RootConnectionGroup.IDENTIFIER. + * + * @param parentIdentifier + * The identifier of the connection group to associate as this object's + * parent. + */ + public void setParentIdentifier(String parentIdentifier) { + + // Translate root identifier back into null + if (parentIdentifier != null + && parentIdentifier.equals(RootConnectionGroup.IDENTIFIER)) + parentIdentifier = null; + + getModel().setParentIdentifier(parentIdentifier); + + } + +} diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/base/GroupedObjectModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/base/GroupedObjectModel.java new file mode 100644 index 000000000..45b25598a --- /dev/null +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/base/GroupedObjectModel.java @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2015 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.auth.jdbc.base; + +/** + * Object representation of a Guacamole object, such as a user or connection, + * as represented in the database. + * + * @author Michael Jumper + */ +public abstract class GroupedObjectModel extends ObjectModel { + + /** + * The unique identifier which identifies the parent of this object. + */ + private String parentIdentifier; + + /** + * Creates a new, empty object. + */ + public GroupedObjectModel() { + } + + /** + * Returns the identifier of the parent connection group, or null if the + * parent connection group is the root connection group. + * + * @return + * The identifier of the parent connection group, or null if the parent + * connection group is the root connection group. + */ + public String getParentIdentifier() { + return parentIdentifier; + } + + /** + * Sets the identifier of the parent connection group. + * + * @param parentIdentifier + * The identifier of the parent connection group, or null if the parent + * connection group is the root connection group. + */ + public void setParentIdentifier(String parentIdentifier) { + this.parentIdentifier = parentIdentifier; + } + +} diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionModel.java index b4ef2e907..5b3552fe9 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionModel.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connection/ConnectionModel.java @@ -22,7 +22,7 @@ package org.glyptodon.guacamole.auth.jdbc.connection; -import org.glyptodon.guacamole.auth.jdbc.base.ObjectModel; +import org.glyptodon.guacamole.auth.jdbc.base.GroupedObjectModel; /** * Object representation of a Guacamole connection, as represented in the @@ -30,14 +30,8 @@ * * @author Michael Jumper */ -public class ConnectionModel extends ObjectModel { +public class ConnectionModel extends GroupedObjectModel { - /** - * The identifier of the parent connection group in the database, or null - * if the parent connection group is the root group. - */ - private String parentIdentifier; - /** * The human-readable name associated with this connection. */ @@ -95,29 +89,6 @@ public void setProtocol(String protocol) { this.protocol = protocol; } - /** - * Returns the identifier of the parent connection group, or null if the - * parent connection group is the root connection group. - * - * @return - * The identifier of the parent connection group, or null if the parent - * connection group is the root connection group. - */ - public String getParentIdentifier() { - return parentIdentifier; - } - - /** - * Sets the identifier of the parent connection group. - * - * @param parentIdentifier - * The identifier of the parent connection group, or null if the parent - * connection group is the root connection group. - */ - public void setParentIdentifier(String parentIdentifier) { - this.parentIdentifier = parentIdentifier; - } - @Override public String getIdentifier() { diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connection/ModeledConnection.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connection/ModeledConnection.java index 64cb1232c..b1f532e80 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connection/ModeledConnection.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connection/ModeledConnection.java @@ -25,10 +25,9 @@ import com.google.inject.Inject; import com.google.inject.Provider; import java.util.List; -import org.glyptodon.guacamole.auth.jdbc.base.DirectoryObject; -import org.glyptodon.guacamole.auth.jdbc.connectiongroup.RootConnectionGroup; import org.glyptodon.guacamole.auth.jdbc.socket.GuacamoleSocketService; import org.glyptodon.guacamole.GuacamoleException; +import org.glyptodon.guacamole.auth.jdbc.base.GroupedDirectoryObject; import org.glyptodon.guacamole.net.GuacamoleSocket; import org.glyptodon.guacamole.net.auth.Connection; import org.glyptodon.guacamole.net.auth.ConnectionRecord; @@ -42,7 +41,7 @@ * @author James Muehlner * @author Michael Jumper */ -public class ModeledConnection extends DirectoryObject +public class ModeledConnection extends GroupedDirectoryObject implements Connection { /** @@ -67,7 +66,7 @@ public class ModeledConnection extends DirectoryObject * The manually-set GuacamoleConfiguration, if any. */ private GuacamoleConfiguration config = null; - + /** * Creates a new, empty ModeledConnection. */ @@ -84,30 +83,6 @@ public void setName(String name) { getModel().setName(name); } - @Override - public String getParentIdentifier() { - - // Translate null parent to proper identifier - String parentIdentifier = getModel().getParentIdentifier(); - if (parentIdentifier == null) - return RootConnectionGroup.IDENTIFIER; - - return parentIdentifier; - - } - - @Override - public void setParentIdentifier(String parentIdentifier) { - - // Translate root identifier back into null - if (parentIdentifier != null - && parentIdentifier.equals(RootConnectionGroup.IDENTIFIER)) - parentIdentifier = null; - - getModel().setParentIdentifier(parentIdentifier); - - } - @Override public GuacamoleConfiguration getConfiguration() { diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupModel.java index 68845df9c..def543ffc 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupModel.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ConnectionGroupModel.java @@ -22,7 +22,7 @@ package org.glyptodon.guacamole.auth.jdbc.connectiongroup; -import org.glyptodon.guacamole.auth.jdbc.base.ObjectModel; +import org.glyptodon.guacamole.auth.jdbc.base.GroupedObjectModel; import org.glyptodon.guacamole.net.auth.ConnectionGroup; /** @@ -31,14 +31,8 @@ * * @author Michael Jumper */ -public class ConnectionGroupModel extends ObjectModel { +public class ConnectionGroupModel extends GroupedObjectModel { - /** - * The identifier of the parent connection group in the database, or null - * if the parent connection group is the root group. - */ - private String parentIdentifier; - /** * The human-readable name associated with this connection group. */ @@ -75,29 +69,6 @@ public void setName(String name) { this.name = name; } - /** - * Returns the identifier of the parent connection group, or null if the - * parent connection group is the root connection group. - * - * @return - * The identifier of the parent connection group, or null if the parent - * connection group is the root connection group. - */ - public String getParentIdentifier() { - return parentIdentifier; - } - - /** - * Sets the identifier of the parent connection group. - * - * @param parentIdentifier - * The identifier of the parent connection group, or null if the parent - * connection group is the root connection group. - */ - public void setParentIdentifier(String parentIdentifier) { - this.parentIdentifier = parentIdentifier; - } - /** * Returns the type of this connection group, such as organizational or * balancing. diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ModeledConnectionGroup.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ModeledConnectionGroup.java index cad15286c..52b71e0e2 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ModeledConnectionGroup.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/connectiongroup/ModeledConnectionGroup.java @@ -24,10 +24,10 @@ import com.google.inject.Inject; import java.util.Set; -import org.glyptodon.guacamole.auth.jdbc.base.DirectoryObject; import org.glyptodon.guacamole.auth.jdbc.connection.ConnectionService; import org.glyptodon.guacamole.auth.jdbc.socket.GuacamoleSocketService; import org.glyptodon.guacamole.GuacamoleException; +import org.glyptodon.guacamole.auth.jdbc.base.GroupedDirectoryObject; import org.glyptodon.guacamole.net.GuacamoleSocket; import org.glyptodon.guacamole.net.auth.ConnectionGroup; import org.glyptodon.guacamole.protocol.GuacamoleClientInformation; @@ -38,7 +38,7 @@ * * @author James Muehlner */ -public class ModeledConnectionGroup extends DirectoryObject +public class ModeledConnectionGroup extends GroupedDirectoryObject implements ConnectionGroup { /** @@ -75,30 +75,6 @@ public void setName(String name) { getModel().setName(name); } - @Override - public String getParentIdentifier() { - - // Translate null parent to proper identifier - String parentIdentifier = getModel().getParentIdentifier(); - if (parentIdentifier == null) - return RootConnectionGroup.IDENTIFIER; - - return parentIdentifier; - - } - - @Override - public void setParentIdentifier(String parentIdentifier) { - - // Translate root identifier back into null - if (parentIdentifier != null - && parentIdentifier.equals(RootConnectionGroup.IDENTIFIER)) - parentIdentifier = null; - - getModel().setParentIdentifier(parentIdentifier); - - } - @Override public GuacamoleSocket connect(GuacamoleClientInformation info) throws GuacamoleException {