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
  • Field Details

    • parserService

      protected ParserService parserService
      The ParserService instance to query for conversion and configuration
    • parameters

      protected Hashtable<String,Object> parameters
      Random access storage for parameter data.
  • Constructor Details

    • BaseValueParser

      public BaseValueParser()
    • BaseValueParser

      public BaseValueParser(String characterEncoding)
      Constructor that takes a character encoding
      Parameters:
      characterEncoding - desired character encoding
    • BaseValueParser

      public BaseValueParser(String characterEncoding, Locale locale)
      Constructor that takes a character encoding and a locale
      Parameters:
      characterEncoding - Sets the character encoding
      locale - Sets the locale
  • Method Details

    • setParserService

      public void setParserService(ParserService parserService)
      Set a ParserService instance
      Specified by:
      setParserService in interface ParserServiceSupport
      Parameters:
      parserService - The parser service instance
    • enableLogging

      public void enableLogging(org.apache.avalon.framework.logger.Logger logger)
      Specified by:
      enableLogging in interface org.apache.avalon.framework.logger.LogEnabled
      Parameters:
      logger - The logger to be used
      See Also:
      • LogEnabled.enableLogging(org.apache.avalon.framework.logger.Logger)
    • 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

      public final void recycle(String characterEncoding)
      Recycles the parser with a character encoding.
      Parameters:
      characterEncoding - the character encoding.
    • dispose

      public void dispose()
      Disposes the parser.
      Specified by:
      dispose in interface ValueParser
    • clear

      public void clear()
      Clear all name/value pairs out of this object.
      Specified by:
      clear in interface ValueParser
    • setCharacterEncoding

      public final void setCharacterEncoding(String s)
      Set the character encoding that will be used by this ValueParser.
      Specified by:
      setCharacterEncoding in interface ValueParser
      Parameters:
      s - the character encoding to use
    • getCharacterEncoding

      public String getCharacterEncoding()
      Get the character encoding that will be used by this ValueParser.
      Specified by:
      getCharacterEncoding in interface ValueParser
      Returns:
      Current character encoding
    • setLocale

      public final void setLocale(Locale l)
      Set the locale that will be used by this ValueParser.
      Specified by:
      setLocale in interface ValueParser
      Parameters:
      l - the default locale to be used by the parser
    • getLocale

      public final Locale getLocale()
      Get the locale that will be used by this ValueParser.
      Specified by:
      getLocale in interface ValueParser
      Returns:
      Locale the locale being used
    • setDateFormat

      public final void setDateFormat(DateFormat df)
      Set the date format that will be used by this ValueParser.
      Specified by:
      setDateFormat in interface ValueParser
      Parameters:
      df - the date format
    • getDateFormat

      public DateFormat getDateFormat()
      Get the date format that will be used by this ValueParser.
      Specified by:
      getDateFormat in interface ValueParser
      Returns:
      DateFormat current date format used by this ValueParser
    • setNumberFormat

      public void setNumberFormat(NumberFormat nf)
      Set the number format that will be used by this ValueParser.
      Specified by:
      setNumberFormat in interface ValueParser
      Parameters:
      nf - the number format to use
    • getNumberFormat

      public NumberFormat getNumberFormat()
      Get the number format that will be used by this ValueParser.
      Specified by:
      getNumberFormat in interface ValueParser
      Returns:
      NumberFormat the current number format
    • add

      public void add(String name, double value)
      Add a name/value pair into this object.
      Specified by:
      add in interface ValueParser
      Parameters:
      name - A String with the name.
      value - A double with the value.
    • add

      public void add(String name, int value)
      Add a name/value pair into this object.
      Specified by:
      add in interface ValueParser
      Parameters:
      name - A String with the name.
      value - An int with the value.
    • add

      public void add(String name, Integer value)
      Add a name/value pair into this object.
      Specified by:
      add in interface ValueParser
      Parameters:
      name - A String with the name.
      value - An Integer with the value.
    • add

      public void add(String name, long value)
      Add a name/value pair into this object.
      Specified by:
      add in interface ValueParser
      Parameters:
      name - A String with the name.
      value - A long with the value.
    • add

      public void add(String name, String value)
      Add a name/value pair into this object.
      Specified by:
      add in interface ValueParser
      Parameters:
      name - A String with the name.
      value - A long with the value.
    • add

      public void add(String name, String[] value)
      Add an array of Strings for a key. This is simply adding all the elements in the array one by one.
      Specified by:
      add in interface ValueParser
      Parameters:
      name - A String with the name.
      value - A String Array.
    • remove

      public Object remove(String name)
      Removes the named parameter from the contained hashtable. Wraps to the contained Map.remove().
      Specified by:
      remove in interface ValueParser
      Parameters:
      name - the name of the mapped value to remove
      Returns:
      The value that was mapped to the key (a String[]) or null if the key was not mapped.
    • convert

      public String convert(String value)
      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:
      convert in interface ValueParser
      Parameters:
      value - A String to be processed.
      Returns:
      A new String converted to lowercase and trimmed.
    • containsKey

      public boolean containsKey(Object key)
      Determine whether a given key has been inserted. All keys are stored in lowercase strings, so override method to account for this.
      Specified by:
      containsKey in interface ValueParser
      Parameters:
      key - An Object with the key to search for.
      Returns:
      True if the object is found.
    • keySet

      public Set<String> keySet()
      Gets the set of keys
      Specified by:
      keySet in interface ValueParser
      Returns:
      A Set of the keys.
    • getKeys

      public String[] getKeys()
      Returns all the available parameter names.
      Specified by:
      getKeys in interface ValueParser
      Returns:
      A object array with the keys.
    • iterator

      public Iterator<String> iterator()
      Gets an iterator over the set of keys
      Specified by:
      iterator in interface Iterable<String>
      Returns:
      An Iterator over the keys.
    • getBoolean

      public boolean getBoolean(String name, boolean defaultValue)
      Return a boolean for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getBoolean in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A boolean.
    • getBoolean

      public boolean getBoolean(String name)
      Return a boolean for the given name. If the name does not exist, return false.
      Specified by:
      getBoolean in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A boolean.
    • getBooleans

      public boolean[] getBooleans(String name)
      Return an array of booleans for the given name. If the name does not exist, return null.
      Specified by:
      getBooleans in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A boolean[].
    • getBooleanObject

      public Boolean getBooleanObject(String name)
      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:
      getBooleanObject in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A Boolean.
    • getBooleanObject

      public Boolean getBooleanObject(String name, Boolean defaultValue)
      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:
      getBooleanObject in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A Boolean.
    • getBooleanObjects

      public Boolean[] getBooleanObjects(String name)
      Return an array of Booleans for the given name. If the name does not exist, return null.
      Specified by:
      getBooleanObjects in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A Boolean[].
    • getDouble

      public double getDouble(String name, double defaultValue)
      Return a double for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getDouble in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A double.
    • getDouble

      public double getDouble(String name)
      Return a double for the given name. If the name does not exist, return 0.0.
      Specified by:
      getDouble in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A double.
    • getDoubles

      public double[] getDoubles(String name)
      Return an array of doubles for the given name. If the name does not exist, return null.
      Specified by:
      getDoubles in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A double[].
    • getDoubleObject

      public Double getDoubleObject(String name, Double defaultValue)
      Return a Double for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getDoubleObject in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A double.
    • getDoubleObject

      public Double getDoubleObject(String name)
      Return a Double for the given name. If the name does not exist, return null.
      Specified by:
      getDoubleObject in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A double.
    • getDoubleObjects

      public Double[] getDoubleObjects(String name)
      Return an array of doubles for the given name. If the name does not exist, return null.
      Specified by:
      getDoubleObjects in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A double[].
    • getFloat

      public float getFloat(String name, float defaultValue)
      Return a float for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getFloat in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A float.
    • getFloat

      public float getFloat(String name)
      Return a float for the given name. If the name does not exist, return 0.0.
      Specified by:
      getFloat in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A float.
    • getFloats

      public float[] getFloats(String name)
      Return an array of floats for the given name. If the name does not exist, return null.
      Specified by:
      getFloats in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A float[].
    • getFloatObject

      public Float getFloatObject(String name, Float defaultValue)
      Return a Float for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getFloatObject in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A Float.
    • getFloatObject

      public Float getFloatObject(String name)
      Return a float for the given name. If the name does not exist, return null.
      Specified by:
      getFloatObject in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A Float.
    • getFloatObjects

      public Float[] getFloatObjects(String name)
      Return an array of floats for the given name. If the name does not exist, return null.
      Specified by:
      getFloatObjects in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A float[].
    • getBigDecimal

      public BigDecimal getBigDecimal(String name, BigDecimal defaultValue)
      Return a BigDecimal for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getBigDecimal in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A BigDecimal.
    • getBigDecimal

      public BigDecimal getBigDecimal(String name)
      Return a BigDecimal for the given name. If the name does not exist, return null.
      Specified by:
      getBigDecimal in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A BigDecimal.
    • getBigDecimals

      public BigDecimal[] getBigDecimals(String name)
      Return an array of BigDecimals for the given name. If the name does not exist, return null.
      Specified by:
      getBigDecimals in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A BigDecimal[].
    • getInt

      public int getInt(String name, int defaultValue)
      Return an int for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getInt in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      An int.
    • getInt

      public int getInt(String name)
      Return an int for the given name. If the name does not exist, return 0.
      Specified by:
      getInt in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      An int.
    • getInts

      public int[] getInts(String name)
      Return an array of ints for the given name. If the name does not exist, return null.
      Specified by:
      getInts in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      An int[].
    • getIntObject

      public Integer getIntObject(String name, Integer defaultValue)
      Return an Integer for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getIntObject in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      An Integer.
    • getIntObject

      public Integer getIntObject(String name)
      Return an Integer for the given name. If the name does not exist, return null.
      Specified by:
      getIntObject in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      An Integer.
    • getIntObjects

      public Integer[] getIntObjects(String name)
      Return an array of Integers for the given name. If the name does not exist, return null.
      Specified by:
      getIntObjects in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      An Integer[].
    • getLong

      public long getLong(String name, long defaultValue)
      Return a long for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getLong in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A long.
    • getLong

      public long getLong(String name)
      Return a long for the given name. If the name does not exist, return 0.
      Specified by:
      getLong in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A long.
    • getLongs

      public long[] getLongs(String name)
      Return an array of longs for the given name. If the name does not exist, return null.
      Specified by:
      getLongs in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A long[].
    • getLongObjects

      public Long[] getLongObjects(String name)
      Return an array of Longs for the given name. If the name does not exist, return null.
      Specified by:
      getLongObjects in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A Long[].
    • getLongObject

      public Long getLongObject(String name)
      Return a Long for the given name. If the name does not exist, return null.
      Specified by:
      getLongObject in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A Long.
    • getLongObject

      public Long getLongObject(String name, Long defaultValue)
      Return a Long for the given name. If the name does not exist, return the default value.
      Specified by:
      getLongObject in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A Long.
    • getByte

      public byte getByte(String name, byte defaultValue)
      Return a byte for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getByte in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A byte.
    • getByte

      public byte getByte(String name)
      Return a byte for the given name. If the name does not exist, return 0.
      Specified by:
      getByte in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A byte.
    • getBytes

      public byte[] getBytes(String name) throws UnsupportedEncodingException
      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:
      getBytes in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A byte[].
      Throws:
      UnsupportedEncodingException - Generic exception
    • getByteObject

      public Byte getByteObject(String name, Byte defaultValue)
      Return a byte for the given name. If the name does not exist, return defaultValue.
      Specified by:
      getByteObject in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A byte.
    • getByteObject

      public Byte getByteObject(String name)
      Return a byte for the given name. If the name does not exist, return 0.
      Specified by:
      getByteObject in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A byte.
    • getString

      public String getString(String name)
      Return a String for the given name. If the name does not exist, return null.
      Specified by:
      getString in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A String or null if the key is unknown.
    • get

      public String get(String name)
      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:
      get in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A String.
    • getString

      public String getString(String name, String defaultValue)
      Return a String for the given name. If the name does not exist, return the defaultValue.
      Specified by:
      getString in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A String.
    • setString

      public void setString(String name, String value)
      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:
      setString in interface ValueParser
      Parameters:
      name - The name of the parameter.
      value - The value to set.
    • getStrings

      public String[] getStrings(String name)
      Return an array of Strings for the given name. If the name does not exist, return null.
      Specified by:
      getStrings in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A String[].
    • getStrings

      public String[] getStrings(String name, String[] defaultValue)
      Return an array of Strings for the given name. If the name does not exist, return the defaultValue.
      Specified by:
      getStrings in interface ValueParser
      Parameters:
      name - A String with the name.
      defaultValue - The default value.
      Returns:
      A String[].
    • setStrings

      public void setStrings(String name, String[] values)
      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:
      setStrings in interface ValueParser
      Parameters:
      name - The name of the parameter.
      values - The value to set.
    • getObject

      public Object getObject(String name)
      Return an Object for the given name. If the name does not exist, return null.
      Specified by:
      getObject in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      An Object.
    • getObjects

      public Object[] getObjects(String name)
      Return an array of Objects for the given name. If the name does not exist, return null.
      Specified by:
      getObjects in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      An Object[].
    • getDate

      public Date getDate(String name, DateFormat df, Date defaultValue)
      Returns a Date object. 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:
      getDate in interface ValueParser
      Parameters:
      name - A String with the name.
      df - A DateFormat.
      defaultValue - The default value.
      Returns:
      A Date.
    • getDate

      public Date getDate(String name)
      Returns a Date object. 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:
      getDate in interface ValueParser
      Parameters:
      name - A String with the name.
      Returns:
      A Date.
    • getDate

      public Date getDate(String name, DateFormat df)
      Returns a Date object. String is parsed by supplied DateFormat. If the name does not exist, return null.
      Specified by:
      getDate in interface ValueParser
      Parameters:
      name - A String with the name.
      df - A DateFormat.
      Returns:
      A Date.
    • setProperties

      public void setProperties(Object bean) throws Exception
      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:
      setProperties in interface ValueParser
      Parameters:
      bean - An Object.
      Throws:
      Exception - a generic exception.
    • toString

      public String 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:
      toString in interface ValueParser
      Overrides:
      toString in class Object
      Returns:
      A textual representation of the parsed name/value pairs.
    • getToStringParam

      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()
      Parameters:
      name - A string with the name
      Returns:
      the value object array or null if not set
    • setProperty

      protected void setProperty(Object bean, PropertyDescriptor prop) throws Exception
      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

      protected void putParam(String name, String[] value)
      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

      protected String[] getParam(String name)
      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

      public String convertAndTrim(String value)
      Convert a String value according to the url-case-folding property.
      Specified by:
      convertAndTrim in interface ValueParser
      Parameters:
      value - the String to convert
      Returns:
      a new String.
    • convertAndTrim

      public String convertAndTrim(String value, ValueParser.URLCaseFolding fold)
      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:
      convertAndTrim in interface ValueParser
      Parameters:
      value - A String to be processed.
      fold - The parameter folding to be applied (see ParserService)
      Returns:
      A new String converted to the correct case and trimmed.
    • getUrlFolding

      public ValueParser.URLCaseFolding getUrlFolding()
      Gets the folding value from the ParserService configuration
      Specified by:
      getUrlFolding in interface ValueParser
      Returns:
      The current Folding Value
    • isValid

      public boolean isValid()