/*
* This file is part of the URI Template library.
*
* For licensing information please see the file license.txt included in the release.
* A copy of this licence can also be found at
* http://www.opensource.org/licenses/artistic-license-2.0.php
*/
package org.weborganic.furi;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* A class to hold a collection of parameters for use during the expansion process.
*
* It provides more convenient functions than the underlying map and handles the rules for parameter
* values.
*
* @author Christophe Lauret
* @version 5 November 2009
*/
public class URIParameters implements Parameters {
/**
* Maps the parameter names to the values.
*/
private Map<String, String[]> _parameters;
/**
* Creates a new instance.
*/
public URIParameters() {
this._parameters = new HashMap<String, String[]>();
}
/**
* Creates a new instance from the specified map.
*
* @param parameters The map of parameters to supply
*/
public URIParameters(Map<String, String[]> parameters) {
this._parameters = new HashMap<String, String[]>(parameters);
}
/**
* {@inheritDoc}
*/
public void set(String name, String value) {
if (value == null) {
return;
}
this._parameters.put(name, new String[] {value});
}
/**
* {@inheritDoc}
*/
public void set(String name, String[] values) {
if (values == null) {
return;
}
this._parameters.put(name, values);
}
/**
* {@inheritDoc}
*/
public Set<String> names() {
return Collections.unmodifiableSet(this._parameters.keySet());
}
/**
* {@inheritDoc}
*/
public String getValue(String name) {
String[] vals = this._parameters.get(name);
if (vals == null || vals.length == 0) {
return null;
} else {
return vals[0];
}
}
/**
* {@inheritDoc}
*/
public String[] getValues(String name) {
return this._parameters.get(name);
}
/**
* {@inheritDoc}
*/
public boolean exists(String name) {
return this._parameters.containsKey(name);
}
/**
* {@inheritDoc}
*/
public boolean hasValue(String name) {
String[] values = this._parameters.get(name);
return values != null && values.length > 0 && values[0].length() > 0;
}
}