@@ -0,0 +1,2673 @@
+/*%0A * Copyright (C) 2015 Glyptodon LLC%0A *%0A * Permission is hereby granted, free of charge, to any person obtaining a copy%0A * of this software and associated documentation files (the %22Software%22), to deal%0A * in the Software without restriction, including without limitation the rights%0A * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell%0A * copies of the Software, and to permit persons to whom the Software is%0A * furnished to do so, subject to the following conditions:%0A *%0A * The above copyright notice and this permission notice shall be included in%0A * all copies or substantial portions of the Software.%0A *%0A * THE SOFTWARE IS PROVIDED %22AS IS%22, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR%0A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,%0A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE%0A * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER%0A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,%0A * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN%0A * THE SOFTWARE.%0A */%0A%0Apackage org.glyptodon.guacamole.net.basic.properties;%0A%0Aimport java.util.Arrays;%0Aimport java.util.HashSet;%0Aimport java.util.List;%0Aimport java.util.Set;%0Aimport java.util.regex.Pattern;%0Aimport org.glyptodon.guacamole.GuacamoleException;%0Aimport org.glyptodon.guacamole.properties.GuacamoleProperty;%0A%0A/**%0A * A GuacamoleProperty whose value is a Set of unique Strings. The string value%0A * parsed to produce this set is a comma-delimited list. Duplicate values are%0A * ignored, as is any whitespace following delimiters. To maintain%0A * compatibility with the behavior of Java properties in general, only%0A * whitespace at the beginning of each value is ignored; trailing whitespace%0A * becomes part of the value.%0A *%0A * @author Michael Jumper%0A */%0Apublic abstract class StringSetProperty implements GuacamoleProperty%3CSet%3CString%3E%3E %7B%0A%0A    /**%0A     * A pattern which matches against the delimiters between values. This is%0A     * currently simply a comma and any following whitespace. Parts of the%0A     * input string which match this pattern will not be included in the parsed%0A     * result.%0A     */%0A    private static final Pattern DELIMITER_PATTERN = Pattern.compile(%22,%5C%5Cs*%22);%0A%0A    @Override%0A    public Set%3CString%3E parseValue(String values) throws GuacamoleException %7B%0A%0A        // If no property provided, return null.%0A        if (values == null)%0A            return null;%0A%0A        // Split string into a set of individual values%0A        List%3CString%3E valueList = Arrays.asList(DELIMITER_PATTERN.split(values));%0A        return new HashSet%3CString%3E(valueList);%0A%0A    %7D%0A%0A%7D%0A

Add simple property type which parses to a set of strings.