FileDocCategorySizeDatePackage
NetscapeDraftSpec.javaAPI DocAndroid 1.5 API7076Wed May 06 22:41:10 BST 2009org.apache.http.impl.cookie

NetscapeDraftSpec

public class NetscapeDraftSpec extends CookieSpecBase
Netscape cookie draft compliant cookie policy
author
B.C. Holmes
author
Park, Sung-Gu
author
Doug Sale
author
Rod Waldhoff
author
dIon Gillard
author
Sean C. Sullivan
author
John Evans
author
Marc A. Saegesser
author
Oleg Kalnichevski
author
Mike Bowler
since
4.0

Fields Summary
protected static final String
EXPIRES_PATTERN
private final String[]
datepatterns
Constructors Summary
public NetscapeDraftSpec(String[] datepatterns)
Default constructor

 
    
       
        
        super();
        if (datepatterns != null) {
            this.datepatterns = datepatterns.clone();
        } else {
            this.datepatterns = new String[] { EXPIRES_PATTERN };
        }
        registerAttribHandler(ClientCookie.PATH_ATTR, new BasicPathHandler());
        registerAttribHandler(ClientCookie.DOMAIN_ATTR, new NetscapeDomainHandler());
        registerAttribHandler(ClientCookie.MAX_AGE_ATTR, new BasicMaxAgeHandler());
        registerAttribHandler(ClientCookie.SECURE_ATTR, new BasicSecureHandler());
        registerAttribHandler(ClientCookie.COMMENT_ATTR, new BasicCommentHandler());
        registerAttribHandler(ClientCookie.EXPIRES_ATTR, new BasicExpiresHandler(
                this.datepatterns));
    
public NetscapeDraftSpec()
Default constructor

        this(null);
    
Methods Summary
public java.util.ListformatCookies(java.util.List cookies)

        if (cookies == null) {
            throw new IllegalArgumentException("List of cookies may not be null");
        }
        if (cookies.isEmpty()) {
            throw new IllegalArgumentException("List of cookies may not be empty");
        }
        CharArrayBuffer buffer = new CharArrayBuffer(20 * cookies.size());
        buffer.append(SM.COOKIE);
        buffer.append(": ");
        for (int i = 0; i < cookies.size(); i++) {
            Cookie cookie = cookies.get(i);
            if (i > 0) {
                buffer.append("; ");
            }
            buffer.append(cookie.getName());
            String s = cookie.getValue();
            if (s != null) {
                buffer.append("=");
                buffer.append(s);
            }
        }
        List<Header> headers = new ArrayList<Header>(1);
        headers.add(new BufferedHeader(buffer));
        return headers;
    
public intgetVersion()

        return 0;
    
public org.apache.http.HeadergetVersionHeader()

        return null;
    
public java.util.Listparse(org.apache.http.Header header, org.apache.http.cookie.CookieOrigin origin)
Parses the Set-Cookie value into an array of Cookies.

Syntax of the Set-Cookie HTTP Response Header:

This is the format a CGI script would use to add to the HTTP headers a new piece of data which is to be stored by the client for later retrieval.

Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure

Please note that Netscape draft specification does not fully conform to the HTTP header format. Netscape draft does not specify whether multiple cookies may be sent in one header. Hence, comma character may be present in unquoted cookie value or unquoted parameter value.

see
The Cookie Spec.
param
header the Set-Cookie received from the server
return
an array of Cookies parsed from the Set-Cookie value
throws
MalformedCookieException if an exception occurs during parsing

        if (header == null) {
            throw new IllegalArgumentException("Header may not be null");
        }
        if (origin == null) {
            throw new IllegalArgumentException("Cookie origin may not be null");
        }
        NetscapeDraftHeaderParser parser = NetscapeDraftHeaderParser.DEFAULT;
        CharArrayBuffer buffer;
        ParserCursor cursor;
        if (header instanceof FormattedHeader) {
            buffer = ((FormattedHeader) header).getBuffer();
            cursor = new ParserCursor(
                    ((FormattedHeader) header).getValuePos(), 
                    buffer.length());
        } else {
            String s = header.getValue();
            if (s == null) {
                throw new MalformedCookieException("Header value is null");
            }
            buffer = new CharArrayBuffer(s.length());
            buffer.append(s);
            cursor = new ParserCursor(0, buffer.length());
        }
        return parse(new HeaderElement[] { parser.parseHeader(buffer, cursor) }, origin);