diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java
index f177b083e..afa5ad8d0 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java
@@ -25,10 +25,33 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation;
* along with this program. If not, see .
*/
+/**
+ * A GuacamoleSocket which pre-configures the connection based on a given
+ * GuacamoleConfiguration, completing the initial protocol handshake before
+ * accepting data for read or write.
+ *
+ * This is useful for forcing a connection to the Guacamole proxy server with
+ * a specific configuration while disallowing the client that will be using
+ * this GuacamoleSocket from manually controlling the initial protocol
+ * handshake.
+ *
+ * @author Michael Jumper
+ */
public class ConfiguredGuacamoleSocket implements GuacamoleSocket {
private GuacamoleSocket socket;
+ /**
+ * Creates a new ConfiguredGuacamoleSocket which uses the given
+ * GuacamoleConfiguration to complete the initial protocol handshake over
+ * the given GuacamoleSocket.
+ *
+ * @param socket The GuacamoleSocket to wrap.
+ * @param config The GuacamoleConfiguration to use to complete the initial
+ * protocol handshake.
+ * @throws GuacamoleException If an error occurs while completing the
+ * initial protocol handshake.
+ */
public ConfiguredGuacamoleSocket(GuacamoleSocket socket, GuacamoleConfiguration config) throws GuacamoleException {
this.socket = socket;
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java
index 690887ae9..728e3f8e8 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java
@@ -21,23 +21,49 @@ import java.util.HashMap;
* along with this program. If not, see .
*/
+/**
+ * All information necessary to complete the initial protocol handshake of a
+ * Guacamole session.
+ *
+ * @author Michael Jumper
+ */
public class GuacamoleConfiguration {
private String protocol;
private HashMap parameters = new HashMap();
+ /**
+ * Returns the name of the protocol to be used.
+ * @return The name of the protocol to be used.
+ */
public String getProtocol() {
return protocol;
}
+ /**
+ * Sets the name of the protocol to be used.
+ * @param protocol The name of the protocol to be used.
+ */
public void setProtocol(String protocol) {
this.protocol = protocol;
}
+ /**
+ * Returns the value set for the parameter with the given name, if any.
+ * @param name The name of the parameter to return the value for.
+ * @return The value of the parameter with the given name, or null if
+ * that parameter has not been set.
+ */
public String getParameter(String name) {
return parameters.get(name);
}
+ /**
+ * Sets the value for the parameter with the given name.
+ *
+ * @param name The name of the parameter to set the value for.
+ * @param value The value to set for the parameter with the given name.
+ */
public void setParameter(String name, String value) {
parameters.put(name, value);
}
diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java
index 153b9e20f..f0d65a3f0 100644
--- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java
+++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java
@@ -21,23 +21,55 @@ import java.util.HashMap;
* along with this program. If not, see .
*/
+/**
+ * An abstract representation of a Guacamole instruction, as defined by the
+ * Guacamole protocol.
+ *
+ * @author Michael Jumper
+ */
public class GuacamoleInstruction {
+ /**
+ * The operation performed by a particular Guacamole instruction. Each
+ * Operation is associated with a unique opcode.
+ */
public enum Operation {
+ /**
+ * Message sent from client to server specifying which protocol is
+ * to be used.
+ */
CLIENT_SELECT("select"),
+
+ /**
+ * Message sent from client to server specifying which argument
+ * values correspond to the arguments required by the selected
+ * protocol.
+ */
CLIENT_CONNECT("connect"),
+ /**
+ * Message sent from server to client specifying which arguments
+ * are required by the selected protocol.
+ */
SERVER_ARGS("args");
private String opcode;
- private Operation(String opcode) { this.opcode = opcode; }
+ private Operation(String opcode) {
+ this.opcode = opcode;
+ }
+ /**
+ * Returns the unique opcode associated with this Operation.
+ * @return The unique opcode associated with this Operation.
+ */
public String getOpcode() {
return opcode;
}
- // Maintain static hash of all opcodes
+ /**
+ * Static hash of all opcodes and their corresponding Operations.
+ */
private static final HashMap opcodeToOperation;
static {
@@ -48,6 +80,13 @@ public class GuacamoleInstruction {
}
+ /**
+ * Returns the corresponding Operation having the given opcode, if any.
+ *
+ * @param opcode The unique opcode associated with an Operation.
+ * @return The Operation associated with the given opcode, or null if
+ * no such Operation is defined.
+ */
public static Operation fromOpcode(String opcode) {
return opcodeToOperation.get(opcode);
}
@@ -57,19 +96,45 @@ public class GuacamoleInstruction {
private Operation operation;
private String[] args;
+ /**
+ * Creates a new GuacamoleInstruction having the given Operation and
+ * list of arguments values.
+ *
+ * @param operation The Operation of the instruction to create.
+ * @param args The list of argument values to provide in the new
+ * instruction if any.
+ */
public GuacamoleInstruction(Operation operation, String... args) {
this.operation = operation;
this.args = args;
}
+ /**
+ * Returns the Operation associated with this GuacamoleInstruction.
+ * @return The Operation associated with this GuacamoleInstruction.
+ */
public Operation getOperation() {
return operation;
}
+ /**
+ * Returns an array of all argument values specified for this
+ * GuacamoleInstruction.
+ *
+ * @return An array of all argument values specified for this
+ * GuacamoleInstruction.
+ */
public String[] getArgs() {
return args;
}
+ /**
+ * Returns this GuacamoleInstruction in the form it would be sent over the
+ * Guacamole protocol.
+ *
+ * @return This GuacamoleInstruction in the form it would be sent over the
+ * Guacamole protocol.
+ */
@Override
public String toString() {