| // Copyright 2012-2013 The Apache Software Foundation |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package org.apache.tapestry5; |
| |
| import org.apache.tapestry5.services.Request; |
| |
| /** |
| * A fluent API to create and write cookies. Used by the |
| * {@link org.apache.tapestry5.services.Cookies} service. |
| * |
| * @since 5.4 |
| */ |
| public abstract class CookieBuilder |
| { |
| |
| protected final String name; |
| protected final String value; |
| |
| protected String path; |
| protected String domain; |
| protected Integer maxAge; |
| protected Boolean secure; |
| |
| protected Boolean httpOnly; |
| protected int version = 0; |
| protected String comment; |
| |
| /** |
| * Initialize a new CookieBuilder |
| * |
| * @param name the name of the resulting cookie |
| * @param value the value of the resulting cookie |
| */ |
| protected CookieBuilder(String name, String value) |
| { |
| this.name = name; |
| this.value = value; |
| } |
| |
| /** |
| * Set the path for the cookie to be created. Defaults to {@link Request#getContextPath()}. |
| * @param path the path for the cookie |
| * @return the modified {@link CookieBuilder} |
| */ |
| public CookieBuilder setPath(String path) |
| { |
| this.path = path; |
| return this; |
| } |
| |
| /** |
| * Set the domain for the cookie to be created. Will not be set by default. |
| * @param domain the domain for the cookie |
| * @return the modified {@link CookieBuilder} |
| */ |
| public CookieBuilder setDomain(String domain) |
| { |
| this.domain = domain; |
| return this; |
| } |
| |
| /** |
| * Set how long the cookie should live. A value of <code>0</code> deletes a cookie, a value of |
| * <code>-1</code> deletes a cookie upon closing the browser. The default is defined by |
| * the symbol <code>org.apache.tapestry5.default-cookie-max-age</code>. The factory default for |
| * this value is the equivalent of one week. |
| * |
| * @param maxAge |
| * the cookie's maximum age in seconds |
| * @return the modified {@link CookieBuilder} |
| */ |
| public CookieBuilder setMaxAge(int maxAge) |
| { |
| this.maxAge = maxAge; |
| return this; |
| } |
| |
| /** |
| * Set the cookie's secure mode. Defaults to {@link Request#isSecure()}. |
| * |
| * @param secure whether to send the cookie over a secure channel only |
| * @return the modified {@link CookieBuilder} |
| */ |
| public CookieBuilder setSecure(boolean secure) |
| { |
| this.secure = secure; |
| return this; |
| } |
| |
| /** |
| * Set the cookie's httpOnly mode. |
| * |
| * @param httpOnly prevents javascript access to this cookie |
| * @return the modified {@link CookieBuilder} |
| */ |
| public CookieBuilder setHttpOnly(boolean httpOnly) |
| { |
| this.httpOnly = httpOnly; |
| return this; |
| } |
| |
| /** |
| * Version 0 complies with the original Netscape cookie specification. |
| * Version 1 complies with RFC 2109 (experimental) |
| * |
| * @param version number |
| * @return the modified {@link CookieBuilder} |
| */ |
| public CookieBuilder setVersion(int version) { |
| this.version = version; |
| return this; |
| } |
| |
| /** |
| * Comments are not supported by version 0 (the default) cookies |
| * |
| * @param comment for cookie |
| * @return the modified {@link CookieBuilder} |
| */ |
| public CookieBuilder setComment(String comment) { |
| this.comment = comment; |
| return this; |
| } |
| |
| |
| /** |
| * Sets defaults and writes the cookie to the client. |
| */ |
| public abstract void write(); |
| |
| /** |
| * Deletes the cookie. |
| */ |
| public abstract void delete(); |
| |
| } |