org.apache.commons.httpclient.cookie

Class CookieSpecBase

Implemented Interfaces:
CookieSpec
Known Direct Subclasses:
NetscapeDraftSpec, RFC2109Spec

public class CookieSpecBase
extends Object
implements CookieSpec

Cookie management functions shared by all specification.

Authors:
B.C. Holmes
Park, Sung-Gu
Doug Sale
Rod Waldhoff
dIon Gillard
Sean C. Sullivan
John Evans
Marc A. Saegesser
Oleg Kalnichevski
Mike Bowler

Since:
2.0

Field Summary

protected static Log
LOG
Log object

Fields inherited from interface org.apache.commons.httpclient.cookie.CookieSpec

PATH_DELIM, PATH_DELIM_CHAR

Constructor Summary

CookieSpecBase()
Default constructor

Method Summary

boolean
domainMatch(String host, String domain)
Performs domain-match as implemented in common browsers.
String
formatCookie(Cookie cookie)
Return a string suitable for sending in a "Cookie" header
Header
formatCookieHeader(Cookie cookie)
Create a "Cookie" Header containing the Cookie.
Header
formatCookieHeader(Cookie[] cookies)
Create a "Cookie" Header containing all Cookies in cookies.
String
formatCookies(Cookie[] cookies)
Create a "Cookie" header value containing all Cookies in cookies suitable for sending in a "Cookie" header
Collection
getValidDateFormats()
Cookie[]
match(String host, int port, String path, boolean secure, cookies[] )
Return an array of Cookies that should be submitted with a request with given attributes, false otherwise.
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.
Cookie[]
parse(String host, int port, String path, boolean secure, String header)
Parses the Set-Cookie value into an array of Cookies.
Cookie[]
parse(String host, int port, String path, boolean secure, Header header)
Parse the "Set-Cookie" Header into an array of Cookies.
void
parseAttribute(NameValuePair attribute, Cookie cookie)
Parse the cookie attribute and update the corresponsing Cookie properties.
boolean
pathMatch(String path, String topmostPath)
Performs path-match as implemented in common browsers.
void
setValidDateFormats(Collection datepatterns)
void
validate(String host, int port, String path, boolean secure, Cookie cookie)
Performs most common Cookie validation

Field Details

LOG

protected static final Log LOG
Log object

Constructor Details

CookieSpecBase

public CookieSpecBase()
Default constructor

Method Details

domainMatch

public boolean domainMatch(String host,
                           String domain)
Performs domain-match as implemented in common browsers.
Specified by:
domainMatch in interface CookieSpec

Parameters:
host - The target host.
domain - The cookie domain attribute.

Returns:
true if the specified host matches the given domain.


formatCookie

public String formatCookie(Cookie cookie)
Return a string suitable for sending in a "Cookie" header
Specified by:
formatCookie in interface CookieSpec

Parameters:
cookie - a Cookie to be formatted as string

Returns:
a string suitable for sending in a "Cookie" header.


formatCookieHeader

public Header formatCookieHeader(Cookie cookie)
Create a "Cookie" Header containing the Cookie.
Specified by:
formatCookieHeader in interface CookieSpec

Parameters:
cookie - Cookies to be formatted as a Cookie header

Returns:
a Cookie header.


formatCookieHeader

public Header formatCookieHeader(Cookie[] cookies)
Create a "Cookie" Header containing all Cookies in cookies.
Specified by:
formatCookieHeader in interface CookieSpec

Parameters:
cookies - an array of Cookies to be formatted as a " Cookie" header

Returns:
a "Cookie" Header.


formatCookies

public String formatCookies(Cookie[] cookies)
            throws IllegalArgumentException
Create a "Cookie" header value containing all Cookies in cookies suitable for sending in a "Cookie" header
Specified by:
formatCookies in interface CookieSpec

Parameters:
cookies - an array of Cookies to be formatted

Returns:
a string suitable for sending in a Cookie header.


getValidDateFormats

public Collection getValidDateFormats()
Specified by:
getValidDateFormats in interface CookieSpec


match

public Cookie[] match(String host,
                      int port,
                      String path,
                      boolean secure,
                      cookies[] )
Return an array of Cookies that should be submitted with a request with given attributes, false otherwise.
Specified by:
match in interface CookieSpec

Parameters:
host - the host to which the request is being submitted
port - the port to which the request is being submitted (currently ignored)
path - the path to which the request is being submitted
secure - true if the request is using a secure protocol

Returns:
an array of Cookies matching the criterium


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

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


parse

public Cookie[] parse(String host,
                      int port,
                      String path,
                      boolean secure,
                      String header)
            throws MalformedCookieException
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

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


parse

public Cookie[] parse(String host,
                      int port,
                      String path,
                      boolean secure,
                      Header header)
            throws MalformedCookieException
Parse the "Set-Cookie" Header 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

Parameters:
host - the host from which the Set-Cookie header was received
port - the port from which the Set-Cookie header was received
path - the path from which the Set-Cookie header was received
secure - true when the Set-Cookie header was received over secure conection
header - the Set-Cookie received from the server

Returns:
an array of Cookies parsed from the "Set-Cookie" header

Throws:
MalformedCookieException - if an exception occurs during parsing


parseAttribute

public void parseAttribute(NameValuePair attribute,
                           Cookie cookie)
            throws MalformedCookieException
Parse the cookie attribute and update the corresponsing Cookie properties.
Specified by:
parseAttribute in interface CookieSpec

Parameters:
attribute - HeaderElement cookie attribute from the Set- Cookie
cookie - Cookie to be updated

Throws:
MalformedCookieException - if an exception occurs during parsing


pathMatch

public boolean pathMatch(String path,
                         String topmostPath)
Performs path-match as implemented in common browsers.
Specified by:
pathMatch in interface CookieSpec

Parameters:
path - The target path.
topmostPath - The cookie path attribute.

Returns:
true if the paths match


setValidDateFormats

public void setValidDateFormats(Collection datepatterns)
Specified by:
setValidDateFormats in interface CookieSpec


validate

public void validate(String host,
                     int port,
                     String path,
                     boolean secure,
                     Cookie cookie)
            throws MalformedCookieException
Performs most common Cookie validation
Specified by:
validate in interface CookieSpec

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


Copyright (c) 1999-2005 - Apache Software Foundation