/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.ows.util;
import org.geoserver.ows.KvpParser;
import org.geotools.util.Converters;
/**
* A kvp parser which parses a value into a numeric value.
* <p>
* The type of the number is determined by {@link #getBinding()}. It must be
* assignable from {@link Number}.
* </p>
* @author Justin Deoliveira, The Open Planning Project, jdeolive@openplans.org
*
*/
public class NumericKvpParser extends KvpParser {
/**
* Constructs a numeric kvp parser with the specified key and binding.
*
* @param key The key to bind to.
* @param binding The resulting type of parsed object, must be a subclass
* of {@link Number}.
*/
public NumericKvpParser(String key, Class binding) {
super(key, binding);
if (!Number.class.isAssignableFrom(binding)) {
throw new IllegalArgumentException("Number is not assignable from: " + binding);
}
}
/**
* Parses the string into a numberic value.
*/
public Object parse(String value) throws Exception {
return Converters.convert(value, getBinding());
}
}