1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  package org.apache.commons.httpclient.cookie;
31  
32  import org.apache.commons.httpclient.Cookie;
33  
34  /**
35   * Ths interface represents a cookie attribute handler responsible
36   * for parsing, validating, and matching a specific cookie attribute, 
37   * such as path, domain, port, etc.
38   *
39   * Different cookie specifications can provide a specific
40   * implementation for this class based on their cookie handling
41   * rules.
42   *
43   * @author jain.samit@gmail.com (Samit Jain)
44   * 
45   * @since 3.1
46   */
47  public interface CookieAttributeHandler {
48  
49    /**
50     * Parse the given cookie attribute value and update the corresponding
51     * {@link org.apache.commons.httpclient.Cookie} property.
52     *
53     * @param cookie {@link org.apache.commons.httpclient.Cookie} to be updated
54     * @param value cookie attribute value from the cookie response header
55     */
56    void parse(Cookie cookie, String value)
57            throws MalformedCookieException;
58  
59    /**
60     * Peforms cookie validation for the given attribute value.
61     *
62     * @param cookie {@link org.apache.commons.httpclient.Cookie} to validate
63     * @param origin the cookie source to validate against
64     * @throws MalformedCookieException if cookie validation fails for this attribute
65     */
66    void validate(Cookie cookie, CookieOrigin origin)
67            throws MalformedCookieException;
68  
69    /**
70     * Matches the given value (property of the destination host where request is being
71     * submitted) with the corresponding cookie attribute.
72     *
73     * @param cookie {@link org.apache.commons.httpclient.Cookie} to match
74     * @param origin the cookie source to match against
75     * @return <tt>true</tt> if the match is successful; <tt>false</tt> otherwise
76     */
77    boolean match(Cookie cookie, CookieOrigin origin);
78  
79  }