Package spark

Class QueryParamsMap

  • Direct Known Subclasses:
    QueryParamsMap.NullQueryParamsMap

    public class QueryParamsMap
    extends java.lang.Object
    These objects represent the parameters sent on a Http Request.
    Parses parameters keys like in Sinatra.

    For a querystring like:
    user[name]=federico&user[lastname]=dayan

    We get a structure like:
    user : {name: federico, lastname: dayan}

    That is:
    queryParamsMapInstance.get("user").get("name").value();
    queryParamsMapInstance.get("user").get("lastname").value();

    It is null safe, meaning that if a key does not exist, it does not throw NullPointerException, it just returns null.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.regex.Pattern KEY_PATTERN
      Pattern for parsing the key of querystring
      private static QueryParamsMap NULL  
      private java.util.Map<java.lang.String,​QueryParamsMap> queryMap
      Holds the nested keys
      private java.lang.String[] values
      Value(s) for this key
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected QueryParamsMap()  
      protected QueryParamsMap​(java.lang.String key, java.lang.String... values)
      Parses the key and creates the child QueryParamMaps user[info][name] creates 3 nested QueryParamMaps.
      protected QueryParamsMap​(java.util.Map<java.lang.String,​java.lang.String[]> params)
      Constructor
        QueryParamsMap​(javax.servlet.http.HttpServletRequest request)
      Creates a new QueryParamsMap from an HttpServletRequest.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Boolean booleanValue()  
      protected static java.lang.String cleanKey​(java.lang.String group)  
      java.lang.Double doubleValue()  
      java.lang.Float floatValue()  
      QueryParamsMap get​(java.lang.String... keys)
      Returns an element from the specified key.
      (package private) java.util.Map<java.lang.String,​QueryParamsMap> getQueryMap()  
      (package private) java.lang.String[] getValues()  
      boolean hasKey​(java.lang.String key)  
      boolean hasKeys()  
      boolean hasValue()  
      java.lang.Integer integerValue()  
      protected void loadKeys​(java.lang.String key, java.lang.String[] value)
      loads keys
      protected void loadQueryString​(java.util.Map<java.lang.String,​java.lang.String[]> params)
      loads query string
      java.lang.Long longValue()  
      protected java.lang.String[] parseKey​(java.lang.String key)  
      java.util.Map<java.lang.String,​java.lang.String[]> toMap()  
      java.lang.String value()
      Returns the value for this key.
      java.lang.String value​(java.lang.String... keys)
      Returns the value for that key.
      java.lang.String[] values()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • KEY_PATTERN

        private static final java.util.regex.Pattern KEY_PATTERN
        Pattern for parsing the key of querystring
      • queryMap

        private java.util.Map<java.lang.String,​QueryParamsMap> queryMap
        Holds the nested keys
      • values

        private java.lang.String[] values
        Value(s) for this key
    • Constructor Detail

      • QueryParamsMap

        public QueryParamsMap​(javax.servlet.http.HttpServletRequest request)
        Creates a new QueryParamsMap from an HttpServletRequest.
        Parses the parameters from request.getParameterMap()
        No need to decode, since HttpServletRequest does it for us.
        Parameters:
        request - the servlet request
      • QueryParamsMap

        protected QueryParamsMap()
      • QueryParamsMap

        protected QueryParamsMap​(java.lang.String key,
                                 java.lang.String... values)
        Parses the key and creates the child QueryParamMaps user[info][name] creates 3 nested QueryParamMaps. For user, info and name.
        Parameters:
        key - The key in the formar fo key1[key2][key3] (for example: user[info][name]).
        values - the values
      • QueryParamsMap

        protected QueryParamsMap​(java.util.Map<java.lang.String,​java.lang.String[]> params)
        Constructor
        Parameters:
        params - the parameters
    • Method Detail

      • loadQueryString

        protected final void loadQueryString​(java.util.Map<java.lang.String,​java.lang.String[]> params)
        loads query string
        Parameters:
        params - the parameters
      • loadKeys

        protected final void loadKeys​(java.lang.String key,
                                      java.lang.String[] value)
        loads keys
        Parameters:
        key - the key
        value - the values
      • parseKey

        protected final java.lang.String[] parseKey​(java.lang.String key)
      • cleanKey

        protected static final java.lang.String cleanKey​(java.lang.String group)
      • get

        public QueryParamsMap get​(java.lang.String... keys)
        Returns an element from the specified key.
        For querystring:

        user[name]=fede

        get("user").get("name").value() # fede
        or
        get("user","name").value() # fede
        Parameters:
        keys - The parameter nested key(s)
        Returns:
        the query params map
      • value

        public java.lang.String value()
        Returns the value for this key.
        If this key has nested elements and does not have a value returns null.
        Returns:
        the value
      • value

        public java.lang.String value​(java.lang.String... keys)
        Returns the value for that key.
        It is a shortcut for:

        get("user").get("name").value() get("user").value("name")
        Parameters:
        keys - the key(s)
        Returns:
        the value
      • hasKeys

        public boolean hasKeys()
        Returns:
        has keys
      • hasKey

        public boolean hasKey​(java.lang.String key)
        Returns:
        true if the map contains the given key
      • hasValue

        public boolean hasValue()
        Returns:
        has values
      • booleanValue

        public java.lang.Boolean booleanValue()
        Returns:
        the boolean value
      • integerValue

        public java.lang.Integer integerValue()
        Returns:
        the integer value
      • longValue

        public java.lang.Long longValue()
        Returns:
        the long value
      • floatValue

        public java.lang.Float floatValue()
        Returns:
        the float value
      • doubleValue

        public java.lang.Double doubleValue()
        Returns:
        the double value
      • values

        public java.lang.String[] values()
        Returns:
        the values
      • getQueryMap

        java.util.Map<java.lang.String,​QueryParamsMap> getQueryMap()
        Returns:
        the queryMap
      • getValues

        java.lang.String[] getValues()
        Returns:
        the values
      • toMap

        public java.util.Map<java.lang.String,​java.lang.String[]> toMap()
        Returns:
        Map representation