/*
* Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package org.glassfish.grizzly.http;
import org.glassfish.grizzly.Buffer;
import org.glassfish.grizzly.http.util.CookieParserUtils;
Cookies builder, which could be used to construct a set of cookies, either client or server.
Author: Alexey Stashok
/**
* Cookies builder, which could be used to construct a set of cookies, either client or server.
*
* @author Alexey Stashok
*/
public class CookiesBuilder {
Returns the client-side cookies builder.
Returns: the client-side cookies builder.
/**
* Returns the client-side cookies builder.
*
* @return the client-side cookies builder.
*/
public static ClientCookiesBuilder client() {
return client(false, false);
}
Returns the client-side cookies builder with the specific "strict cookie version compliance".
Returns: the client-side cookies builder with the specific "strict cookie version compliance".
/**
* Returns the client-side cookies builder with the specific "strict cookie version compliance".
*
* @return the client-side cookies builder with the specific "strict cookie version compliance".
*/
public static ClientCookiesBuilder client(boolean strictVersionOneCompliant) {
return new ClientCookiesBuilder(strictVersionOneCompliant, false);
}
Returns the client-side cookies builder with the specific "strict cookie version compliance".
Returns: the client-side cookies builder with the specific "strict cookie version compliance".
/**
* Returns the client-side cookies builder with the specific "strict cookie version compliance".
*
* @return the client-side cookies builder with the specific "strict cookie version compliance".
*/
public static ClientCookiesBuilder client(boolean strictVersionOneCompliant, boolean rfc6265Enabled) {
return new ClientCookiesBuilder(strictVersionOneCompliant, rfc6265Enabled);
}
Returns the server-side cookies builder with the specific "strict cookie version compliance".
Returns: the server-side cookies builder with the specific "strict cookie version compliance".
/**
* Returns the server-side cookies builder with the specific "strict cookie version compliance".
*
* @return the server-side cookies builder with the specific "strict cookie version compliance".
*/
public static ServerCookiesBuilder server() {
return server(false, false);
}
Returns the server-side cookies builder with the specific "strict cookie version compliance".
Returns: the server-side cookies builder with the specific "strict cookie version compliance".
/**
* Returns the server-side cookies builder with the specific "strict cookie version compliance".
*
* @return the server-side cookies builder with the specific "strict cookie version compliance".
*/
public static ServerCookiesBuilder server(boolean strictVersionOneCompliant) {
return new ServerCookiesBuilder(strictVersionOneCompliant, false);
}
Returns the server-side cookies builder with the specific "strict cookie version compliance".
Returns: the server-side cookies builder with the specific "strict cookie version compliance".
/**
* Returns the server-side cookies builder with the specific "strict cookie version compliance".
*
* @return the server-side cookies builder with the specific "strict cookie version compliance".
*/
public static ServerCookiesBuilder server(boolean strictVersionOneCompliant, boolean rfc6265Enabled) {
return new ServerCookiesBuilder(strictVersionOneCompliant, rfc6265Enabled);
}
public static class ClientCookiesBuilder extends AbstractCookiesBuilder<ClientCookiesBuilder> {
public ClientCookiesBuilder(boolean strictVersionOneCompliant, boolean rfc6265Enabled) {
super(strictVersionOneCompliant, rfc6265Enabled);
}
@Override
public ClientCookiesBuilder parse(Buffer cookiesHeader) {
return parse(cookiesHeader, cookiesHeader.position(), cookiesHeader.limit());
}
@Override
public ClientCookiesBuilder parse(Buffer cookiesHeader, int position, int limit) {
CookieParserUtils.parseClientCookies(cookies, cookiesHeader, position, limit - position, strictVersionOneCompliant, rfc6265Enabled);
return this;
}
@Override
public ClientCookiesBuilder parse(String cookiesHeader) {
CookieParserUtils.parseClientCookies(cookies, cookiesHeader, strictVersionOneCompliant, rfc6265Enabled);
return this;
}
}
public static class ServerCookiesBuilder extends AbstractCookiesBuilder<ServerCookiesBuilder> {
public ServerCookiesBuilder(boolean strictVersionOneCompliant, boolean rfc6265Enabled) {
super(strictVersionOneCompliant, rfc6265Enabled);
}
@Override
public ServerCookiesBuilder parse(Buffer cookiesHeader) {
return parse(cookiesHeader, cookiesHeader.position(), cookiesHeader.limit());
}
@Override
public ServerCookiesBuilder parse(Buffer cookiesHeader, int position, int limit) {
CookieParserUtils.parseServerCookies(cookies, cookiesHeader, position, limit - position, strictVersionOneCompliant, rfc6265Enabled);
return this;
}
@Override
public ServerCookiesBuilder parse(String cookiesHeader) {
CookieParserUtils.parseServerCookies(cookies, cookiesHeader, strictVersionOneCompliant, rfc6265Enabled);
return this;
}
}
public abstract static class AbstractCookiesBuilder<E extends AbstractCookiesBuilder> {
protected final boolean strictVersionOneCompliant;
protected final boolean rfc6265Enabled;
public AbstractCookiesBuilder(boolean strictVersionOneCompliant, boolean rfc6265Enabled) {
this.strictVersionOneCompliant = strictVersionOneCompliant;
this.rfc6265Enabled = rfc6265Enabled;
}
protected final Cookies cookies = new Cookies();
public abstract E parse(Buffer cookiesHeader);
public abstract E parse(Buffer cookiesHeader, int position, int limit);
public abstract E parse(String cookiesHeader);
public Cookies build() {
return cookies;
}
}
}