@Override public void apply(Parameters parameters) { List<String> values = parameters.get(this.name); if (values != null) { values.remove(this.value); if (values.isEmpty()) { parameters.remove(this.name); } } }
private void addIfUnique(Map.Entry<String, List<String>> parameter, Parameters queryStringParameters, Parameters uniqueParameters) { if (!queryStringParameters.containsKey(parameter.getKey())) { uniqueParameters.put(parameter.getKey(), parameter.getValue()); } else { List<String> candidates = parameter.getValue(); List<String> existing = queryStringParameters.get(parameter.getKey()); for (String candidate : candidates) { if (!existing.contains(candidate)) { uniqueParameters.add(parameter.getKey(), candidate); } } } }
private void processParameter(String parameter, Parameters parameters) { String[] components = parameter.split("="); if (components.length > 0 && components.length < 3) { if (components.length == 2) { String name = components[0]; String value = components[1]; parameters.add(decode(name), decode(value)); } else { List<String> values = parameters.get(components[0]); if (values == null) { parameters.put(components[0], new LinkedList<String>()); } } } else { throw new IllegalArgumentException( "The parameter '" + parameter + "' is malformed"); } }