mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-11 23:47:42 +00:00
GUAC-800: Migrate to JSON for protocol descriptions. Use full Forms instead of simply Fields for protocol parameters (allow sections).
This commit is contained in:
@@ -1,65 +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.xml.protocol;
|
||||
|
||||
import org.glyptodon.guacamole.form.ParameterOption;
|
||||
import org.glyptodon.guacamole.xml.TagHandler;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* TagHandler for the "option" element.
|
||||
*
|
||||
* @author Mike Jumper
|
||||
*/
|
||||
public class OptionTagHandler implements TagHandler {
|
||||
|
||||
/**
|
||||
* The option backing this option tag.
|
||||
*/
|
||||
private ParameterOption option = new ParameterOption();
|
||||
|
||||
@Override
|
||||
public void init(Attributes attributes) throws SAXException {
|
||||
option.setValue(attributes.getValue("value"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagHandler childElement(String localName) throws SAXException {
|
||||
throw new SAXException("The 'param' tag can contain no elements.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(String textContent) throws SAXException {
|
||||
option.setTitle(textContent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ParameterOption backing this tag.
|
||||
* @return The ParameterOption backing this tag.
|
||||
*/
|
||||
public ParameterOption asParameterOption() {
|
||||
return option;
|
||||
}
|
||||
|
||||
}
|
@@ -1,124 +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.xml.protocol;
|
||||
|
||||
import org.glyptodon.guacamole.form.Parameter;
|
||||
import org.glyptodon.guacamole.xml.TagHandler;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* TagHandler for the "param" element.
|
||||
*
|
||||
* @author Mike Jumper
|
||||
*/
|
||||
public class ParamTagHandler implements TagHandler {
|
||||
|
||||
/**
|
||||
* The Parameter backing this tag handler.
|
||||
*/
|
||||
private Parameter protocolParameter = new Parameter();
|
||||
|
||||
@Override
|
||||
public void init(Attributes attributes) throws SAXException {
|
||||
|
||||
protocolParameter.setName(attributes.getValue("name"));
|
||||
protocolParameter.setTitle(attributes.getValue("title"));
|
||||
protocolParameter.setValue(attributes.getValue("value"));
|
||||
|
||||
// Parse type
|
||||
String type = attributes.getValue("type");
|
||||
|
||||
// Text field
|
||||
if ("text".equals(type))
|
||||
protocolParameter.setType(Parameter.Type.TEXT);
|
||||
|
||||
// Numeric field
|
||||
else if ("numeric".equals(type))
|
||||
protocolParameter.setType(Parameter.Type.NUMERIC);
|
||||
|
||||
// Username field
|
||||
else if ("username".equals(type))
|
||||
protocolParameter.setType(Parameter.Type.USERNAME);
|
||||
|
||||
// Password field
|
||||
else if ("password".equals(type))
|
||||
protocolParameter.setType(Parameter.Type.PASSWORD);
|
||||
|
||||
// Enumerated field
|
||||
else if ("enum".equals(type))
|
||||
protocolParameter.setType(Parameter.Type.ENUM);
|
||||
|
||||
// Multiline field
|
||||
else if ("multiline".equals(type))
|
||||
protocolParameter.setType(Parameter.Type.MULTILINE);
|
||||
|
||||
// Boolean field
|
||||
else if ("boolean".equals(type)) {
|
||||
protocolParameter.setType(Parameter.Type.BOOLEAN);
|
||||
|
||||
if(protocolParameter.getValue() == null)
|
||||
throw new SAXException
|
||||
("A value is required for the boolean parameter type.");
|
||||
}
|
||||
|
||||
// Otherwise, fail with unrecognized type
|
||||
else
|
||||
throw new SAXException("Invalid parameter type: " + type);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagHandler childElement(String localName) throws SAXException {
|
||||
|
||||
// Start parsing of option tags
|
||||
if (localName.equals("option")) {
|
||||
|
||||
// Get tag handler for option tag
|
||||
OptionTagHandler tagHandler = new OptionTagHandler();
|
||||
|
||||
// Store stub in options collection
|
||||
protocolParameter.getOptions().add(
|
||||
tagHandler.asParameterOption());
|
||||
return tagHandler;
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(String textContent) throws SAXException {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Parameter backing this tag.
|
||||
* @return The Parameter backing this tag.
|
||||
*/
|
||||
public Parameter asParameter() {
|
||||
return protocolParameter;
|
||||
}
|
||||
|
||||
}
|
@@ -1,81 +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.xml.protocol;
|
||||
|
||||
import org.glyptodon.guacamole.protocols.ProtocolInfo;
|
||||
import org.glyptodon.guacamole.xml.TagHandler;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* TagHandler for the "protocol" element.
|
||||
*
|
||||
* @author Mike Jumper
|
||||
*/
|
||||
public class ProtocolTagHandler implements TagHandler {
|
||||
|
||||
/**
|
||||
* The ProtocolInfo object which will contain all data parsed by this tag
|
||||
* handler.
|
||||
*/
|
||||
private ProtocolInfo info = new ProtocolInfo();
|
||||
|
||||
@Override
|
||||
public void init(Attributes attributes) throws SAXException {
|
||||
info.setName(attributes.getValue("name"));
|
||||
info.setTitle(attributes.getValue("title"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagHandler childElement(String localName) throws SAXException {
|
||||
|
||||
// Start parsing of param tags, add to list of all parameters
|
||||
if (localName.equals("param")) {
|
||||
|
||||
// Get tag handler for param tag
|
||||
ParamTagHandler tagHandler = new ParamTagHandler();
|
||||
|
||||
// Store stub in parameters collection
|
||||
info.getParameters().add(tagHandler.asParameter());
|
||||
return tagHandler;
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(String textContent) throws SAXException {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ProtocolInfo backing this tag.
|
||||
* @return The ProtocolInfo backing this tag.
|
||||
*/
|
||||
public ProtocolInfo asProtocolInfo() {
|
||||
return info;
|
||||
}
|
||||
|
||||
}
|
@@ -1,28 +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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Classes related to parsing XML files which describe the parameters of a
|
||||
* protocol.
|
||||
*/
|
||||
package org.glyptodon.guacamole.xml.protocol;
|
||||
|
Reference in New Issue
Block a user