Package org.apache.fulcrum.parser
Class BaseValueParser
java.lang.Object
org.apache.fulcrum.parser.BaseValueParser
- All Implemented Interfaces:
Iterable<String>,org.apache.avalon.framework.logger.LogEnabled,ParserServiceSupport,ValueParser
- Direct Known Subclasses:
DefaultCookieParser,DefaultParameterParser,StringValueParser
public class BaseValueParser
extends Object
implements ValueParser, ParserServiceSupport, org.apache.avalon.framework.logger.LogEnabled
BaseValueParser is a base class for classes that need to parse
name/value Parameters, for example GET/POST data or Cookies
(DefaultParameterParser and DefaultCookieParser)
It can also be used standalone, for an example see DataStreamParser.
NOTE: The name= portion of a name=value pair may be converted to lowercase or uppercase when the object is initialized and when new data is added. This behavior is determined by the url.case.folding property in TurbineResources.properties. Adding a name/value pair may overwrite existing name=value pairs if the names match:
ValueParser vp = new BaseValueParser();
vp.add("ERROR",1);
vp.add("eRrOr",2);
int result = vp.getInt("ERROR");
In the above example, result is 2.- Version:
- $Id$
- Author:
- Ilkka Priha, Jon S. Stevens, Sean Legassick, Jason van Zyl, Jürgen Hoffmann, Thomas Vandahl
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.fulcrum.parser.ValueParser
ValueParser.URLCaseFolding -
Field Summary
FieldsModifier and TypeFieldDescriptionRandom access storage for parameter data.protected ParserServiceThe ParserService instance to query for conversion and configurationFields inherited from interface org.apache.fulcrum.parser.ValueParser
DEFAULT_CHARACTER_ENCODING -
Constructor Summary
ConstructorsConstructorDescriptionBaseValueParser(String characterEncoding) Constructor that takes a character encodingBaseValueParser(String characterEncoding, Locale locale) Constructor that takes a character encoding and a locale -
Method Summary
Modifier and TypeMethodDescriptionvoidAdd a name/value pair into this object.voidAdd a name/value pair into this object.voidAdd a name/value pair into this object.voidAdd a name/value pair into this object.voidAdd a name/value pair into this object.voidAdd an array of Strings for a key.voidclear()Clear all name/value pairs out of this object.booleancontainsKey(Object key) Determine whether a given key has been inserted.Trims the string data and applies the conversion specified in the property given by URL_CASE_FOLDING.convertAndTrim(String value) Convert a String value according to the url-case-folding property.convertAndTrim(String value, ValueParser.URLCaseFolding fold) A convert method, which trims the string data and applies the conversion specified in the parameter given.voiddispose()Disposes the parser.voidenableLogging(org.apache.avalon.framework.logger.Logger logger) Return a String for the given name.getBigDecimal(String name) Return a BigDecimal for the given name.getBigDecimal(String name, BigDecimal defaultValue) Return a BigDecimal for the given name.getBigDecimals(String name) Return an array of BigDecimals for the given name.booleangetBoolean(String name) Return a boolean for the given name.booleangetBoolean(String name, boolean defaultValue) Return a boolean for the given name.getBooleanObject(String name) Returns a Boolean object for the given name.getBooleanObject(String name, Boolean defaultValue) Returns a Boolean object for the given name.Boolean[]getBooleanObjects(String name) Return an array of Booleans for the given name.boolean[]getBooleans(String name) Return an array of booleans for the given name.byteReturn a byte for the given name.byteReturn a byte for the given name.getByteObject(String name) Return a byte for the given name.getByteObject(String name, Byte defaultValue) Return a byte for the given name.byte[]Return an array of bytes for the given name.Get the character encoding that will be used by this ValueParser.Returns aDateobject.getDate(String name, DateFormat df) Returns aDateobject.getDate(String name, DateFormat df, Date defaultValue) Returns aDateobject.Get the date format that will be used by this ValueParser.doubleReturn a double for the given name.doubleReturn a double for the given name.getDoubleObject(String name) Return a Double for the given name.getDoubleObject(String name, Double defaultValue) Return a Double for the given name.Double[]getDoubleObjects(String name) Return an array of doubles for the given name.double[]getDoubles(String name) Return an array of doubles for the given name.floatReturn a float for the given name.floatReturn a float for the given name.getFloatObject(String name) Return a float for the given name.getFloatObject(String name, Float defaultValue) Return a Float for the given name.Float[]getFloatObjects(String name) Return an array of floats for the given name.float[]Return an array of floats for the given name.intReturn an int for the given name.intReturn an int for the given name.getIntObject(String name) Return an Integer for the given name.getIntObject(String name, Integer defaultValue) Return an Integer for the given name.Integer[]getIntObjects(String name) Return an array of Integers for the given name.int[]Return an array of ints for the given name.String[]getKeys()Returns all the available parameter names.final LocaleGet the locale that will be used by this ValueParser.protected org.apache.avalon.framework.logger.LoggerProvide an Avalon logger to the derived classeslongReturn a long for the given name.longReturn a long for the given name.getLongObject(String name) Return a Long for the given name.getLongObject(String name, Long defaultValue) Return a Long for the given name.Long[]getLongObjects(String name) Return an array of Longs for the given name.long[]Return an array of longs for the given name.Get the number format that will be used by this ValueParser.Return an Object for the given name.Object[]getObjects(String name) Return an array of Objects for the given name.protected String[]fetches a key from the parameters map.Return a String for the given name.Return a String for the given name.String[]getStrings(String name) Return an array of Strings for the given name.String[]getStrings(String name, String[] defaultValue) Return an array of Strings for the given name.protected Object[]getToStringParam(String name) This method is only used in toString() and can be used by derived classes to add their local parameters to the toString()Gets the folding value from the ParserService configurationbooleanChecks whether the object is disposed.booleanisValid()iterator()Gets an iterator over the set of keyskeySet()Gets the set of keysprotected voidPuts a key into the parameters map.final voidrecycle()Recycles the parser.final voidRecycles the parser with a character encoding.Removes the named parameter from the contained hashtable.final voidSet the character encoding that will be used by this ValueParser.final voidSet the date format that will be used by this ValueParser.final voidSet the locale that will be used by this ValueParser.voidSet the number format that will be used by this ValueParser.voidsetParserService(ParserService parserService) Set a ParserService instancevoidsetProperties(Object bean) Uses bean introspection to set writable properties of bean from the parameters, where a (case-insensitive) name match between the bean property and the parameter is looked for.protected voidsetProperty(Object bean, PropertyDescriptor prop) Set the property 'prop' in the bean to the value of the corresponding parameters.voidSet a parameter to a specific value.voidsetStrings(String name, String[] values) Set a parameter to a specific value.toString()Simple method that attempts to get a textual representation of this object's name/value pairs.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
parserService
The ParserService instance to query for conversion and configuration -
parameters
Random access storage for parameter data.
-
-
Constructor Details
-
BaseValueParser
public BaseValueParser() -
BaseValueParser
Constructor that takes a character encoding- Parameters:
characterEncoding- desired character encoding
-
BaseValueParser
Constructor that takes a character encoding and a locale- Parameters:
characterEncoding- Sets the character encodinglocale- Sets the locale
-
-
Method Details
-
setParserService
Set a ParserService instance- Specified by:
setParserServicein interfaceParserServiceSupport- Parameters:
parserService- The parser service instance
-
enableLogging
public void enableLogging(org.apache.avalon.framework.logger.Logger logger) - Specified by:
enableLoggingin interfaceorg.apache.avalon.framework.logger.LogEnabled- Parameters:
logger- The logger to be used- See Also:
-
getLogger
protected org.apache.avalon.framework.logger.Logger getLogger()Provide an Avalon logger to the derived classes- Returns:
- An Avalon logger instance
-
recycle
public final void recycle()Recycles the parser. -
recycle
Recycles the parser with a character encoding.- Parameters:
characterEncoding- the character encoding.
-
dispose
public void dispose()Disposes the parser.- Specified by:
disposein interfaceValueParser
-
clear
public void clear()Clear all name/value pairs out of this object.- Specified by:
clearin interfaceValueParser
-
setCharacterEncoding
Set the character encoding that will be used by this ValueParser.- Specified by:
setCharacterEncodingin interfaceValueParser- Parameters:
s- the character encoding to use
-
getCharacterEncoding
Get the character encoding that will be used by this ValueParser.- Specified by:
getCharacterEncodingin interfaceValueParser- Returns:
- Current character encoding
-
setLocale
Set the locale that will be used by this ValueParser.- Specified by:
setLocalein interfaceValueParser- Parameters:
l- the default locale to be used by the parser
-
getLocale
Get the locale that will be used by this ValueParser.- Specified by:
getLocalein interfaceValueParser- Returns:
- Locale the locale being used
-
setDateFormat
Set the date format that will be used by this ValueParser.- Specified by:
setDateFormatin interfaceValueParser- Parameters:
df- the date format
-
getDateFormat
Get the date format that will be used by this ValueParser.- Specified by:
getDateFormatin interfaceValueParser- Returns:
- DateFormat current date format used by this ValueParser
-
setNumberFormat
Set the number format that will be used by this ValueParser.- Specified by:
setNumberFormatin interfaceValueParser- Parameters:
nf- the number format to use
-
getNumberFormat
Get the number format that will be used by this ValueParser.- Specified by:
getNumberFormatin interfaceValueParser- Returns:
- NumberFormat the current number format
-
add
Add a name/value pair into this object.- Specified by:
addin interfaceValueParser- Parameters:
name- A String with the name.value- A double with the value.
-
add
Add a name/value pair into this object.- Specified by:
addin interfaceValueParser- Parameters:
name- A String with the name.value- An int with the value.
-
add
Add a name/value pair into this object.- Specified by:
addin interfaceValueParser- Parameters:
name- A String with the name.value- An Integer with the value.
-
add
Add a name/value pair into this object.- Specified by:
addin interfaceValueParser- Parameters:
name- A String with the name.value- A long with the value.
-
add
Add a name/value pair into this object.- Specified by:
addin interfaceValueParser- Parameters:
name- A String with the name.value- A long with the value.
-
add
Add an array of Strings for a key. This is simply adding all the elements in the array one by one.- Specified by:
addin interfaceValueParser- Parameters:
name- A String with the name.value- A String Array.
-
remove
Removes the named parameter from the contained hashtable. Wraps to the containedMap.remove().- Specified by:
removein interfaceValueParser- Parameters:
name- the name of the mapped value to remove- Returns:
- The value that was mapped to the key (a
String[]) ornullif the key was not mapped.
-
convert
Trims the string data and applies the conversion specified in the property given by URL_CASE_FOLDING. It returns a new string so that it does not destroy the value data.- Specified by:
convertin interfaceValueParser- Parameters:
value- A String to be processed.- Returns:
- A new String converted to lowercase and trimmed.
-
containsKey
Determine whether a given key has been inserted. All keys are stored in lowercase strings, so override method to account for this.- Specified by:
containsKeyin interfaceValueParser- Parameters:
key- An Object with the key to search for.- Returns:
- True if the object is found.
-
keySet
Gets the set of keys- Specified by:
keySetin interfaceValueParser- Returns:
- A
Setof the keys.
-
getKeys
Returns all the available parameter names.- Specified by:
getKeysin interfaceValueParser- Returns:
- A object array with the keys.
-
iterator
Gets an iterator over the set of keys -
getBoolean
Return a boolean for the given name. If the name does not exist, return defaultValue.- Specified by:
getBooleanin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A boolean.
-
getBoolean
Return a boolean for the given name. If the name does not exist, return false.- Specified by:
getBooleanin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A boolean.
-
getBooleans
Return an array of booleans for the given name. If the name does not exist, return null.- Specified by:
getBooleansin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A boolean[].
-
getBooleanObject
Returns a Boolean object for the given name. If the parameter does not exist or can not be parsed as a boolean, null is returned.Valid values for true: true, on, 1, yes
Valid values for false: false, off, 0, no
The string is compared without reguard to case.
- Specified by:
getBooleanObjectin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A Boolean.
-
getBooleanObject
Returns a Boolean object for the given name. If the parameter does not exist or can not be parsed as a boolean, null is returned.Valid values for true: true, on, 1, yes
Valid values for false: false, off, 0, no
The string is compared without reguard to case.
- Specified by:
getBooleanObjectin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A Boolean.
-
getBooleanObjects
Return an array of Booleans for the given name. If the name does not exist, return null.- Specified by:
getBooleanObjectsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A Boolean[].
-
getDouble
Return a double for the given name. If the name does not exist, return defaultValue.- Specified by:
getDoublein interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A double.
-
getDouble
Return a double for the given name. If the name does not exist, return 0.0.- Specified by:
getDoublein interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A double.
-
getDoubles
Return an array of doubles for the given name. If the name does not exist, return null.- Specified by:
getDoublesin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A double[].
-
getDoubleObject
Return a Double for the given name. If the name does not exist, return defaultValue.- Specified by:
getDoubleObjectin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A double.
-
getDoubleObject
Return a Double for the given name. If the name does not exist, return null.- Specified by:
getDoubleObjectin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A double.
-
getDoubleObjects
Return an array of doubles for the given name. If the name does not exist, return null.- Specified by:
getDoubleObjectsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A double[].
-
getFloat
Return a float for the given name. If the name does not exist, return defaultValue.- Specified by:
getFloatin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A float.
-
getFloat
Return a float for the given name. If the name does not exist, return 0.0.- Specified by:
getFloatin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A float.
-
getFloats
Return an array of floats for the given name. If the name does not exist, return null.- Specified by:
getFloatsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A float[].
-
getFloatObject
Return a Float for the given name. If the name does not exist, return defaultValue.- Specified by:
getFloatObjectin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A Float.
-
getFloatObject
Return a float for the given name. If the name does not exist, return null.- Specified by:
getFloatObjectin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A Float.
-
getFloatObjects
Return an array of floats for the given name. If the name does not exist, return null.- Specified by:
getFloatObjectsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A float[].
-
getBigDecimal
Return a BigDecimal for the given name. If the name does not exist, return defaultValue.- Specified by:
getBigDecimalin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A BigDecimal.
-
getBigDecimal
Return a BigDecimal for the given name. If the name does not exist, return null.- Specified by:
getBigDecimalin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A BigDecimal.
-
getBigDecimals
Return an array of BigDecimals for the given name. If the name does not exist, return null.- Specified by:
getBigDecimalsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A BigDecimal[].
-
getInt
Return an int for the given name. If the name does not exist, return defaultValue.- Specified by:
getIntin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- An int.
-
getInt
Return an int for the given name. If the name does not exist, return 0.- Specified by:
getIntin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- An int.
-
getInts
Return an array of ints for the given name. If the name does not exist, return null.- Specified by:
getIntsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- An int[].
-
getIntObject
Return an Integer for the given name. If the name does not exist, return defaultValue.- Specified by:
getIntObjectin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- An Integer.
-
getIntObject
Return an Integer for the given name. If the name does not exist, return null.- Specified by:
getIntObjectin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- An Integer.
-
getIntObjects
Return an array of Integers for the given name. If the name does not exist, return null.- Specified by:
getIntObjectsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- An Integer[].
-
getLong
Return a long for the given name. If the name does not exist, return defaultValue.- Specified by:
getLongin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A long.
-
getLong
Return a long for the given name. If the name does not exist, return 0.- Specified by:
getLongin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A long.
-
getLongs
Return an array of longs for the given name. If the name does not exist, return null.- Specified by:
getLongsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A long[].
-
getLongObjects
Return an array of Longs for the given name. If the name does not exist, return null.- Specified by:
getLongObjectsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A Long[].
-
getLongObject
Return a Long for the given name. If the name does not exist, return null.- Specified by:
getLongObjectin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A Long.
-
getLongObject
Return a Long for the given name. If the name does not exist, return the default value.- Specified by:
getLongObjectin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A Long.
-
getByte
Return a byte for the given name. If the name does not exist, return defaultValue.- Specified by:
getBytein interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A byte.
-
getByte
Return a byte for the given name. If the name does not exist, return 0.- Specified by:
getBytein interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A byte.
-
getBytes
Return an array of bytes for the given name. If the name does not exist, return null. The array is returned according to the HttpRequest's character encoding.- Specified by:
getBytesin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A byte[].
- Throws:
UnsupportedEncodingException- Generic exception
-
getByteObject
Return a byte for the given name. If the name does not exist, return defaultValue.- Specified by:
getByteObjectin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A byte.
-
getByteObject
Return a byte for the given name. If the name does not exist, return 0.- Specified by:
getByteObjectin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A byte.
-
getString
Return a String for the given name. If the name does not exist, return null.- Specified by:
getStringin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A String or null if the key is unknown.
-
get
Return a String for the given name. If the name does not exist, return null. It is the same as the getString() method however has been added for simplicity when working with template tools such as Velocity which allow you to do something like this:$data.Parameters.form_variable_name- Specified by:
getin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A String.
-
getString
Return a String for the given name. If the name does not exist, return the defaultValue.- Specified by:
getStringin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A String.
-
setString
Set a parameter to a specific value. This is useful if you want your action to override the values of the parameters for the screen to use.- Specified by:
setStringin interfaceValueParser- Parameters:
name- The name of the parameter.value- The value to set.
-
getStrings
Return an array of Strings for the given name. If the name does not exist, return null.- Specified by:
getStringsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A String[].
-
getStrings
Return an array of Strings for the given name. If the name does not exist, return the defaultValue.- Specified by:
getStringsin interfaceValueParser- Parameters:
name- A String with the name.defaultValue- The default value.- Returns:
- A String[].
-
setStrings
Set a parameter to a specific value. This is useful if you want your action to override the values of the parameters for the screen to use.- Specified by:
setStringsin interfaceValueParser- Parameters:
name- The name of the parameter.values- The value to set.
-
getObject
Return an Object for the given name. If the name does not exist, return null.- Specified by:
getObjectin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- An Object.
-
getObjects
Return an array of Objects for the given name. If the name does not exist, return null.- Specified by:
getObjectsin interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- An Object[].
-
getDate
Returns aDateobject. String is parsed by supplied DateFormat. If the name does not exist or the value could not be parsed into a date return the defaultValue.- Specified by:
getDatein interfaceValueParser- Parameters:
name- A String with the name.df- A DateFormat.defaultValue- The default value.- Returns:
- A Date.
-
getDate
Returns aDateobject. If there are DateSelector or TimeSelector style parameters then these are used. If not and there is a parameter 'name' then this is parsed by DateFormat. If the name does not exist, return null.- Specified by:
getDatein interfaceValueParser- Parameters:
name- A String with the name.- Returns:
- A Date.
-
getDate
Returns aDateobject. String is parsed by supplied DateFormat. If the name does not exist, return null.- Specified by:
getDatein interfaceValueParser- Parameters:
name- A String with the name.df- A DateFormat.- Returns:
- A Date.
-
setProperties
Uses bean introspection to set writable properties of bean from the parameters, where a (case-insensitive) name match between the bean property and the parameter is looked for.- Specified by:
setPropertiesin interfaceValueParser- Parameters:
bean- An Object.- Throws:
Exception- a generic exception.
-
toString
Simple method that attempts to get a textual representation of this object's name/value pairs. String[] handling is currently a bit rough.- Specified by:
toStringin interfaceValueParser- Overrides:
toStringin classObject- Returns:
- A textual representation of the parsed name/value pairs.
-
getToStringParam
This method is only used in toString() and can be used by derived classes to add their local parameters to the toString()- Parameters:
name- A string with the name- Returns:
- the value object array or null if not set
-
setProperty
Set the property 'prop' in the bean to the value of the corresponding parameters. Supports all types supported by getXXX methods plus a few more that come for free because primitives have to be wrapped before being passed to invoke anyway.- Parameters:
bean- An Object.prop- A PropertyDescriptor. @throws Exception a generic exception.- Throws:
Exception
-
putParam
Puts a key into the parameters map. Makes sure that the name is always mapped correctly. This method also enforces the usage of arrays for the parameters.- Parameters:
name- A String with the name.value- An array of Objects with the values.
-
getParam
fetches a key from the parameters map. Makes sure that the name is always mapped correctly.- Parameters:
name- A string with the name- Returns:
- the value object array or null if not set
-
isDisposed
public boolean isDisposed()Checks whether the object is disposed.- Returns:
- true, if the object is disposed.
-
convertAndTrim
Convert a String value according to the url-case-folding property.- Specified by:
convertAndTrimin interfaceValueParser- Parameters:
value- the String to convert- Returns:
- a new String.
-
convertAndTrim
A convert method, which trims the string data and applies the conversion specified in the parameter given. It returns a new string so that it does not destroy the value data.- Specified by:
convertAndTrimin interfaceValueParser- Parameters:
value- A String to be processed.fold- The parameter folding to be applied (seeParserService)- Returns:
- A new String converted to the correct case and trimmed.
-
getUrlFolding
Gets the folding value from the ParserService configuration- Specified by:
getUrlFoldingin interfaceValueParser- Returns:
- The current Folding Value
-
isValid
public boolean isValid()
-