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:
    Serialized Form
    • Constructor Detail

      • 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 Detail

      • 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
      • 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,
                                  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
      • 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
      • 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
      • 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
      • 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

        public Duration getAsDuration​(String key)
        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