View Javadoc
1   /*
2    * Copyright 2015 The Netty Project
3    *
4    * The Netty Project licenses this file to you under the Apache License,
5    * version 2.0 (the "License"); you may not use this file except in compliance
6    * with the License. You may obtain a copy of the License at:
7    *
8    *   http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations
14   * under the License.
15   */
16  package org.jboss.netty.handler.codec.http.cookie;
17  
18  /**
19   * An interface defining an
20   * <a href="http://en.wikipedia.org/wiki/HTTP_cookie">HTTP cookie</a>.
21   */
22  public interface Cookie extends Comparable<Cookie> {
23  
24      /**
25       * Returns the name of this {@link Cookie}.
26       *
27       * @return The name of this {@link Cookie}
28       */
29      String name();
30  
31      /**
32       * Returns the value of this {@link Cookie}.
33       *
34       * @return The value of this {@link Cookie}
35       */
36      String value();
37  
38      /**
39       * Sets the value of this {@link Cookie}.
40       *
41       * @param value The value to set
42       */
43      void setValue(String value);
44  
45      /**
46       * Returns true if the raw value of this {@link Cookie},
47       * was wrapped with double quotes in original Set-Cookie header.
48       *
49       * @return If the value of this {@link Cookie} is to be wrapped
50       */
51      boolean wrap();
52  
53      /**
54       * Sets true if the value of this {@link Cookie}
55       * is to be wrapped with double quotes.
56       *
57       * @param wrap true if wrap
58       */
59      void setWrap(boolean wrap);
60  
61      /**
62       * Returns the domain of this {@link Cookie}.
63       *
64       * @return The domain of this {@link Cookie}
65       */
66      String domain();
67  
68      /**
69       * Sets the domain of this {@link Cookie}.
70       *
71       * @param domain The domain to use
72       */
73      void setDomain(String domain);
74  
75      /**
76       * Returns the path of this {@link Cookie}.
77       *
78       * @return The {@link Cookie}'s path
79       */
80      String path();
81  
82      /**
83       * Sets the path of this {@link Cookie}.
84       *
85       * @param path The path to use for this {@link Cookie}
86       */
87      void setPath(String path);
88  
89      /**
90       * Returns the maximum age of this {@link Cookie} in seconds or {@link Integer#MIN_VALUE} if unspecified
91       *
92       * @return The maximum age of this {@link Cookie}
93       */
94      int maxAge();
95  
96      /**
97       * Sets the maximum age of this {@link Cookie} in seconds.
98       * If an age of {@code 0} is specified, this {@link Cookie} will be
99       * automatically removed by browser because it will expire immediately.
100      * If {@link Integer#MIN_VALUE} is specified, this {@link Cookie} will be removed when the
101      * browser is closed.
102      *
103      * @param maxAge The maximum age of this {@link Cookie} in seconds
104      */
105     void setMaxAge(int maxAge);
106 
107     /**
108      * Checks to see if this {@link Cookie} is secure
109      *
110      * @return True if this {@link Cookie} is secure, otherwise false
111      */
112     boolean isSecure();
113 
114     /**
115      * Sets the security getStatus of this {@link Cookie}
116      *
117      * @param secure True if this {@link Cookie} is to be secure, otherwise false
118      */
119     void setSecure(boolean secure);
120 
121     /**
122      * Checks to see if this {@link Cookie} can only be accessed via HTTP.
123      * If this returns true, the {@link Cookie} cannot be accessed through
124      * client side script - But only if the browser supports it.
125      * For more information, please look <a href="http://www.owasp.org/index.php/HTTPOnly">here</a>
126      *
127      * @return True if this {@link Cookie} is HTTP-only or false if it isn't
128      */
129     boolean isHttpOnly();
130 
131     /**
132      * Determines if this {@link Cookie} is HTTP only.
133      * If set to true, this {@link Cookie} cannot be accessed by a client
134      * side script. However, this works only if the browser supports it.
135      * For for information, please look
136      * <a href="http://www.owasp.org/index.php/HTTPOnly">here</a>.
137      *
138      * @param httpOnly True if the {@link Cookie} is HTTP only, otherwise false.
139      */
140     void setHttpOnly(boolean httpOnly);
141 }