java.lang.Object
edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.cookie.CookieSpecBase
edu.internet2.middleware.grouperClientExt.org.apache.commons.httpclient.cookie.RFC2965Spec
All Implemented Interfaces:
CookieSpec, CookieVersionSupport

public class RFC2965Spec extends CookieSpecBase implements CookieVersionSupport

RFC 2965 specific cookie management functions.

Since:
3.1
  • Field Details

    • SET_COOKIE2_KEY

      public static final String SET_COOKIE2_KEY
      Cookie Response Header name for cookies processed by this spec.
      See Also:
  • Constructor Details

    • RFC2965Spec

      public RFC2965Spec()
      Default constructor
  • Method Details

    • registerAttribHandler

      protected void registerAttribHandler(String name, CookieAttributeHandler handler)
    • findAttribHandler

      protected CookieAttributeHandler findAttribHandler(String name)
      Finds an attribute handler CookieAttributeHandler for the given attribute. Returns null if no attribute handler is found for the specified attribute.
      Parameters:
      name - attribute name. e.g. Domain, Path, etc.
      Returns:
      an attribute handler or null
    • getAttribHandler

      protected CookieAttributeHandler getAttribHandler(String name)
      Gets attribute handler CookieAttributeHandler for the given attribute.
      Parameters:
      name - attribute name. e.g. Domain, Path, etc.
      Throws:
      IllegalStateException - if handler not found for the specified attribute.
    • getAttribHandlerIterator

      protected Iterator getAttribHandlerIterator()
    • parse

      public Cookie[] parse(String host, int port, String path, boolean secure, Header header) throws MalformedCookieException
      Parses the Set-Cookie2 value into an array of Cookies.

      The syntax for the Set-Cookie2 response header is:

       set-cookie      =    "Set-Cookie2:" cookies
       cookies         =    1#cookie
       cookie          =    NAME "=" VALUE * (";" cookie-av)
       NAME            =    attr
       VALUE           =    value
       cookie-av       =    "Comment" "=" value
                       |    "CommentURL" "=" <"> http_URL <">
                       |    "Discard"
                       |    "Domain" "=" value
                       |    "Max-Age" "=" value
                       |    "Path" "=" value
                       |    "Port" [ "=" <"> portlist <"> ]
                       |    "Secure"
                       |    "Version" "=" 1*DIGIT
       portlist        =       1#portnum
       portnum         =       1*DIGIT
       
      Specified by:
      parse in interface CookieSpec
      Overrides:
      parse in class CookieSpecBase
      Parameters:
      host - the host from which the Set-Cookie2 value was received
      port - the port from which the Set-Cookie2 value was received
      path - the path from which the Set-Cookie2 value was received
      secure - true when the Set-Cookie2 value was received over secure conection
      header - the Set-Cookie2 Header received from the server
      Returns:
      an array of Cookies parsed from the Set-Cookie2 value
      Throws:
      MalformedCookieException - if an exception occurs during parsing
      See Also:
    • parse

      public Cookie[] parse(String host, int port, String path, boolean secure, String header) throws MalformedCookieException
      Description copied from class: CookieSpecBase
      Parses the Set-Cookie value into an array of Cookies.

      The syntax for the Set-Cookie response header is:

       set-cookie      =    "Set-Cookie:" cookies
       cookies         =    1#cookie
       cookie          =    NAME "=" VALUE * (";" cookie-av)
       NAME            =    attr
       VALUE           =    value
       cookie-av       =    "Comment" "=" value
                       |    "Domain" "=" value
                       |    "Max-Age" "=" value
                       |    "Path" "=" value
                       |    "Secure"
                       |    "Version" "=" 1*DIGIT
       
      Specified by:
      parse in interface CookieSpec
      Overrides:
      parse in class CookieSpecBase
      Parameters:
      host - the host from which the Set-Cookie value was received
      port - the port from which the Set-Cookie value was received
      path - the path from which the Set-Cookie value was received
      secure - true when the Set-Cookie value was received over secure conection
      header - the Set-Cookie received from the server
      Returns:
      an array of Cookies parsed from the Set-Cookie value
      Throws:
      MalformedCookieException - if an exception occurs during parsing
      See Also:
    • parseAttribute

      public void parseAttribute(NameValuePair attribute, Cookie cookie) throws MalformedCookieException
      Parse RFC 2965 specific cookie attribute and update the corresponsing Cookie properties.
      Specified by:
      parseAttribute in interface CookieSpec
      Overrides:
      parseAttribute in class CookieSpecBase
      Parameters:
      attribute - NameValuePair cookie attribute from the Set-Cookie2 header.
      cookie - Cookie to be updated
      Throws:
      MalformedCookieException - if an exception occurs during parsing
    • validate

      public void validate(String host, int port, String path, boolean secure, Cookie cookie) throws MalformedCookieException
      Performs RFC 2965 compliant Cookie validation
      Specified by:
      validate in interface CookieSpec
      Overrides:
      validate in class CookieSpecBase
      Parameters:
      host - the host from which the Cookie was received
      port - the port from which the Cookie was received
      path - the path from which the Cookie was received
      secure - true when the Cookie was received using a secure connection
      cookie - The cookie to validate
      Throws:
      MalformedCookieException - if an exception occurs during validation
    • match

      public boolean match(String host, int port, String path, boolean secure, Cookie cookie)
      Return true if the cookie should be submitted with a request with given attributes, false otherwise.
      Specified by:
      match in interface CookieSpec
      Overrides:
      match in class CookieSpecBase
      Parameters:
      host - the host to which the request is being submitted
      port - the port to which the request is being submitted (ignored)
      path - the path to which the request is being submitted
      secure - true if the request is using a secure connection
      cookie - Cookie to be matched
      Returns:
      true if the cookie matches the criterium
    • formatCookie

      public String formatCookie(Cookie cookie)
      Return a string suitable for sending in a "Cookie" header as defined in RFC 2965
      Specified by:
      formatCookie in interface CookieSpec
      Overrides:
      formatCookie in class CookieSpecBase
      Parameters:
      cookie - a Cookie to be formatted as string
      Returns:
      a string suitable for sending in a "Cookie" header.
    • formatCookies

      public String formatCookies(Cookie[] cookies)
      Create a RFC 2965 compliant "Cookie" header value containing all Cookies suitable for sending in a "Cookie" header
      Specified by:
      formatCookies in interface CookieSpec
      Overrides:
      formatCookies in class CookieSpecBase
      Parameters:
      cookies - an array of Cookies to be formatted
      Returns:
      a string suitable for sending in a Cookie header.
    • domainMatch

      public boolean domainMatch(String host, String domain)
      Performs domain-match as defined by the RFC2965.

      Host A's name domain-matches host B's if

          their host name strings string-compare equal; or
          A is a HDN string and has the form NB, where N is a non-empty name string, B has the form .B', and B' is a HDN string. (So, x.y.com domain-matches .Y.com but not Y.com.)
      Specified by:
      domainMatch in interface CookieSpec
      Overrides:
      domainMatch in class CookieSpecBase
      Parameters:
      host - host name where cookie is received from or being sent to.
      domain - The cookie domain attribute.
      Returns:
      true if the specified host matches the given domain.
    • getVersion

      public int getVersion()
      Specified by:
      getVersion in interface CookieVersionSupport
    • getVersionHeader

      public Header getVersionHeader()
      Specified by:
      getVersionHeader in interface CookieVersionSupport