/*
 * Copyright 2015 The Netty Project
 *
 * The Netty Project licenses this file to you 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 io.netty.handler.codec.http.cookie;

import static io.netty.handler.codec.http.cookie.CookieUtil.*;
import static io.netty.util.internal.ObjectUtil.checkNotNull;

The default Cookie implementation.
/** * The default {@link Cookie} implementation. */
public class DefaultCookie implements Cookie { private final String name; private String value; private boolean wrap; private String domain; private String path; private long maxAge = UNDEFINED_MAX_AGE; private boolean secure; private boolean httpOnly;
Creates a new cookie with the specified name and value.
/** * Creates a new cookie with the specified name and value. */
public DefaultCookie(String name, String value) { name = checkNotNull(name, "name").trim(); if (name.isEmpty()) { throw new IllegalArgumentException("empty name"); } this.name = name; setValue(value); } @Override public String name() { return name; } @Override public String value() { return value; } @Override public void setValue(String value) { this.value = checkNotNull(value, "value"); } @Override public boolean wrap() { return wrap; } @Override public void setWrap(boolean wrap) { this.wrap = wrap; } @Override public String domain() { return domain; } @Override public void setDomain(String domain) { this.domain = validateAttributeValue("domain", domain); } @Override public String path() { return path; } @Override public void setPath(String path) { this.path = validateAttributeValue("path", path); } @Override public long maxAge() { return maxAge; } @Override public void setMaxAge(long maxAge) { this.maxAge = maxAge; } @Override public boolean isSecure() { return secure; } @Override public void setSecure(boolean secure) { this.secure = secure; } @Override public boolean isHttpOnly() { return httpOnly; } @Override public void setHttpOnly(boolean httpOnly) { this.httpOnly = httpOnly; } @Override public int hashCode() { return name().hashCode(); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof Cookie)) { return false; } Cookie that = (Cookie) o; if (!name().equals(that.name())) { return false; } if (path() == null) { if (that.path() != null) { return false; } } else if (that.path() == null) { return false; } else if (!path().equals(that.path())) { return false; } if (domain() == null) { if (that.domain() != null) { return false; } } else { return domain().equalsIgnoreCase(that.domain()); } return true; } @Override public int compareTo(Cookie c) { int v = name().compareTo(c.name()); if (v != 0) { return v; } if (path() == null) { if (c.path() != null) { return -1; } } else if (c.path() == null) { return 1; } else { v = path().compareTo(c.path()); if (v != 0) { return v; } } if (domain() == null) { if (c.domain() != null) { return -1; } } else if (c.domain() == null) { return 1; } else { v = domain().compareToIgnoreCase(c.domain()); return v; } return 0; }
Validate a cookie attribute value, throws a IllegalArgumentException otherwise. Only intended to be used by DefaultCookie.
Params:
  • name – attribute name
  • value – attribute value
Returns:the trimmed, validated attribute value
Deprecated:CookieUtil is package private, will be removed once old Cookie API is dropped
/** * Validate a cookie attribute value, throws a {@link IllegalArgumentException} otherwise. * Only intended to be used by {@link io.netty.handler.codec.http.DefaultCookie}. * @param name attribute name * @param value attribute value * @return the trimmed, validated attribute value * @deprecated CookieUtil is package private, will be removed once old Cookie API is dropped */
@Deprecated protected String validateValue(String name, String value) { return validateAttributeValue(name, value); } @Override public String toString() { StringBuilder buf = stringBuilder() .append(name()) .append('=') .append(value()); if (domain() != null) { buf.append(", domain=") .append(domain()); } if (path() != null) { buf.append(", path=") .append(path()); } if (maxAge() >= 0) { buf.append(", maxAge=") .append(maxAge()) .append('s'); } if (isSecure()) { buf.append(", secure"); } if (isHttpOnly()) { buf.append(", HTTPOnly"); } return buf.toString(); } }