Class CookieTool

  • Direct Known Subclasses:
    CookieTool

    @DefaultKey("cookies")
    @ValidScope("request")
    public class CookieTool
    extends Object

    View tool for convenient cookie access and creation.

     Template example(s):
      $cookie.foo
      $cookie.add("bar",'woogie')
    
     tools.xml configuration:
     <tools>
       <toolbox scope="request">
         <tool class="org.apache.velocity.tools.view.CookieTool"/>
       </toolbox>
     </tools>
     

    This class is only designed for use as a request-scope tool.

    Since:
    VelocityTools 2.0
    Version:
    $Id$
    Author:
    Dmitri Colebatch, Nathan Bubna
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  CookieTool.SugarCookie
      Extends Cookie to add some fluid API sugar and a toString() method that renders the Cookie's value instead of the usual Object.toString() shenanigans.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.apache.velocity.runtime.log.Log log  
      protected javax.servlet.http.HttpServletRequest request  
      protected javax.servlet.http.HttpServletResponse response  
    • Constructor Summary

      Constructors 
      Constructor Description
      CookieTool()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      String add​(String name, String value)
      Adds a new Cookie with the specified name and value to the HttpServletResponse.
      String add​(String name, String value, Object maxAge)
      Convenience method to add a new Cookie to the response and set an expiry time for it.
      String add​(javax.servlet.http.Cookie c)
      Adds the specified Cookie to the HttpServletResponse.
      javax.servlet.http.Cookie create​(String name, String value)
      Creates a new Cookie with the specified name and value.
      javax.servlet.http.Cookie create​(String name, String value, Object maxAge)
      Convenience method to create a new Cookie and set an expiry time for it.
      String delete​(String name)
      Retrieves the specified cookie and sets the Max-Age to 0 to tell the browser to delete the cookie.
      javax.servlet.http.Cookie get​(String name)
      Returns the Cookie with the specified name, if it exists.
      List<javax.servlet.http.Cookie> getAll()
      Expose array of Cookies for this request to the template.
      void setLog​(org.apache.velocity.runtime.log.Log log)
      Sets the Log used for logging messages when Cookie creation fails due to an invalid name.
      void setRequest​(javax.servlet.http.HttpServletRequest request)
      Sets the current HttpServletRequest.
      void setResponse​(javax.servlet.http.HttpServletResponse response)
      Sets the current HttpServletResponse.
      String toString()  
    • Field Detail

      • request

        protected javax.servlet.http.HttpServletRequest request
      • response

        protected javax.servlet.http.HttpServletResponse response
      • log

        protected org.apache.velocity.runtime.log.Log log
    • Constructor Detail

      • CookieTool

        public CookieTool()
    • Method Detail

      • setRequest

        public void setRequest​(javax.servlet.http.HttpServletRequest request)
        Sets the current HttpServletRequest. This is required for this tool to operate and will throw a NullPointerException if this is not set or is set to null.
      • setResponse

        public void setResponse​(javax.servlet.http.HttpServletResponse response)
        Sets the current HttpServletResponse. This is required for this tool to operate and will throw a NullPointerException if this is not set or is set to null.
      • setLog

        public void setLog​(org.apache.velocity.runtime.log.Log log)
        Sets the Log used for logging messages when Cookie creation fails due to an invalid name.
      • getAll

        public List<javax.servlet.http.Cookie> getAll()
        Expose array of Cookies for this request to the template.

        This is equivalent to $request.cookies.

        Returns:
        list of Cookie objects for this request
      • get

        public javax.servlet.http.Cookie get​(String name)
        Returns the Cookie with the specified name, if it exists.

        So, if you had a cookie named 'foo', you'd get it's value by $cookies.foo.value or it's max age by $cookies.foo.maxAge

      • add

        public String add​(javax.servlet.http.Cookie c)
        Adds the specified Cookie to the HttpServletResponse. This does *not* add the Cookie to the current request.
        Parameters:
        c - is for cookie (that's good enough for me)
        Returns:
        an empty String to prevent the reference from rendering unless the cookie passed in is null, then it returns null
        Since:
        VelocityTools 2.0
      • add

        public String add​(String name,
                          String value)
        Adds a new Cookie with the specified name and value to the HttpServletResponse. This does *not* add a Cookie to the current request.
        Parameters:
        name - the name to give this cookie
        value - the value to be set for this cookie
        Returns:
        an empty String to prevent the reference from rendering
      • add

        public String add​(String name,
                          String value,
                          Object maxAge)
        Convenience method to add a new Cookie to the response and set an expiry time for it.
        Parameters:
        name - the name to give this cookie
        value - the value to be set for this cookie
        maxAge - the expiry to be set for this cookie
        Returns:
        an empty String to prevent the reference from rendering
      • create

        public javax.servlet.http.Cookie create​(String name,
                                                String value)
        Creates a new Cookie with the specified name and value. This does *not* add the Cookie to the response, so the created Cookie will not be set unless you do $cookies.add($myCookie).
        Parameters:
        name - the name to give this cookie
        value - the value to be set for this cookie
        Returns:
        The new SugarCookie object.
        Since:
        VelocityTools 1.3
      • create

        public javax.servlet.http.Cookie create​(String name,
                                                String value,
                                                Object maxAge)
        Convenience method to create a new Cookie and set an expiry time for it.
        Parameters:
        name - the name to give this cookie
        value - the value to be set for this cookie
        maxAge - the expiry to be set for this cookie
        Returns:
        The new SugarCookie object.
        Since:
        VelocityTools 1.3
      • delete

        public String delete​(String name)
        Retrieves the specified cookie and sets the Max-Age to 0 to tell the browser to delete the cookie. Then this returns an empty string to make this render silently. If no such cookie exists, then it returns null to show the error.
        Parameters:
        name - the name of the cookie to be eaten
        Returns:
        empty string, or null if no such cookie exists
        See Also:
        Cookie.setMaxAge(int), add(Cookie), get(String)