Class ValueMap

All Implemented Interfaces:
Serializable, Cloneable, Map<String,Object>, IValueMap
Direct Known Subclasses:
AttributeMap

public class ValueMap extends LinkedHashMap<String,Object> implements IValueMap
A IValueMap implementation that holds values, parses Strings, and exposes a variety of convenience methods.

In addition to a no-arg constructor and a copy constructor that takes a Map argument, ValueMaps can be constructed using a parsing constructor. ValueMap(String) will parse values from the string in comma separated key/value assignment pairs. For example, new ValueMap("a=9,b=foo").

Values can be retrieved from the ValueMap in the usual way or with methods that do handy conversions to various types, including String, StringValue, int, long, double, Time and Duration.

The makeImmutable method will make the underlying Map immutable. Further attempts to change the Map will result in a RuntimeException.

The toString method converts a ValueMap object to a readable key/value string for diagnostics.

Since:
1.2.6
Author:
Jonathan Locke, Doug Donohoe
See Also:
  • Field Details

  • Constructor Details

    • ValueMap

      public ValueMap()
      Constructs empty ValueMap.
    • ValueMap

      public ValueMap(Map<? extends String,?> map)
      Copy constructor.
      Parameters:
      map - the ValueMap to copy
    • ValueMap

      public ValueMap(String keyValuePairs)
      Constructor.

      NOTE: Please use RequestUtils.decodeParameters() if you wish to properly decode a request URL.

      Parameters:
      keyValuePairs - list of key/value pairs separated by commas. For example, " param1=foo,param2=bar"
    • ValueMap

      public ValueMap(String keyValuePairs, String delimiter)
      Constructor.

      NOTE: Please use RequestUtils.decodeParameters() if you wish to properly decode a request URL.

      Parameters:
      keyValuePairs - list of key/value pairs separated by a given delimiter. For example, " param1=foo,param2=bar" where delimiter is ",".
      delimiter - delimiter String used to separate key/value pairs
    • ValueMap

      public ValueMap(String keyValuePairs, String delimiter, MetaPattern valuePattern)
      Constructor.
      Parameters:
      keyValuePairs - list of key/value pairs separated by a given delimiter. For example, " param1=foo,param2=bar" where delimiter is ",".
      delimiter - delimiter string used to separate key/value pairs
      valuePattern - pattern for value. To pass a simple regular expression, pass " new MetaPattern(regexp)".
  • Method Details

    • clear

      public final void clear()
      Specified by:
      clear in interface Map<String,Object>
      Overrides:
      clear in class LinkedHashMap<String,Object>
    • getBoolean

      public final boolean getBoolean(String key) throws StringValueConversionException
      Description copied from interface: IValueMap
      Retrieves a boolean value by key.
      Specified by:
      getBoolean in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value
      Throws:
      StringValueConversionException
    • getDouble

      public final double getDouble(String key) throws StringValueConversionException
      Description copied from interface: IValueMap
      Retrieves a double value by key.
      Specified by:
      getDouble in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value
      Throws:
      StringValueConversionException
    • getDouble

      public final double getDouble(String key, double defaultValue)
      Description copied from interface: IValueMap
      Retrieves a double value by key, using a default value if not found.
      Specified by:
      getDouble in interface IValueMap
      Parameters:
      key - the key
      defaultValue - value to use if no value is in this IValueMap
      Returns:
      the value
    • getDuration

      Description copied from interface: IValueMap
      Retrieves a Duration by key.
      Specified by:
      getDuration in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the Duration value
      Throws:
      StringValueConversionException
    • getInt

      public final int getInt(String key) throws StringValueConversionException
      Description copied from interface: IValueMap
      Retrieves an int value by key.
      Specified by:
      getInt in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value
      Throws:
      StringValueConversionException
    • getInt

      public final int getInt(String key, int defaultValue)
      Description copied from interface: IValueMap
      Retrieves an int value by key, using a default value if not found.
      Specified by:
      getInt in interface IValueMap
      Parameters:
      key - the key
      defaultValue - value to use if no value is in this IValueMap
      Returns:
      the value
    • getLong

      public final long getLong(String key) throws StringValueConversionException
      Description copied from interface: IValueMap
      Retrieves a long value by key.
      Specified by:
      getLong in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value
      Throws:
      StringValueConversionException
    • getLong

      public final long getLong(String key, long defaultValue)
      Description copied from interface: IValueMap
      Retrieves a long value by key, using a default value if not found.
      Specified by:
      getLong in interface IValueMap
      Parameters:
      key - the key
      defaultValue - value to use if no value in this IValueMap
      Returns:
      the value
    • getString

      public final String getString(String key, String defaultValue)
      Description copied from interface: IValueMap
      Retrieves a String by key, using a default value if not found.
      Specified by:
      getString in interface IValueMap
      Parameters:
      key - the key
      defaultValue - default value to return if value is null
      Returns:
      the String
    • getString

      public final String getString(String key)
      Description copied from interface: IValueMap
      Retrieves a String by key.
      Specified by:
      getString in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the String
    • getCharSequence

      public final CharSequence getCharSequence(String key)
      Description copied from interface: IValueMap
      Retrieves a CharSequence by key.
      Specified by:
      getCharSequence in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the CharSequence
    • getStringArray

      public String[] getStringArray(String key)
      Description copied from interface: IValueMap
      Retrieves a String array by key. If the value was a String[] it will be returned directly. If it was a String it will be converted to a String array of length one. If it was an array of another type, a String array will be made and each element will be converted to a String.
      Specified by:
      getStringArray in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the String array of that key
    • getStringValue

      Description copied from interface: IValueMap
      Retrieves a StringValue object by key.
      Specified by:
      getStringValue in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the StringValue object
    • getInstant

      Description copied from interface: IValueMap
      Retrieves a Instant object by key.
      Specified by:
      getInstant in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the Instant object
      Throws:
      StringValueConversionException
    • isImmutable

      public final boolean isImmutable()
      Description copied from interface: IValueMap
      Returns whether or not this IValueMap is immutable.
      Specified by:
      isImmutable in interface IValueMap
      Returns:
      whether or not this IValueMap is immutable
    • makeImmutable

      public final IValueMap makeImmutable()
      Description copied from interface: IValueMap
      Makes this IValueMap immutable by changing the underlying map representation to a Collections.unmodifiableMap. After calling this method, any attempt to modify this IValueMap will result in a RuntimeException being thrown by the Collections framework.
      Specified by:
      makeImmutable in interface IValueMap
      Returns:
      this IValueMap
    • put

      public Object put(String key, Object value)
      Specified by:
      put in interface Map<String,Object>
      Overrides:
      put in class HashMap<String,Object>
    • add

      public final Object add(String key, String value)
      Adds the value to this ValueMap with the given key. If the key already is in the ValueMap it will combine the values into a String array, else it will just store the value itself.
      Parameters:
      key - the key to store the value under
      value - the value that must be added/merged to the ValueMap
      Returns:
      the value itself if there was no previous value, or a String array with the combined values
    • putAll

      public void putAll(Map<? extends String,?> map)
      Specified by:
      putAll in interface Map<String,Object>
      Overrides:
      putAll in class HashMap<String,Object>
    • remove

      public Object remove(Object key)
      Specified by:
      remove in interface Map<String,Object>
      Overrides:
      remove in class HashMap<String,Object>
    • getKey

      public String getKey(String key)
      Description copied from interface: IValueMap
      Provided that the hash key is a String and you need to access the value ignoring the key's case (upper- or lowercase letters), then you may use this method to get the correct writing.
      Specified by:
      getKey in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the key with the correct writing
    • toString

      public String toString()
      Generates a String representation of this object.
      Overrides:
      toString in class AbstractMap<String,Object>
      Returns:
      String representation of this ValueMap consistent with the tag-attribute style of markup elements. For example: a="x" b="y" c="z".
    • getAsBoolean

      public Boolean getAsBoolean(String key)
      Description copied from interface: IValueMap
      Retrieves a Boolean value by key.
      Specified by:
      getAsBoolean in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value or null if value is not a valid boolean or no value is in this IValueMap
    • getAsBoolean

      public boolean getAsBoolean(String key, boolean defaultValue)
      Description copied from interface: IValueMap
      Retrieves a boolean value by key.
      Specified by:
      getAsBoolean in interface IValueMap
      Parameters:
      key - the key
      defaultValue - the default to return
      Returns:
      the value or defaultValue if value is not a valid boolean or no value is in this IValueMap
    • getAsInteger

      public Integer getAsInteger(String key)
      Description copied from interface: IValueMap
      Retrieves an Integer value by key.
      Specified by:
      getAsInteger in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value or null if value is not a valid integer or no value is in this IValueMap
    • getAsInteger

      public int getAsInteger(String key, int defaultValue)
      Description copied from interface: IValueMap
      Retrieves an integer value by key.
      Specified by:
      getAsInteger in interface IValueMap
      Parameters:
      key - the key
      defaultValue - the default to return
      Returns:
      the value or defaultValue if value is not a valid integer or no value is in this IValueMap
    • getAsLong

      public Long getAsLong(String key)
      Description copied from interface: IValueMap
      Retrieves a Long value by key.
      Specified by:
      getAsLong in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value or null if value is not a valid long or no value is in this IValueMap
    • getAsLong

      public long getAsLong(String key, long defaultValue)
      Description copied from interface: IValueMap
      Retrieves a long value by key.
      Specified by:
      getAsLong in interface IValueMap
      Parameters:
      key - the key
      defaultValue - the default to return
      Returns:
      the value or defaultValue if value is not a valid long or no value is in this IValueMap
    • getAsDouble

      public Double getAsDouble(String key)
      Description copied from interface: IValueMap
      Retrieves a Double value by key.
      Specified by:
      getAsDouble in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value or null if value is not a valid double or no value is in this IValueMap
    • getAsDouble

      public double getAsDouble(String key, double defaultValue)
      Description copied from interface: IValueMap
      Retrieves a double value by key.
      Specified by:
      getAsDouble in interface IValueMap
      Parameters:
      key - the key
      defaultValue - the default to return
      Returns:
      the value or defaultValue if value is not a valid double or no value is in this IValueMap
    • getAsDuration

      Description copied from interface: IValueMap
      Retrieves a Duration value by key.
      Specified by:
      getAsDuration in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value or null if value is not a valid Duration or no value is in this IValueMap
    • getAsDuration

      public Duration getAsDuration(String key, Duration defaultValue)
      Description copied from interface: IValueMap
      Retrieves a Duration value by key.
      Specified by:
      getAsDuration in interface IValueMap
      Parameters:
      key - the key
      defaultValue - the default to return
      Returns:
      the value or defaultValue if value is not a valid Duration or no value is in this IValueMap
    • getAsInstant

      public Instant getAsInstant(String key)
      Description copied from interface: IValueMap
      Retrieves a Time value by key.
      Specified by:
      getAsInstant in interface IValueMap
      Parameters:
      key - the key
      Returns:
      the value or null if value is not a valid Time or no value is in this IValueMap
    • getAsTime

      public Instant getAsTime(String key, Instant defaultValue)
      Description copied from interface: IValueMap
      Retrieves a Time value by key.
      Specified by:
      getAsTime in interface IValueMap
      Parameters:
      key - the key
      defaultValue - the default to return
      Returns:
      the value or defaultValue if value is not a valid Time or no value is in this IValueMap
    • getAsEnum

      public <T extends Enum<T>> T getAsEnum(String key, Class<T> eClass)
      Description copied from interface: IValueMap
      Retrieves an Enum value by key.
      Specified by:
      getAsEnum in interface IValueMap
      Type Parameters:
      T - type of enum
      Parameters:
      key - the key
      eClass - the enumeration class
      Returns:
      the value or null if value is not a valid value of the Enumeration or no value is in this IValueMap
    • getAsEnum

      public <T extends Enum<T>> T getAsEnum(String key, T defaultValue)
      Description copied from interface: IValueMap
      Retrieves an Enum value by key.
      Specified by:
      getAsEnum in interface IValueMap
      Type Parameters:
      T - type of enum
      Parameters:
      key - the key
      defaultValue - the default value from the Enumeration (cannot be null)
      Returns:
      the value or defaultValue if value is not a valid value of the Enumeration or no value is in this IValueMap
    • getAsEnum

      public <T extends Enum<T>> T getAsEnum(String key, Class<T> eClass, T defaultValue)
      Description copied from interface: IValueMap
      Retrieves an Enum value by key.
      Specified by:
      getAsEnum in interface IValueMap
      Type Parameters:
      T - type of enum
      Parameters:
      key - the key
      eClass - the enumeration class
      defaultValue - the default value from the Enumeration (may be null)
      Returns:
      the value or defaultValue if value is not a valid value of the Enumeration or no value is in this IValueMap