diff --git a/httpclient/src/main/java/org/apache/http/client/config/CookieSpecs.java b/httpclient/src/main/java/org/apache/http/client/config/CookieSpecs.java
index af82ab377..8c728fd6f 100644
--- a/httpclient/src/main/java/org/apache/http/client/config/CookieSpecs.java
+++ b/httpclient/src/main/java/org/apache/http/client/config/CookieSpecs.java
@@ -37,11 +37,6 @@ import org.apache.http.annotation.Immutable;
@Immutable
public final class CookieSpecs {
- /**
- * The Netscape cookie draft compliant policy.
- */
- public static final String NETSCAPE = "netscape";
-
/**
* The RFC 6265 compliant policy (interoprability profile).
*/
diff --git a/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java b/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java
index 7516260fb..7f6a580f4 100644
--- a/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java
+++ b/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java
@@ -189,15 +189,6 @@ public class RequestAddCookies implements HttpRequestInterceptor {
}
}
- final int ver = cookieSpec.getVersion();
- if (ver > 0) {
- final Header header = cookieSpec.getVersionHeader();
- if (header != null) {
- // Advertise cookie version support
- request.addHeader(header);
- }
- }
-
// Stick the CookieSpec and CookieOrigin instances to the HTTP context
// so they could be obtained by the response interceptor
context.setAttribute(HttpClientContext.COOKIE_SPEC, cookieSpec);
diff --git a/httpclient/src/main/java/org/apache/http/client/protocol/ResponseProcessCookies.java b/httpclient/src/main/java/org/apache/http/client/protocol/ResponseProcessCookies.java
index 5f3cfaba0..8a3964914 100644
--- a/httpclient/src/main/java/org/apache/http/client/protocol/ResponseProcessCookies.java
+++ b/httpclient/src/main/java/org/apache/http/client/protocol/ResponseProcessCookies.java
@@ -88,16 +88,8 @@ public class ResponseProcessCookies implements HttpResponseInterceptor {
this.log.debug("Cookie origin not specified in HTTP context");
return;
}
- HeaderIterator it = response.headerIterator(SM.SET_COOKIE);
+ final HeaderIterator it = response.headerIterator(SM.SET_COOKIE);
processCookies(it, cookieSpec, cookieOrigin, cookieStore);
-
- // see if the cookie spec supports cookie versioning.
- if (cookieSpec.getVersion() > 0) {
- // process set-cookie2 headers.
- // Cookie2 will replace equivalent Cookie instances
- it = response.headerIterator(SM.SET_COOKIE2);
- processCookies(it, cookieSpec, cookieOrigin, cookieStore);
- }
}
private void processCookies(
@@ -145,8 +137,6 @@ public class ResponseProcessCookies implements HttpResponseInterceptor {
buf.append(v);
}
buf.append("\"");
- buf.append(", version:");
- buf.append(Integer.toString(cookie.getVersion()));
buf.append(", domain:");
buf.append(cookie.getDomain());
buf.append(", path:");
diff --git a/httpclient/src/main/java/org/apache/http/cookie/ClientCookie.java b/httpclient/src/main/java/org/apache/http/cookie/ClientCookie.java
deleted file mode 100644
index aa5fee881..000000000
--- a/httpclient/src/main/java/org/apache/http/cookie/ClientCookie.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.cookie;
-
-import org.apache.http.annotation.Obsolete;
-
-/**
- * ClientCookie extends the standard {@link Cookie} interface with
- * additional client specific functionality such ability to retrieve
- * original cookie attributes exactly as they were specified by the
- * origin server. This is important for generating the {@code Cookie}
- * header because some cookie specifications require that the
- * {@code Cookie} header should include certain attributes only if
- * they were specified in the {@code Set-Cookie} header.
- *
- * Please do not use attributes marked as @Obsolete. They have been rendered
- * obsolete by RFC 6265.
- *
- * @since 4.0
- */
-public interface ClientCookie extends Cookie {
-
- @Obsolete
- public static final String VERSION_ATTR = "version";
- public static final String PATH_ATTR = "path";
- public static final String DOMAIN_ATTR = "domain";
- public static final String MAX_AGE_ATTR = "max-age";
- public static final String SECURE_ATTR = "secure";
- @Obsolete
- public static final String COMMENT_ATTR = "comment";
- public static final String EXPIRES_ATTR = "expires";
-
- @Obsolete
- public static final String PORT_ATTR = "port";
- @Obsolete
- public static final String COMMENTURL_ATTR = "commenturl";
- @Obsolete
- public static final String DISCARD_ATTR = "discard";
-
- String getAttribute(String name);
-
- boolean containsAttribute(String name);
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/cookie/Cookie.java b/httpclient/src/main/java/org/apache/http/cookie/Cookie.java
index e2592813a..a0ee01487 100644
--- a/httpclient/src/main/java/org/apache/http/cookie/Cookie.java
+++ b/httpclient/src/main/java/org/apache/http/cookie/Cookie.java
@@ -29,8 +29,6 @@ package org.apache.http.cookie;
import java.util.Date;
-import org.apache.http.annotation.Obsolete;
-
/**
* Cookie interface represents a token or short packet of state information
* (also referred to as "magic-cookie") that the HTTP agent and the target
@@ -44,6 +42,22 @@ import org.apache.http.annotation.Obsolete;
*/
public interface Cookie {
+ String PATH_ATTR = "path";
+ String DOMAIN_ATTR = "domain";
+ String MAX_AGE_ATTR = "max-age";
+ String SECURE_ATTR = "secure";
+ String EXPIRES_ATTR = "expires";
+
+ /**
+ * @since 5.0
+ */
+ String getAttribute(String name);
+
+ /**
+ * @since 5.0
+ */
+ boolean containsAttribute(String name);
+
/**
* Returns the name.
*
@@ -58,22 +72,6 @@ public interface Cookie {
*/
String getValue();
- /**
- * Returns the comment describing the purpose of this cookie, or
- * {@code null} if no such comment has been defined.
- *
- * @return comment
- */
- @Obsolete
- String getComment();
-
- /**
- * If a user agent (web browser) presents this cookie to a user, the
- * cookie's purpose will be described by the information at this URL.
- */
- @Obsolete
- String getCommentURL();
-
/**
* Returns the expiration {@link Date} of the cookie, or {@code null}
* if none exists.
@@ -110,13 +108,6 @@ public interface Cookie {
*/
String getPath();
- /**
- * Get the Port attribute. It restricts the ports to which a cookie
- * may be returned in a Cookie request header.
- */
- @Obsolete
- int[] getPorts();
-
/**
* Indicates whether this cookie requires a secure connection.
*
@@ -125,15 +116,6 @@ public interface Cookie {
*/
boolean isSecure();
- /**
- * Returns the version of the cookie specification to which this
- * cookie conforms.
- *
- * @return the version of the cookie.
- */
- @Obsolete
- int getVersion();
-
/**
* Returns true if this cookie has expired.
* @param date Current time
diff --git a/httpclient/src/main/java/org/apache/http/cookie/CookieSpec.java b/httpclient/src/main/java/org/apache/http/cookie/CookieSpec.java
index c3aceffdd..cbe4870f5 100644
--- a/httpclient/src/main/java/org/apache/http/cookie/CookieSpec.java
+++ b/httpclient/src/main/java/org/apache/http/cookie/CookieSpec.java
@@ -30,7 +30,6 @@ package org.apache.http.cookie;
import java.util.List;
import org.apache.http.Header;
-import org.apache.http.annotation.Obsolete;
/**
* Defines the cookie management specification.
@@ -49,15 +48,6 @@ import org.apache.http.annotation.Obsolete;
*/
public interface CookieSpec {
- /**
- * Returns version of the state management this cookie specification
- * conforms to.
- *
- * @return version of the state management specification
- */
- @Obsolete
- int getVersion();
-
/**
* Parse the {@code "Set-Cookie"} Header into an array of Cookies.
*
@@ -103,12 +93,4 @@ public interface CookieSpec {
*/
List formatCookies(List cookies);
- /**
- * Returns a request header identifying what version of the state management
- * specification is understood. May be {@code null} if the cookie
- * specification does not support {@code Cookie2} header.
- */
- @Obsolete
- Header getVersionHeader();
-
}
diff --git a/httpclient/src/main/java/org/apache/http/cookie/SM.java b/httpclient/src/main/java/org/apache/http/cookie/SM.java
index 2f50714a9..d4b302dab 100644
--- a/httpclient/src/main/java/org/apache/http/cookie/SM.java
+++ b/httpclient/src/main/java/org/apache/http/cookie/SM.java
@@ -36,8 +36,6 @@ package org.apache.http.cookie;
public interface SM {
public static final String COOKIE = "Cookie";
- public static final String COOKIE2 = "Cookie2";
public static final String SET_COOKIE = "Set-Cookie";
- public static final String SET_COOKIE2 = "Set-Cookie2";
}
diff --git a/httpclient/src/main/java/org/apache/http/cookie/SetCookie.java b/httpclient/src/main/java/org/apache/http/cookie/SetCookie.java
index 7008bf5e0..b83409e6f 100644
--- a/httpclient/src/main/java/org/apache/http/cookie/SetCookie.java
+++ b/httpclient/src/main/java/org/apache/http/cookie/SetCookie.java
@@ -29,8 +29,6 @@ package org.apache.http.cookie;
import java.util.Date;
-import org.apache.http.annotation.Obsolete;
-
/**
* This interface represents a {@code Set-Cookie} response header sent by the
* origin server to the HTTP agent in order to maintain a conversational state.
@@ -44,17 +42,6 @@ public interface SetCookie extends Cookie {
void setValue(String value);
- /**
- * If a user agent (web browser) presents this cookie to a user, the
- * cookie's purpose will be described using this comment.
- *
- * @param comment
- *
- * @see #getComment()
- */
- @Obsolete
- void setComment(String comment);
-
/**
* Sets expiration date.
* Note: the object returned by this method is considered
@@ -101,16 +88,5 @@ public interface SetCookie extends Cookie {
*/
void setSecure (boolean secure);
- /**
- * Sets the version of the cookie specification to which this
- * cookie conforms.
- *
- * @param version the version of the cookie.
- *
- * @see Cookie#getVersion
- */
- @Obsolete
- void setVersion(int version);
-
}
diff --git a/httpclient/src/main/java/org/apache/http/cookie/SetCookie2.java b/httpclient/src/main/java/org/apache/http/cookie/SetCookie2.java
deleted file mode 100644
index 2f07298d0..000000000
--- a/httpclient/src/main/java/org/apache/http/cookie/SetCookie2.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.cookie;
-
-import org.apache.http.annotation.Obsolete;
-
-/**
- * This interface represents a {@code Set-Cookie2} response header sent by the
- * origin server to the HTTP agent in order to maintain a conversational state.
- *
- * Please do not use methods marked as @Obsolete. They have been rendered
- * obsolete by RFC 6265
- *
- * @since 4.0
- */
-public interface SetCookie2 extends SetCookie {
-
- /**
- * If a user agent (web browser) presents this cookie to a user, the
- * cookie's purpose will be described by the information at this URL.
- */
- @Obsolete
- void setCommentURL(String commentURL);
-
- /**
- * Sets the Port attribute. It restricts the ports to which a cookie
- * may be returned in a Cookie request header.
- */
- @Obsolete
- void setPorts(int[] ports);
-
- /**
- * Set the Discard attribute.
- *
- * Note: {@code Discard} attribute overrides {@code Max-age}.
- *
- * @see #isPersistent()
- */
- @Obsolete
- void setDiscard(boolean discard);
-
-}
-
diff --git a/httpclient/src/main/java/org/apache/http/impl/client/CookieSpecRegistries.java b/httpclient/src/main/java/org/apache/http/impl/client/CookieSpecRegistries.java
index 7ae0af18e..c437eb36c 100644
--- a/httpclient/src/main/java/org/apache/http/impl/client/CookieSpecRegistries.java
+++ b/httpclient/src/main/java/org/apache/http/impl/client/CookieSpecRegistries.java
@@ -33,9 +33,7 @@ import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.util.PublicSuffixMatcher;
import org.apache.http.conn.util.PublicSuffixMatcherLoader;
import org.apache.http.cookie.CookieSpecProvider;
-import org.apache.http.impl.cookie.DefaultCookieSpecProvider;
import org.apache.http.impl.cookie.IgnoreSpecProvider;
-import org.apache.http.impl.cookie.NetscapeDraftSpecProvider;
import org.apache.http.impl.cookie.RFC6265CookieSpecProvider;
/**
@@ -47,18 +45,14 @@ public final class CookieSpecRegistries {
* Creates a builder containing the default registry entries, using the provided public suffix matcher.
*/
public static RegistryBuilder createDefaultBuilder(final PublicSuffixMatcher publicSuffixMatcher) {
- final CookieSpecProvider defaultProvider = new DefaultCookieSpecProvider(publicSuffixMatcher);
final CookieSpecProvider laxStandardProvider = new RFC6265CookieSpecProvider(
RFC6265CookieSpecProvider.CompatibilityLevel.RELAXED, publicSuffixMatcher);
final CookieSpecProvider strictStandardProvider = new RFC6265CookieSpecProvider(
RFC6265CookieSpecProvider.CompatibilityLevel.STRICT, publicSuffixMatcher);
return RegistryBuilder.create()
- .register(CookieSpecs.DEFAULT, defaultProvider)
- .register("best-match", defaultProvider)
- .register("compatibility", defaultProvider)
+ .register(CookieSpecs.DEFAULT, laxStandardProvider)
.register(CookieSpecs.STANDARD, laxStandardProvider)
.register(CookieSpecs.STANDARD_STRICT, strictStandardProvider)
- .register(CookieSpecs.NETSCAPE, new NetscapeDraftSpecProvider())
.register(CookieSpecs.IGNORE_COOKIES, new IgnoreSpecProvider());
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicClientCookie.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicClientCookie.java
index f5ba8d285..e45ed151d 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicClientCookie.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicClientCookie.java
@@ -34,7 +34,7 @@ import java.util.Locale;
import java.util.Map;
import org.apache.http.annotation.NotThreadSafe;
-import org.apache.http.cookie.ClientCookie;
+import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.SetCookie;
import org.apache.http.util.Args;
@@ -44,7 +44,7 @@ import org.apache.http.util.Args;
* @since 4.0
*/
@NotThreadSafe
-public class BasicClientCookie implements SetCookie, ClientCookie, Cloneable, Serializable {
+public class BasicClientCookie implements SetCookie, Cloneable, Serializable, Cookie {
private static final long serialVersionUID = -3869795591041535538L;
@@ -92,42 +92,6 @@ public class BasicClientCookie implements SetCookie, ClientCookie, Cloneable, Se
this.value = value;
}
- /**
- * Returns the comment describing the purpose of this cookie, or
- * {@code null} if no such comment has been defined.
- *
- * @return comment
- *
- * @see #setComment(String)
- */
- @Override
- public String getComment() {
- return cookieComment;
- }
-
- /**
- * If a user agent (web browser) presents this cookie to a user, the
- * cookie's purpose will be described using this comment.
- *
- * @param comment
- *
- * @see #getComment()
- */
- @Override
- public void setComment(final String comment) {
- cookieComment = comment;
- }
-
-
- /**
- * Returns null. Cookies prior to RFC2965 do not set this attribute
- */
- @Override
- public String getCommentURL() {
- return null;
- }
-
-
/**
* Returns the expiration {@link Date} of the cookie, or {@code null}
* if none exists.
@@ -254,43 +218,6 @@ public class BasicClientCookie implements SetCookie, ClientCookie, Cloneable, Se
isSecure = secure;
}
-
- /**
- * Returns null. Cookies prior to RFC2965 do not set this attribute
- */
- @Override
- public int[] getPorts() {
- return null;
- }
-
-
- /**
- * Returns the version of the cookie specification to which this
- * cookie conforms.
- *
- * @return the version of the cookie.
- *
- * @see #setVersion(int)
- *
- */
- @Override
- public int getVersion() {
- return cookieVersion;
- }
-
- /**
- * Sets the version of the cookie specification to which this
- * cookie conforms.
- *
- * @param version the version of the cookie.
- *
- * @see #getVersion
- */
- @Override
- public void setVersion(final int version) {
- cookieVersion = version;
- }
-
/**
* Returns true if this cookie has expired.
* @param date Current time
@@ -349,22 +276,19 @@ public class BasicClientCookie implements SetCookie, ClientCookie, Cloneable, Se
@Override
public String toString() {
final StringBuilder buffer = new StringBuilder();
- buffer.append("[version: ");
- buffer.append(Integer.toString(this.cookieVersion));
- buffer.append("]");
buffer.append("[name: ");
buffer.append(this.name);
- buffer.append("]");
- buffer.append("[value: ");
+ buffer.append("; ");
+ buffer.append("value: ");
buffer.append(this.value);
- buffer.append("]");
- buffer.append("[domain: ");
+ buffer.append("; ");
+ buffer.append("domain: ");
buffer.append(this.cookieDomain);
- buffer.append("]");
- buffer.append("[path: ");
+ buffer.append("; ");
+ buffer.append("path: ");
buffer.append(this.cookiePath);
- buffer.append("]");
- buffer.append("[expiry: ");
+ buffer.append("; ");
+ buffer.append("expiry: ");
buffer.append(this.cookieExpiryDate);
buffer.append("]");
return buffer.toString();
@@ -381,9 +305,6 @@ public class BasicClientCookie implements SetCookie, ClientCookie, Cloneable, Se
/** Cookie value */
private String value;
- /** Comment attribute. */
- private String cookieComment;
-
/** Domain attribute. */
private String cookieDomain;
@@ -396,9 +317,6 @@ public class BasicClientCookie implements SetCookie, ClientCookie, Cloneable, Se
/** My secure flag. */
private boolean isSecure;
- /** The version of the cookie specification I was created from. */
- private int cookieVersion;
-
private Date creationDate;
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicClientCookie2.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicClientCookie2.java
deleted file mode 100644
index e9c50a302..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicClientCookie2.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.Date;
-
-import org.apache.http.annotation.NotThreadSafe;
-import org.apache.http.cookie.SetCookie2;
-
-/**
- * Default implementation of {@link SetCookie2}.
- *
- * @since 4.0
- */
-@NotThreadSafe
-public class BasicClientCookie2 extends BasicClientCookie implements SetCookie2 {
-
- private static final long serialVersionUID = -7744598295706617057L;
-
- private String commentURL;
- private int[] ports;
- private boolean discard;
-
- /**
- * Default Constructor taking a name and a value. The value may be null.
- *
- * @param name The name.
- * @param value The value.
- */
- public BasicClientCookie2(final String name, final String value) {
- super(name, value);
- }
-
- @Override
- public int[] getPorts() {
- return this.ports;
- }
-
- @Override
- public void setPorts(final int[] ports) {
- this.ports = ports;
- }
-
- @Override
- public String getCommentURL() {
- return this.commentURL;
- }
-
- @Override
- public void setCommentURL(final String commentURL) {
- this.commentURL = commentURL;
- }
-
- @Override
- public void setDiscard(final boolean discard) {
- this.discard = discard;
- }
-
- @Override
- public boolean isPersistent() {
- return !this.discard && super.isPersistent();
- }
-
- @Override
- public boolean isExpired(final Date date) {
- return this.discard || super.isExpired(date);
- }
-
- @Override
- public Object clone() throws CloneNotSupportedException {
- final BasicClientCookie2 clone = (BasicClientCookie2) super.clone();
- if (this.ports != null) {
- clone.ports = this.ports.clone();
- }
- return clone;
- }
-
-}
-
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicCommentHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicCommentHandler.java
deleted file mode 100644
index 14c9cfe59..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicCommentHandler.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.util.Args;
-
-/**
- *
- * @since 4.0
- */
-@Immutable
-public class BasicCommentHandler extends AbstractCookieAttributeHandler implements CommonCookieAttributeHandler {
-
- public BasicCommentHandler() {
- super();
- }
-
- @Override
- public void parse(final SetCookie cookie, final String value)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- cookie.setComment(value);
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.COMMENT_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicDomainHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicDomainHandler.java
index 7503971b5..c527cccf8 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicDomainHandler.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicDomainHandler.java
@@ -30,7 +30,6 @@ import java.util.Locale;
import org.apache.http.annotation.Immutable;
import org.apache.http.conn.util.InetAddressUtils;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
@@ -125,17 +124,15 @@ public class BasicDomainHandler implements CommonCookieAttributeHandler {
if (host.equals(domain)) {
return true;
}
- if (cookie instanceof ClientCookie) {
- if (((ClientCookie) cookie).containsAttribute(ClientCookie.DOMAIN_ATTR)) {
- return domainMatch(domain, host);
- }
+ if ((cookie.containsAttribute(Cookie.DOMAIN_ATTR))) {
+ return domainMatch(domain, host);
}
return false;
}
@Override
public String getAttributeName() {
- return ClientCookie.DOMAIN_ATTR;
+ return Cookie.DOMAIN_ATTR;
}
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java
index 21a28766e..a3efaf6ab 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java
@@ -30,8 +30,8 @@ import java.util.Date;
import org.apache.http.annotation.Immutable;
import org.apache.http.client.utils.DateUtils;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
+import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.MalformedCookieException;
import org.apache.http.cookie.SetCookie;
import org.apache.http.util.Args;
@@ -68,7 +68,7 @@ public class BasicExpiresHandler extends AbstractCookieAttributeHandler implemen
@Override
public String getAttributeName() {
- return ClientCookie.EXPIRES_ATTR;
+ return Cookie.EXPIRES_ATTR;
}
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicMaxAgeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicMaxAgeHandler.java
index 02ee8babb..90f9f7807 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicMaxAgeHandler.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicMaxAgeHandler.java
@@ -29,8 +29,8 @@ package org.apache.http.impl.cookie;
import java.util.Date;
import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
+import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.MalformedCookieException;
import org.apache.http.cookie.SetCookie;
import org.apache.http.util.Args;
@@ -69,7 +69,7 @@ public class BasicMaxAgeHandler extends AbstractCookieAttributeHandler implement
@Override
public String getAttributeName() {
- return ClientCookie.MAX_AGE_ATTR;
+ return Cookie.MAX_AGE_ATTR;
}
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicPathHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicPathHandler.java
index c7b387567..da695660b 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicPathHandler.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicPathHandler.java
@@ -27,7 +27,6 @@
package org.apache.http.impl.cookie;
import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
@@ -96,7 +95,7 @@ public class BasicPathHandler implements CommonCookieAttributeHandler {
@Override
public String getAttributeName() {
- return ClientCookie.PATH_ATTR;
+ return Cookie.PATH_ATTR;
}
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicSecureHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicSecureHandler.java
index 5b8f55cc8..3e9526a38 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/BasicSecureHandler.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/BasicSecureHandler.java
@@ -27,7 +27,6 @@
package org.apache.http.impl.cookie;
import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
@@ -62,7 +61,7 @@ public class BasicSecureHandler extends AbstractCookieAttributeHandler implement
@Override
public String getAttributeName() {
- return ClientCookie.SECURE_ATTR;
+ return Cookie.SECURE_ATTR;
}
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/DefaultCookieSpec.java b/httpclient/src/main/java/org/apache/http/impl/cookie/DefaultCookieSpec.java
deleted file mode 100644
index bd571ced4..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/DefaultCookieSpec.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.List;
-
-import org.apache.http.FormattedHeader;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.annotation.ThreadSafe;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.cookie.SetCookie2;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.Args;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * Default cookie specification that picks up the best matching cookie policy based on
- * the format of cookies sent with the HTTP response.
- *
- * @since 4.4
- */
-@ThreadSafe
-public class DefaultCookieSpec implements CookieSpec {
-
- private final RFC2965Spec strict;
- private final RFC2109Spec obsoleteStrict;
- private final NetscapeDraftSpec netscapeDraft;
-
- DefaultCookieSpec(
- final RFC2965Spec strict,
- final RFC2109Spec obsoleteStrict,
- final NetscapeDraftSpec netscapeDraft) {
- this.strict = strict;
- this.obsoleteStrict = obsoleteStrict;
- this.netscapeDraft = netscapeDraft;
- }
-
- public DefaultCookieSpec(
- final String[] datepatterns,
- final boolean oneHeader) {
- this.strict = new RFC2965Spec(oneHeader,
- new RFC2965VersionAttributeHandler(),
- new BasicPathHandler(),
- new RFC2965DomainAttributeHandler(),
- new RFC2965PortAttributeHandler(),
- new BasicMaxAgeHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler(),
- new RFC2965CommentUrlAttributeHandler(),
- new RFC2965DiscardAttributeHandler());
- this.obsoleteStrict = new RFC2109Spec(oneHeader,
- new RFC2109VersionHandler(),
- new BasicPathHandler(),
- new RFC2109DomainHandler(),
- new BasicMaxAgeHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler());
- this.netscapeDraft = new NetscapeDraftSpec(
- new BasicDomainHandler(),
- new BasicPathHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler(),
- new BasicExpiresHandler(
- datepatterns != null ? datepatterns.clone() : new String[]{NetscapeDraftSpec.EXPIRES_PATTERN}));
- }
-
- public DefaultCookieSpec() {
- this(null, false);
- }
-
- @Override
- public List parse(
- final Header header,
- final CookieOrigin origin) throws MalformedCookieException {
- Args.notNull(header, "Header");
- Args.notNull(origin, "Cookie origin");
- HeaderElement[] helems = header.getElements();
- boolean versioned = false;
- boolean netscape = false;
- for (final HeaderElement helem: helems) {
- if (helem.getParameterByName("version") != null) {
- versioned = true;
- }
- if (helem.getParameterByName("expires") != null) {
- netscape = true;
- }
- }
- if (netscape || !versioned) {
- // Need to parse the header again, because Netscape style cookies do not correctly
- // support multiple header elements (comma cannot be treated as an element separator)
- final NetscapeDraftHeaderParser parser = NetscapeDraftHeaderParser.DEFAULT;
- final CharArrayBuffer buffer;
- final ParserCursor cursor;
- if (header instanceof FormattedHeader) {
- buffer = ((FormattedHeader) header).getBuffer();
- cursor = new ParserCursor(
- ((FormattedHeader) header).getValuePos(),
- buffer.length());
- } else {
- final String s = header.getValue();
- if (s == null) {
- throw new MalformedCookieException("Header value is null");
- }
- buffer = new CharArrayBuffer(s.length());
- buffer.append(s);
- cursor = new ParserCursor(0, buffer.length());
- }
- helems = new HeaderElement[] { parser.parseHeader(buffer, cursor) };
- return netscapeDraft.parse(helems, origin);
- } else {
- if (SM.SET_COOKIE2.equals(header.getName())) {
- return strict.parse(helems, origin);
- } else {
- return obsoleteStrict.parse(helems, origin);
- }
- }
- }
-
- @Override
- public void validate(
- final Cookie cookie,
- final CookieOrigin origin) throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- if (cookie.getVersion() > 0) {
- if (cookie instanceof SetCookie2) {
- strict.validate(cookie, origin);
- } else {
- obsoleteStrict.validate(cookie, origin);
- }
- } else {
- netscapeDraft.validate(cookie, origin);
- }
- }
-
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- if (cookie.getVersion() > 0) {
- if (cookie instanceof SetCookie2) {
- return strict.match(cookie, origin);
- } else {
- return obsoleteStrict.match(cookie, origin);
- }
- } else {
- return netscapeDraft.match(cookie, origin);
- }
- }
-
- @Override
- public List formatCookies(final List cookies) {
- Args.notNull(cookies, "List of cookies");
- int version = Integer.MAX_VALUE;
- boolean isSetCookie2 = true;
- for (final Cookie cookie: cookies) {
- if (!(cookie instanceof SetCookie2)) {
- isSetCookie2 = false;
- }
- if (cookie.getVersion() < version) {
- version = cookie.getVersion();
- }
- }
- if (version > 0) {
- if (isSetCookie2) {
- return strict.formatCookies(cookies);
- } else {
- return obsoleteStrict.formatCookies(cookies);
- }
- } else {
- return netscapeDraft.formatCookies(cookies);
- }
- }
-
- @Override
- public int getVersion() {
- return strict.getVersion();
- }
-
- @Override
- public Header getVersionHeader() {
- return null;
- }
-
- @Override
- public String toString() {
- return "default";
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/DefaultCookieSpecProvider.java b/httpclient/src/main/java/org/apache/http/impl/cookie/DefaultCookieSpecProvider.java
deleted file mode 100644
index 1fe8f0345..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/DefaultCookieSpecProvider.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.conn.util.PublicSuffixMatcher;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecProvider;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * {@link org.apache.http.cookie.CookieSpecProvider} implementation that provides an instance of
- * {@link org.apache.http.impl.cookie.DefaultCookieSpec}. The instance returned by this factory can
- * be shared by multiple threads.
- *
- * @since 4.4
- */
-@Immutable
-public class DefaultCookieSpecProvider implements CookieSpecProvider {
-
- public enum CompatibilityLevel {
- DEFAULT,
- IE_MEDIUM_SECURITY
- }
-
- private final CompatibilityLevel compatibilityLevel;
- private final PublicSuffixMatcher publicSuffixMatcher;
- private final String[] datepatterns;
- private final boolean oneHeader;
-
- private volatile CookieSpec cookieSpec;
-
- public DefaultCookieSpecProvider(
- final CompatibilityLevel compatibilityLevel,
- final PublicSuffixMatcher publicSuffixMatcher,
- final String[] datepatterns,
- final boolean oneHeader) {
- super();
- this.compatibilityLevel = compatibilityLevel != null ? compatibilityLevel : CompatibilityLevel.DEFAULT;
- this.publicSuffixMatcher = publicSuffixMatcher;
- this.datepatterns = datepatterns;
- this.oneHeader = oneHeader;
- }
-
- public DefaultCookieSpecProvider(
- final CompatibilityLevel compatibilityLevel,
- final PublicSuffixMatcher publicSuffixMatcher) {
- this(compatibilityLevel, publicSuffixMatcher, null, false);
- }
-
- public DefaultCookieSpecProvider(final PublicSuffixMatcher publicSuffixMatcher) {
- this(CompatibilityLevel.DEFAULT, publicSuffixMatcher, null, false);
- }
-
- public DefaultCookieSpecProvider() {
- this(CompatibilityLevel.DEFAULT, null, null, false);
- }
-
- @Override
- public CookieSpec create(final HttpContext context) {
- if (cookieSpec == null) {
- synchronized (this) {
- if (cookieSpec == null) {
- final RFC2965Spec strict = new RFC2965Spec(this.oneHeader,
- new RFC2965VersionAttributeHandler(),
- new BasicPathHandler(),
- PublicSuffixDomainFilter.decorate(
- new RFC2965DomainAttributeHandler(), this.publicSuffixMatcher),
- new RFC2965PortAttributeHandler(),
- new BasicMaxAgeHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler(),
- new RFC2965CommentUrlAttributeHandler(),
- new RFC2965DiscardAttributeHandler());
- final RFC2109Spec obsoleteStrict = new RFC2109Spec(this.oneHeader,
- new RFC2109VersionHandler(),
- new BasicPathHandler(),
- PublicSuffixDomainFilter.decorate(
- new RFC2109DomainHandler(), this.publicSuffixMatcher),
- new BasicMaxAgeHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler());
- final NetscapeDraftSpec netscapeDraft = new NetscapeDraftSpec(
- PublicSuffixDomainFilter.decorate(
- new BasicDomainHandler(), this.publicSuffixMatcher),
- this.compatibilityLevel == CompatibilityLevel.IE_MEDIUM_SECURITY ?
- new BasicPathHandler() {
- @Override
- public void validate(
- final Cookie cookie,
- final CookieOrigin origin) throws MalformedCookieException {
- // No validation
- }
- } : new BasicPathHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler(),
- new BasicExpiresHandler(this.datepatterns != null ? this.datepatterns.clone() :
- new String[]{NetscapeDraftSpec.EXPIRES_PATTERN}));
- this.cookieSpec = new DefaultCookieSpec(strict, obsoleteStrict, netscapeDraft);
- }
- }
- }
- return this.cookieSpec;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/IgnoreSpec.java b/httpclient/src/main/java/org/apache/http/impl/cookie/IgnoreSpec.java
index a6cd4f2e5..965f44558 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/IgnoreSpec.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/IgnoreSpec.java
@@ -44,11 +44,6 @@ import org.apache.http.cookie.MalformedCookieException;
@ThreadSafe
public class IgnoreSpec extends CookieSpecBase {
- @Override
- public int getVersion() {
- return 0;
- }
-
@Override
public List parse(final Header header, final CookieOrigin origin)
throws MalformedCookieException {
@@ -60,8 +55,4 @@ public class IgnoreSpec extends CookieSpecBase {
return Collections.emptyList();
}
- @Override
- public Header getVersionHeader() {
- return null;
- }
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/LaxExpiresHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/LaxExpiresHandler.java
index 2b112e03c..2a265ef0f 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/LaxExpiresHandler.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/LaxExpiresHandler.java
@@ -36,8 +36,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
+import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.MalformedCookieException;
import org.apache.http.cookie.SetCookie;
import org.apache.http.message.ParserCursor;
@@ -214,7 +214,7 @@ public class LaxExpiresHandler extends AbstractCookieAttributeHandler implements
@Override
public String getAttributeName() {
- return ClientCookie.EXPIRES_ATTR;
+ return Cookie.EXPIRES_ATTR;
}
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/LaxMaxAgeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/LaxMaxAgeHandler.java
index 8615286e8..a920c24b5 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/LaxMaxAgeHandler.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/LaxMaxAgeHandler.java
@@ -31,8 +31,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
+import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.MalformedCookieException;
import org.apache.http.cookie.SetCookie;
import org.apache.http.util.Args;
@@ -73,7 +73,7 @@ public class LaxMaxAgeHandler extends AbstractCookieAttributeHandler implements
@Override
public String getAttributeName() {
- return ClientCookie.MAX_AGE_ATTR;
+ return Cookie.MAX_AGE_ATTR;
}
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDomainHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDomainHandler.java
deleted file mode 100644
index 1f92cc08d..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDomainHandler.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-package org.apache.http.impl.cookie;
-
-import java.util.Locale;
-import java.util.StringTokenizer;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieRestrictionViolationException;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.util.Args;
-import org.apache.http.util.TextUtils;
-
-/**
- *
- * @since 4.0
- */
-@Immutable
-public class NetscapeDomainHandler extends BasicDomainHandler {
-
- public NetscapeDomainHandler() {
- super();
- }
-
- @Override
- public void parse(final SetCookie cookie, final String value) throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- if (TextUtils.isBlank(value)) {
- throw new MalformedCookieException("Blank or null value for domain attribute");
- }
- cookie.setDomain(value);
- }
-
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- final String host = origin.getHost();
- final String domain = cookie.getDomain();
- if (!host.equals(domain) && !BasicDomainHandler.domainMatch(domain, host)) {
- throw new CookieRestrictionViolationException(
- "Illegal domain attribute \"" + domain + "\". Domain of origin: \"" + host + "\"");
- }
- if (host.contains(".")) {
- final int domainParts = new StringTokenizer(domain, ".").countTokens();
-
- if (isSpecialDomain(domain)) {
- if (domainParts < 2) {
- throw new CookieRestrictionViolationException("Domain attribute \""
- + domain
- + "\" violates the Netscape cookie specification for "
- + "special domains");
- }
- } else {
- if (domainParts < 3) {
- throw new CookieRestrictionViolationException("Domain attribute \""
- + domain
- + "\" violates the Netscape cookie specification");
- }
- }
- }
- }
-
- /**
- * Checks if the given domain is in one of the seven special
- * top level domains defined by the Netscape cookie specification.
- * @param domain The domain.
- * @return True if the specified domain is "special"
- */
- private static boolean isSpecialDomain(final String domain) {
- final String ucDomain = domain.toUpperCase(Locale.ROOT);
- return ucDomain.endsWith(".COM")
- || ucDomain.endsWith(".EDU")
- || ucDomain.endsWith(".NET")
- || ucDomain.endsWith(".GOV")
- || ucDomain.endsWith(".MIL")
- || ucDomain.endsWith(".ORG")
- || ucDomain.endsWith(".INT");
- }
-
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- final String host = origin.getHost();
- final String domain = cookie.getDomain();
- if (domain == null) {
- return false;
- }
- return host.endsWith(domain);
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.DOMAIN_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.java b/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.java
deleted file mode 100644
index 06a8589f0..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftHeaderParser.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.List;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.ParseException;
-import org.apache.http.annotation.Immutable;
-import org.apache.http.message.BasicHeaderElement;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.message.TokenParser;
-import org.apache.http.util.Args;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- *
- * @since 4.0
- */
-@Immutable
-public class NetscapeDraftHeaderParser {
-
- public final static NetscapeDraftHeaderParser DEFAULT = new NetscapeDraftHeaderParser();
-
- private final static char PARAM_DELIMITER = ';';
-
- // IMPORTANT!
- // These private static variables must be treated as immutable and never exposed outside this class
- private static final BitSet TOKEN_DELIMS = TokenParser.INIT_BITSET('=', PARAM_DELIMITER);
- private static final BitSet VALUE_DELIMS = TokenParser.INIT_BITSET(PARAM_DELIMITER);
-
- private final TokenParser tokenParser;
-
- public NetscapeDraftHeaderParser() {
- super();
- this.tokenParser = TokenParser.INSTANCE;
- }
-
- public HeaderElement parseHeader(
- final CharArrayBuffer buffer,
- final ParserCursor cursor) throws ParseException {
- Args.notNull(buffer, "Char array buffer");
- Args.notNull(cursor, "Parser cursor");
- final NameValuePair nvp = parseNameValuePair(buffer, cursor);
- final List params = new ArrayList<>();
- while (!cursor.atEnd()) {
- final NameValuePair param = parseNameValuePair(buffer, cursor);
- params.add(param);
- }
- return new BasicHeaderElement(
- nvp.getName(),
- nvp.getValue(), params.toArray(new NameValuePair[params.size()]));
- }
-
- private NameValuePair parseNameValuePair(
- final CharArrayBuffer buffer, final ParserCursor cursor) {
- final String name = tokenParser.parseToken(buffer, cursor, TOKEN_DELIMS);
- if (cursor.atEnd()) {
- return new BasicNameValuePair(name, null);
- }
- final int delim = buffer.charAt(cursor.getPos());
- cursor.updatePos(cursor.getPos() + 1);
- if (delim != '=') {
- return new BasicNameValuePair(name, null);
- }
- final String value = tokenParser.parseToken(buffer, cursor, VALUE_DELIMS);
- if (!cursor.atEnd()) {
- cursor.updatePos(cursor.getPos() + 1);
- }
- return new BasicNameValuePair(name, value);
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java b/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java
deleted file mode 100644
index 1364f12e4..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.http.FormattedHeader;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.annotation.Obsolete;
-import org.apache.http.annotation.ThreadSafe;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.Args;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * This {@link org.apache.http.cookie.CookieSpec} implementation conforms to
- * the original draft specification published by Netscape Communications.
- * It should be avoided unless absolutely necessary for compatibility with
- * legacy applications.
- *
- * Rendered obsolete by {@link org.apache.http.impl.cookie.RFC6265LaxSpec}.
- *
- * @since 4.0
- * @see org.apache.http.impl.cookie.RFC6265LaxSpec
- */
-@Obsolete
-@ThreadSafe
-public class NetscapeDraftSpec extends CookieSpecBase {
-
- protected static final String EXPIRES_PATTERN = "EEE, dd-MMM-yy HH:mm:ss z";
-
- /** Default constructor */
- public NetscapeDraftSpec(final String[] datepatterns) {
- super(new BasicPathHandler(),
- new NetscapeDomainHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler(),
- new BasicExpiresHandler(
- datepatterns != null ? datepatterns.clone() : new String[]{EXPIRES_PATTERN}));
- }
-
- NetscapeDraftSpec(final CommonCookieAttributeHandler... handlers) {
- super(handlers);
- }
-
- public NetscapeDraftSpec() {
- this((String[]) null);
- }
-
- /**
- * Parses the Set-Cookie value into an array of {@code Cookie}s.
- *
- *
Syntax of the Set-Cookie HTTP Response Header:
- *
- * This is the format a CGI script would use to add to
- * the HTTP headers a new piece of data which is to be stored by
- * the client for later retrieval.
- *
- *
- * Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
- *
- *
- * Please note that the Netscape draft specification does not fully conform to the HTTP
- * header format. Comma character if present in {@code Set-Cookie} will not be treated
- * as a header element separator
- *
- * @see
- * The Cookie Spec.
- *
- * @param header the {@code Set-Cookie} received from the server
- * @return an array of {@code Cookie}s parsed from the Set-Cookie value
- * @throws MalformedCookieException if an exception occurs during parsing
- */
- @Override
- public List parse(final Header header, final CookieOrigin origin)
- throws MalformedCookieException {
- Args.notNull(header, "Header");
- Args.notNull(origin, "Cookie origin");
- if (!header.getName().equalsIgnoreCase(SM.SET_COOKIE)) {
- throw new MalformedCookieException("Unrecognized cookie header '"
- + header.toString() + "'");
- }
- final NetscapeDraftHeaderParser parser = NetscapeDraftHeaderParser.DEFAULT;
- final CharArrayBuffer buffer;
- final ParserCursor cursor;
- if (header instanceof FormattedHeader) {
- buffer = ((FormattedHeader) header).getBuffer();
- cursor = new ParserCursor(
- ((FormattedHeader) header).getValuePos(),
- buffer.length());
- } else {
- final String s = header.getValue();
- if (s == null) {
- throw new MalformedCookieException("Header value is null");
- }
- buffer = new CharArrayBuffer(s.length());
- buffer.append(s);
- cursor = new ParserCursor(0, buffer.length());
- }
- return parse(new HeaderElement[] { parser.parseHeader(buffer, cursor) }, origin);
- }
-
- @Override
- public List formatCookies(final List cookies) {
- Args.notEmpty(cookies, "List of cookies");
- final CharArrayBuffer buffer = new CharArrayBuffer(20 * cookies.size());
- buffer.append(SM.COOKIE);
- buffer.append(": ");
- for (int i = 0; i < cookies.size(); i++) {
- final Cookie cookie = cookies.get(i);
- if (i > 0) {
- buffer.append("; ");
- }
- buffer.append(cookie.getName());
- final String s = cookie.getValue();
- if (s != null) {
- buffer.append("=");
- buffer.append(s);
- }
- }
- final List headers = new ArrayList<>(1);
- headers.add(new BufferedHeader(buffer));
- return headers;
- }
-
- @Override
- public int getVersion() {
- return 0;
- }
-
- @Override
- public Header getVersionHeader() {
- return null;
- }
-
- @Override
- public String toString() {
- return "netscape";
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpecProvider.java b/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpecProvider.java
deleted file mode 100644
index f4832f771..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpecProvider.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.annotation.Obsolete;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecProvider;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * {@link org.apache.http.cookie.CookieSpecProvider} implementation that provides an instance of
- * {@link NetscapeDraftSpec}. The instance returned by this factory
- * can be shared by multiple threads.
- *
- * Rendered obsolete by {@link org.apache.http.impl.cookie.RFC6265CookieSpecProvider}
- *
- * @since 4.4
- * @see org.apache.http.impl.cookie.RFC6265CookieSpecProvider
- */
-@Obsolete
-@Immutable
-public class NetscapeDraftSpecProvider implements CookieSpecProvider {
-
- private final String[] datepatterns;
-
- private volatile CookieSpec cookieSpec;
-
- public NetscapeDraftSpecProvider(final String[] datepatterns) {
- super();
- this.datepatterns = datepatterns;
- }
-
- public NetscapeDraftSpecProvider() {
- this(null);
- }
-
- @Override
- public CookieSpec create(final HttpContext context) {
- if (cookieSpec == null) {
- synchronized (this) {
- if (cookieSpec == null) {
- this.cookieSpec = new NetscapeDraftSpec(this.datepatterns);
- }
- }
- }
- return this.cookieSpec;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109DomainHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109DomainHandler.java
deleted file mode 100644
index fdbeb1532..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109DomainHandler.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-package org.apache.http.impl.cookie;
-
-import java.util.Locale;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieRestrictionViolationException;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.util.Args;
-
-/**
- *
- * @since 4.0
- */
-@Immutable
-public class RFC2109DomainHandler implements CommonCookieAttributeHandler {
-
- public RFC2109DomainHandler() {
- super();
- }
-
- @Override
- public void parse(final SetCookie cookie, final String value)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- if (value == null) {
- throw new MalformedCookieException("Missing value for domain attribute");
- }
- if (value.trim().isEmpty()) {
- throw new MalformedCookieException("Blank value for domain attribute");
- }
- cookie.setDomain(value);
- }
-
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- String host = origin.getHost();
- final String domain = cookie.getDomain();
- if (domain == null) {
- throw new CookieRestrictionViolationException("Cookie domain may not be null");
- }
- if (!domain.equals(host)) {
- int dotIndex = domain.indexOf('.');
- if (dotIndex == -1) {
- throw new CookieRestrictionViolationException("Domain attribute \""
- + domain
- + "\" does not match the host \""
- + host + "\"");
- }
- // domain must start with dot
- if (!domain.startsWith(".")) {
- throw new CookieRestrictionViolationException("Domain attribute \""
- + domain
- + "\" violates RFC 2109: domain must start with a dot");
- }
- // domain must have at least one embedded dot
- dotIndex = domain.indexOf('.', 1);
- if (dotIndex < 0 || dotIndex == domain.length() - 1) {
- throw new CookieRestrictionViolationException("Domain attribute \""
- + domain
- + "\" violates RFC 2109: domain must contain an embedded dot");
- }
- host = host.toLowerCase(Locale.ROOT);
- if (!host.endsWith(domain)) {
- throw new CookieRestrictionViolationException(
- "Illegal domain attribute \"" + domain
- + "\". Domain of origin: \"" + host + "\"");
- }
- // host minus domain may not contain any dots
- final String hostWithoutDomain = host.substring(0, host.length() - domain.length());
- if (hostWithoutDomain.indexOf('.') != -1) {
- throw new CookieRestrictionViolationException("Domain attribute \""
- + domain
- + "\" violates RFC 2109: host minus domain may not contain any dots");
- }
- }
- }
-
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- final String host = origin.getHost();
- final String domain = cookie.getDomain();
- if (domain == null) {
- return false;
- }
- return host.equals(domain) || (domain.startsWith(".") && host.endsWith(domain));
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.DOMAIN_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109Spec.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109Spec.java
deleted file mode 100644
index 4329550ff..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109Spec.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.annotation.Obsolete;
-import org.apache.http.annotation.ThreadSafe;
-import org.apache.http.client.utils.DateUtils;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookiePathComparator;
-import org.apache.http.cookie.CookieRestrictionViolationException;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.util.Args;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * RFC 2109 compliant {@link org.apache.http.cookie.CookieSpec} implementation.
- *
- * Rendered obsolete by {@link org.apache.http.impl.cookie.RFC6265StrictSpec}.
- *
- * @since 4.0
- * @see org.apache.http.impl.cookie.RFC6265StrictSpec
- */
-@Obsolete
-@ThreadSafe
-public class RFC2109Spec extends CookieSpecBase {
-
- final static String[] DATE_PATTERNS = {
- DateUtils.PATTERN_RFC1123,
- DateUtils.PATTERN_RFC1036,
- DateUtils.PATTERN_ASCTIME
- };
-
- private final boolean oneHeader;
-
- /** Default constructor */
- public RFC2109Spec(final String[] datepatterns, final boolean oneHeader) {
- super(new RFC2109VersionHandler(),
- new BasicPathHandler(),
- new RFC2109DomainHandler(),
- new BasicMaxAgeHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler(),
- new BasicExpiresHandler(
- datepatterns != null ? datepatterns.clone() : DATE_PATTERNS));
- this.oneHeader = oneHeader;
- }
-
- /** Default constructor */
- public RFC2109Spec() {
- this(null, false);
- }
-
- protected RFC2109Spec(final boolean oneHeader,
- final CommonCookieAttributeHandler... handlers) {
- super(handlers);
- this.oneHeader = oneHeader;
- }
-
- @Override
- public List parse(final Header header, final CookieOrigin origin)
- throws MalformedCookieException {
- Args.notNull(header, "Header");
- Args.notNull(origin, "Cookie origin");
- if (!header.getName().equalsIgnoreCase(SM.SET_COOKIE)) {
- throw new MalformedCookieException("Unrecognized cookie header '"
- + header.toString() + "'");
- }
- final HeaderElement[] elems = header.getElements();
- return parse(elems, origin);
- }
-
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- final String name = cookie.getName();
- if (name.indexOf(' ') != -1) {
- throw new CookieRestrictionViolationException("Cookie name may not contain blanks");
- }
- if (name.startsWith("$")) {
- throw new CookieRestrictionViolationException("Cookie name may not start with $");
- }
- super.validate(cookie, origin);
- }
-
- @Override
- public List formatCookies(final List cookies) {
- Args.notEmpty(cookies, "List of cookies");
- List cookieList;
- if (cookies.size() > 1) {
- // Create a mutable copy and sort the copy.
- cookieList = new ArrayList<>(cookies);
- Collections.sort(cookieList, CookiePathComparator.INSTANCE);
- } else {
- cookieList = cookies;
- }
- if (this.oneHeader) {
- return doFormatOneHeader(cookieList);
- } else {
- return doFormatManyHeaders(cookieList);
- }
- }
-
- private List doFormatOneHeader(final List cookies) {
- int version = Integer.MAX_VALUE;
- // Pick the lowest common denominator
- for (final Cookie cookie : cookies) {
- if (cookie.getVersion() < version) {
- version = cookie.getVersion();
- }
- }
- final CharArrayBuffer buffer = new CharArrayBuffer(40 * cookies.size());
- buffer.append(SM.COOKIE);
- buffer.append(": ");
- buffer.append("$Version=");
- buffer.append(Integer.toString(version));
- for (final Cookie cooky : cookies) {
- buffer.append("; ");
- final Cookie cookie = cooky;
- formatCookieAsVer(buffer, cookie, version);
- }
- final List headers = new ArrayList<>(1);
- headers.add(new BufferedHeader(buffer));
- return headers;
- }
-
- private List doFormatManyHeaders(final List cookies) {
- final List headers = new ArrayList<>(cookies.size());
- for (final Cookie cookie : cookies) {
- final int version = cookie.getVersion();
- final CharArrayBuffer buffer = new CharArrayBuffer(40);
- buffer.append("Cookie: ");
- buffer.append("$Version=");
- buffer.append(Integer.toString(version));
- buffer.append("; ");
- formatCookieAsVer(buffer, cookie, version);
- headers.add(new BufferedHeader(buffer));
- }
- return headers;
- }
-
- /**
- * Return a name/value string suitable for sending in a {@code "Cookie"}
- * header as defined in RFC 2109 for backward compatibility with cookie
- * version 0
- * @param buffer The char array buffer to use for output
- * @param name The cookie name
- * @param value The cookie value
- * @param version The cookie version
- */
- protected void formatParamAsVer(final CharArrayBuffer buffer,
- final String name, final String value, final int version) {
- buffer.append(name);
- buffer.append("=");
- if (value != null) {
- if (version > 0) {
- buffer.append('\"');
- buffer.append(value);
- buffer.append('\"');
- } else {
- buffer.append(value);
- }
- }
- }
-
- /**
- * Return a string suitable for sending in a {@code "Cookie"} header
- * as defined in RFC 2109 for backward compatibility with cookie version 0
- * @param buffer The char array buffer to use for output
- * @param cookie The {@link Cookie} to be formatted as string
- * @param version The version to use.
- */
- protected void formatCookieAsVer(final CharArrayBuffer buffer,
- final Cookie cookie, final int version) {
- formatParamAsVer(buffer, cookie.getName(), cookie.getValue(), version);
- if (cookie.getPath() != null) {
- if (cookie instanceof ClientCookie
- && ((ClientCookie) cookie).containsAttribute(ClientCookie.PATH_ATTR)) {
- buffer.append("; ");
- formatParamAsVer(buffer, "$Path", cookie.getPath(), version);
- }
- }
- if (cookie.getDomain() != null) {
- if (cookie instanceof ClientCookie
- && ((ClientCookie) cookie).containsAttribute(ClientCookie.DOMAIN_ATTR)) {
- buffer.append("; ");
- formatParamAsVer(buffer, "$Domain", cookie.getDomain(), version);
- }
- }
- }
-
- @Override
- public int getVersion() {
- return 1;
- }
-
- @Override
- public Header getVersionHeader() {
- return null;
- }
-
- @Override
- public String toString() {
- return "rfc2109";
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109SpecProvider.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109SpecProvider.java
deleted file mode 100644
index c7f972482..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109SpecProvider.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.annotation.Obsolete;
-import org.apache.http.conn.util.PublicSuffixMatcher;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecProvider;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * {@link org.apache.http.cookie.CookieSpecProvider} implementation that provides an instance of
- * {@link RFC2109Spec}. The instance returned by this factory
- * can be shared by multiple threads.
- *
- * Rendered obsolete by {@link org.apache.http.impl.cookie.RFC6265CookieSpecProvider}
- *
- * @since 4.4
- * @see org.apache.http.impl.cookie.RFC6265CookieSpecProvider
- */
-@Obsolete
-@Immutable
-public class RFC2109SpecProvider implements CookieSpecProvider {
-
- private final PublicSuffixMatcher publicSuffixMatcher;
- private final boolean oneHeader;
-
- private volatile CookieSpec cookieSpec;
-
- public RFC2109SpecProvider(final PublicSuffixMatcher publicSuffixMatcher, final boolean oneHeader) {
- super();
- this.oneHeader = oneHeader;
- this.publicSuffixMatcher = publicSuffixMatcher;
- }
-
- public RFC2109SpecProvider(final PublicSuffixMatcher publicSuffixMatcher) {
- this(publicSuffixMatcher, false);
- }
-
- public RFC2109SpecProvider() {
- this(null, false);
- }
-
- @Override
- public CookieSpec create(final HttpContext context) {
- if (cookieSpec == null) {
- synchronized (this) {
- if (cookieSpec == null) {
- this.cookieSpec = new RFC2109Spec(this.oneHeader,
- new RFC2109VersionHandler(),
- new BasicPathHandler(),
- PublicSuffixDomainFilter.decorate(
- new RFC2109DomainHandler(), this.publicSuffixMatcher),
- new BasicMaxAgeHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler());
- }
- }
- }
- return this.cookieSpec;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109VersionHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109VersionHandler.java
deleted file mode 100644
index a342e851a..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109VersionHandler.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieRestrictionViolationException;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.util.Args;
-
-/**
- *
- * @since 4.0
- */
-@Immutable
-public class RFC2109VersionHandler extends AbstractCookieAttributeHandler implements CommonCookieAttributeHandler {
-
- public RFC2109VersionHandler() {
- super();
- }
-
- @Override
- public void parse(final SetCookie cookie, final String value)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- if (value == null) {
- throw new MalformedCookieException("Missing value for version attribute");
- }
- if (value.trim().isEmpty()) {
- throw new MalformedCookieException("Blank value for version attribute");
- }
- try {
- cookie.setVersion(Integer.parseInt(value));
- } catch (final NumberFormatException e) {
- throw new MalformedCookieException("Invalid version: "
- + e.getMessage());
- }
- }
-
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- if (cookie.getVersion() < 0) {
- throw new CookieRestrictionViolationException("Cookie version may not be negative");
- }
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.VERSION_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java
deleted file mode 100644
index dd739bce5..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.cookie.SetCookie2;
-
-/**
- * {@code "CommentURL"} cookie attribute handler for RFC 2965 cookie spec.
- *
- * @since 4.0
- */
-@Immutable
-public class RFC2965CommentUrlAttributeHandler implements CommonCookieAttributeHandler {
-
- public RFC2965CommentUrlAttributeHandler() {
- super();
- }
-
- @Override
- public void parse(final SetCookie cookie, final String commenturl)
- throws MalformedCookieException {
- if (cookie instanceof SetCookie2) {
- final SetCookie2 cookie2 = (SetCookie2) cookie;
- cookie2.setCommentURL(commenturl);
- }
- }
-
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- }
-
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- return true;
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.COMMENTURL_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java
deleted file mode 100644
index 62d1f453e..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.cookie.SetCookie2;
-
-/**
- * {@code "Discard"} cookie attribute handler for RFC 2965 cookie spec.
- *
- * @since 4.0
- */
-@Immutable
-public class RFC2965DiscardAttributeHandler implements CommonCookieAttributeHandler {
-
- public RFC2965DiscardAttributeHandler() {
- super();
- }
-
- @Override
- public void parse(final SetCookie cookie, final String commenturl)
- throws MalformedCookieException {
- if (cookie instanceof SetCookie2) {
- final SetCookie2 cookie2 = (SetCookie2) cookie;
- cookie2.setDiscard(true);
- }
- }
-
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- }
-
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- return true;
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.DISCARD_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java
deleted file mode 100644
index 42e790e56..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.Locale;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieRestrictionViolationException;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.util.Args;
-
-/**
- * {@code "Domain"} cookie attribute handler for RFC 2965 cookie spec.
- *
- *
- * @since 3.1
- */
-@Immutable
-public class RFC2965DomainAttributeHandler implements CommonCookieAttributeHandler {
-
- public RFC2965DomainAttributeHandler() {
- super();
- }
-
- /**
- * Parse cookie domain attribute.
- */
- @Override
- public void parse(
- final SetCookie cookie, final String domain) throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- if (domain == null) {
- throw new MalformedCookieException(
- "Missing value for domain attribute");
- }
- if (domain.trim().isEmpty()) {
- throw new MalformedCookieException(
- "Blank value for domain attribute");
- }
- String s = domain;
- s = s.toLowerCase(Locale.ROOT);
- if (!domain.startsWith(".")) {
- // Per RFC 2965 section 3.2.2
- // "... If an explicitly specified value does not start with
- // a dot, the user agent supplies a leading dot ..."
- // That effectively implies that the domain attribute
- // MAY NOT be an IP address of a host name
- s = '.' + s;
- }
- cookie.setDomain(s);
- }
-
- /**
- * Performs domain-match as defined by the RFC2965.
- *
- * Host A's name domain-matches host B's if
- *
- *
- * - their host name strings string-compare equal; or
- * - A is a HDN string and has the form NB, where N is a non-empty
- * name string, B has the form .B', and B' is a HDN string. (So,
- * x.y.com domain-matches .Y.com but not Y.com.)
- *
- *
- * @param host host name where cookie is received from or being sent to.
- * @param domain The cookie domain attribute.
- * @return true if the specified host matches the given domain.
- */
- public boolean domainMatch(final String host, final String domain) {
- final boolean match = host.equals(domain)
- || (domain.startsWith(".") && host.endsWith(domain));
-
- return match;
- }
-
- /**
- * Validate cookie domain attribute.
- */
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- final String host = origin.getHost().toLowerCase(Locale.ROOT);
- if (cookie.getDomain() == null) {
- throw new CookieRestrictionViolationException("Invalid cookie state: " +
- "domain not specified");
- }
- final String cookieDomain = cookie.getDomain().toLowerCase(Locale.ROOT);
-
- if (cookie instanceof ClientCookie
- && ((ClientCookie) cookie).containsAttribute(ClientCookie.DOMAIN_ATTR)) {
- // Domain attribute must start with a dot
- if (!cookieDomain.startsWith(".")) {
- throw new CookieRestrictionViolationException("Domain attribute \"" +
- cookie.getDomain() + "\" violates RFC 2109: domain must start with a dot");
- }
-
- // Domain attribute must contain at least one embedded dot,
- // or the value must be equal to .local.
- final int dotIndex = cookieDomain.indexOf('.', 1);
- if (((dotIndex < 0) || (dotIndex == cookieDomain.length() - 1))
- && (!cookieDomain.equals(".local"))) {
- throw new CookieRestrictionViolationException(
- "Domain attribute \"" + cookie.getDomain()
- + "\" violates RFC 2965: the value contains no embedded dots "
- + "and the value is not .local");
- }
-
- // The effective host name must domain-match domain attribute.
- if (!domainMatch(host, cookieDomain)) {
- throw new CookieRestrictionViolationException(
- "Domain attribute \"" + cookie.getDomain()
- + "\" violates RFC 2965: effective host name does not "
- + "domain-match domain attribute.");
- }
-
- // effective host name minus domain must not contain any dots
- final String effectiveHostWithoutDomain = host.substring(
- 0, host.length() - cookieDomain.length());
- if (effectiveHostWithoutDomain.indexOf('.') != -1) {
- throw new CookieRestrictionViolationException("Domain attribute \""
- + cookie.getDomain() + "\" violates RFC 2965: "
- + "effective host minus domain may not contain any dots");
- }
- } else {
- // Domain was not specified in header. In this case, domain must
- // string match request host (case-insensitive).
- if (!cookie.getDomain().equals(host)) {
- throw new CookieRestrictionViolationException("Illegal domain attribute: \""
- + cookie.getDomain() + "\"."
- + "Domain of origin: \""
- + host + "\"");
- }
- }
- }
-
- /**
- * Match cookie domain attribute.
- */
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- final String host = origin.getHost().toLowerCase(Locale.ROOT);
- final String cookieDomain = cookie.getDomain();
-
- // The effective host name MUST domain-match the Domain
- // attribute of the cookie.
- if (!domainMatch(host, cookieDomain)) {
- return false;
- }
- // effective host name minus domain must not contain any dots
- final String effectiveHostWithoutDomain = host.substring(
- 0, host.length() - cookieDomain.length());
- return effectiveHostWithoutDomain.indexOf('.') == -1;
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.DOMAIN_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.java
deleted file mode 100644
index 004f25473..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965PortAttributeHandler.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.StringTokenizer;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieRestrictionViolationException;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.cookie.SetCookie2;
-import org.apache.http.util.Args;
-
-/**
- * {@code "Port"} cookie attribute handler for RFC 2965 cookie spec.
- *
- * @since 4.0
- */
-@Immutable
-public class RFC2965PortAttributeHandler implements CommonCookieAttributeHandler {
-
- public RFC2965PortAttributeHandler() {
- super();
- }
-
- /**
- * Parses the given Port attribute value (e.g. "8000,8001,8002")
- * into an array of ports.
- *
- * @param portValue port attribute value
- * @return parsed array of ports
- * @throws MalformedCookieException if there is a problem in
- * parsing due to invalid portValue.
- */
- private static int[] parsePortAttribute(final String portValue)
- throws MalformedCookieException {
- final StringTokenizer st = new StringTokenizer(portValue, ",");
- final int[] ports = new int[st.countTokens()];
- try {
- int i = 0;
- while(st.hasMoreTokens()) {
- ports[i] = Integer.parseInt(st.nextToken().trim());
- if (ports[i] < 0) {
- throw new MalformedCookieException ("Invalid Port attribute.");
- }
- ++i;
- }
- } catch (final NumberFormatException e) {
- throw new MalformedCookieException ("Invalid Port "
- + "attribute: " + e.getMessage());
- }
- return ports;
- }
-
- /**
- * Returns {@code true} if the given port exists in the given
- * ports list.
- *
- * @param port port of host where cookie was received from or being sent to.
- * @param ports port list
- * @return true returns {@code true} if the given port exists in
- * the given ports list; {@code false} otherwise.
- */
- private static boolean portMatch(final int port, final int[] ports) {
- boolean portInList = false;
- for (final int port2 : ports) {
- if (port == port2) {
- portInList = true;
- break;
- }
- }
- return portInList;
- }
-
- /**
- * Parse cookie port attribute.
- */
- @Override
- public void parse(final SetCookie cookie, final String portValue)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- if (cookie instanceof SetCookie2) {
- final SetCookie2 cookie2 = (SetCookie2) cookie;
- if (portValue != null && !portValue.trim().isEmpty()) {
- final int[] ports = parsePortAttribute(portValue);
- cookie2.setPorts(ports);
- }
- }
- }
-
- /**
- * Validate cookie port attribute. If the Port attribute was specified
- * in header, the request port must be in cookie's port list.
- */
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- final int port = origin.getPort();
- if (cookie instanceof ClientCookie
- && ((ClientCookie) cookie).containsAttribute(ClientCookie.PORT_ATTR)) {
- if (!portMatch(port, cookie.getPorts())) {
- throw new CookieRestrictionViolationException(
- "Port attribute violates RFC 2965: "
- + "Request port not found in cookie's port list.");
- }
- }
- }
-
- /**
- * Match cookie port attribute. If the Port attribute is not specified
- * in header, the cookie can be sent to any port. Otherwise, the request port
- * must be in the cookie's port list.
- */
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- final int port = origin.getPort();
- if (cookie instanceof ClientCookie
- && ((ClientCookie) cookie).containsAttribute(ClientCookie.PORT_ATTR)) {
- if (cookie.getPorts() == null) {
- // Invalid cookie state: port not specified
- return false;
- }
- if (!portMatch(port, cookie.getPorts())) {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.PORT_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965Spec.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965Spec.java
deleted file mode 100644
index 30f7b04df..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965Spec.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-package org.apache.http.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.annotation.Obsolete;
-import org.apache.http.annotation.ThreadSafe;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SM;
-import org.apache.http.message.BufferedHeader;
-import org.apache.http.util.Args;
-import org.apache.http.util.CharArrayBuffer;
-
-/**
- * RFC 2965 compliant {@link org.apache.http.cookie.CookieSpec} implementation.
- *
- * Rendered obsolete by {@link org.apache.http.impl.cookie.RFC6265StrictSpec}.
- *
- * @since 4.0
- * @see org.apache.http.impl.cookie.RFC6265StrictSpec
- */
-@Obsolete
-@ThreadSafe
-public class RFC2965Spec extends RFC2109Spec {
-
- /**
- * Default constructor
- *
- */
- public RFC2965Spec() {
- this(null, false);
- }
-
- public RFC2965Spec(final String[] datepatterns, final boolean oneHeader) {
- super(oneHeader,
- new RFC2965VersionAttributeHandler(),
- new BasicPathHandler(),
- new RFC2965DomainAttributeHandler(),
- new RFC2965PortAttributeHandler(),
- new BasicMaxAgeHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler(),
- new BasicExpiresHandler(
- datepatterns != null ? datepatterns.clone() : DATE_PATTERNS),
- new RFC2965CommentUrlAttributeHandler(),
- new RFC2965DiscardAttributeHandler());
- }
-
- RFC2965Spec(final boolean oneHeader,
- final CommonCookieAttributeHandler... handlers) {
- super(oneHeader, handlers);
- }
-
- @Override
- public List parse(
- final Header header,
- final CookieOrigin origin) throws MalformedCookieException {
- Args.notNull(header, "Header");
- Args.notNull(origin, "Cookie origin");
- if (!header.getName().equalsIgnoreCase(SM.SET_COOKIE2)) {
- throw new MalformedCookieException("Unrecognized cookie header '"
- + header.toString() + "'");
- }
- final HeaderElement[] elems = header.getElements();
- return createCookies(elems, adjustEffectiveHost(origin));
- }
-
- @Override
- protected List parse(
- final HeaderElement[] elems,
- final CookieOrigin origin) throws MalformedCookieException {
- return createCookies(elems, adjustEffectiveHost(origin));
- }
-
- private List createCookies(
- final HeaderElement[] elems,
- final CookieOrigin origin) throws MalformedCookieException {
- final List cookies = new ArrayList<>(elems.length);
- for (final HeaderElement headerelement : elems) {
- final String name = headerelement.getName();
- final String value = headerelement.getValue();
- if (name == null || name.isEmpty()) {
- throw new MalformedCookieException("Cookie name may not be empty");
- }
-
- final BasicClientCookie2 cookie = new BasicClientCookie2(name, value);
- cookie.setPath(getDefaultPath(origin));
- cookie.setDomain(getDefaultDomain(origin));
- cookie.setPorts(new int [] { origin.getPort() });
- // cycle through the parameters
- final NameValuePair[] attribs = headerelement.getParameters();
-
- // Eliminate duplicate attributes. The first occurrence takes precedence
- // See RFC2965: 3.2 Origin Server Role
- final Map attribmap =
- new HashMap<>(attribs.length);
- for (int j = attribs.length - 1; j >= 0; j--) {
- final NameValuePair param = attribs[j];
- attribmap.put(param.getName().toLowerCase(Locale.ROOT), param);
- }
- for (final Map.Entry entry : attribmap.entrySet()) {
- final NameValuePair attrib = entry.getValue();
- final String s = attrib.getName().toLowerCase(Locale.ROOT);
-
- cookie.setAttribute(s, attrib.getValue());
-
- final CookieAttributeHandler handler = findAttribHandler(s);
- if (handler != null) {
- handler.parse(cookie, attrib.getValue());
- }
- }
- cookies.add(cookie);
- }
- return cookies;
- }
-
- @Override
- public void validate(
- final Cookie cookie, final CookieOrigin origin) throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- super.validate(cookie, adjustEffectiveHost(origin));
- }
-
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- Args.notNull(cookie, "Cookie");
- Args.notNull(origin, "Cookie origin");
- return super.match(cookie, adjustEffectiveHost(origin));
- }
-
- /**
- * Adds valid Port attribute value, e.g. "8000,8001,8002"
- */
- @Override
- protected void formatCookieAsVer(final CharArrayBuffer buffer,
- final Cookie cookie, final int version) {
- super.formatCookieAsVer(buffer, cookie, version);
- // format port attribute
- if (cookie instanceof ClientCookie) {
- // Test if the port attribute as set by the origin server is not blank
- final String s = ((ClientCookie) cookie).getAttribute(ClientCookie.PORT_ATTR);
- if (s != null) {
- buffer.append("; $Port");
- buffer.append("=\"");
- if (!s.trim().isEmpty()) {
- final int[] ports = cookie.getPorts();
- if (ports != null) {
- final int len = ports.length;
- for (int i = 0; i < len; i++) {
- if (i > 0) {
- buffer.append(",");
- }
- buffer.append(Integer.toString(ports[i]));
- }
- }
- }
- buffer.append("\"");
- }
- }
- }
-
- /**
- * Set 'effective host name' as defined in RFC 2965.
- *
- * If a host name contains no dots, the effective host name is
- * that name with the string .local appended to it. Otherwise
- * the effective host name is the same as the host name. Note
- * that all effective host names contain at least one dot.
- *
- * @param origin origin where cookie is received from or being sent to.
- */
- private static CookieOrigin adjustEffectiveHost(final CookieOrigin origin) {
- String host = origin.getHost();
-
- // Test if the host name appears to be a fully qualified DNS name,
- // IPv4 address or IPv6 address
- boolean isLocalHost = true;
- for (int i = 0; i < host.length(); i++) {
- final char ch = host.charAt(i);
- if (ch == '.' || ch == ':') {
- isLocalHost = false;
- break;
- }
- }
- if (isLocalHost) {
- host += ".local";
- return new CookieOrigin(
- host,
- origin.getPort(),
- origin.getPath(),
- origin.isSecure());
- } else {
- return origin;
- }
- }
-
- @Override
- public int getVersion() {
- return 1;
- }
-
- @Override
- public Header getVersionHeader() {
- final CharArrayBuffer buffer = new CharArrayBuffer(40);
- buffer.append(SM.COOKIE2);
- buffer.append(": ");
- buffer.append("$Version=");
- buffer.append(Integer.toString(getVersion()));
- return new BufferedHeader(buffer);
- }
-
- @Override
- public String toString() {
- return "rfc2965";
- }
-
-}
-
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965SpecProvider.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965SpecProvider.java
deleted file mode 100644
index ba303a67d..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965SpecProvider.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.annotation.Obsolete;
-import org.apache.http.conn.util.PublicSuffixMatcher;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecProvider;
-import org.apache.http.protocol.HttpContext;
-
-/**
- * {@link org.apache.http.cookie.CookieSpecProvider} implementation that provides an instance of
- * {@link RFC2965Spec}. The instance returned by this factory can
- * be shared by multiple threads.
- *
- * Rendered obsolete by {@link org.apache.http.impl.cookie.RFC6265CookieSpecProvider}
- *
- * @since 4.4
- * @see org.apache.http.impl.cookie.RFC6265CookieSpecProvider
- */
-@Obsolete
-@Immutable
-public class RFC2965SpecProvider implements CookieSpecProvider {
-
- private final PublicSuffixMatcher publicSuffixMatcher;
- private final boolean oneHeader;
-
- private volatile CookieSpec cookieSpec;
-
- public RFC2965SpecProvider(final PublicSuffixMatcher publicSuffixMatcher, final boolean oneHeader) {
- super();
- this.oneHeader = oneHeader;
- this.publicSuffixMatcher = publicSuffixMatcher;
- }
-
- public RFC2965SpecProvider(final PublicSuffixMatcher publicSuffixMatcher) {
- this(publicSuffixMatcher, false);
- }
-
- public RFC2965SpecProvider() {
- this(null, false);
- }
-
- @Override
- public CookieSpec create(final HttpContext context) {
- if (cookieSpec == null) {
- synchronized (this) {
- if (cookieSpec == null) {
- this.cookieSpec = new RFC2965Spec(this.oneHeader,
- new RFC2965VersionAttributeHandler(),
- new BasicPathHandler(),
- PublicSuffixDomainFilter.decorate(
- new RFC2965DomainAttributeHandler(), this.publicSuffixMatcher),
- new RFC2965PortAttributeHandler(),
- new BasicMaxAgeHandler(),
- new BasicSecureHandler(),
- new BasicCommentHandler(),
- new RFC2965CommentUrlAttributeHandler(),
- new RFC2965DiscardAttributeHandler());
- }
- }
- }
- return this.cookieSpec;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java
deleted file mode 100644
index ac682d8cb..000000000
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.annotation.Immutable;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.CommonCookieAttributeHandler;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieRestrictionViolationException;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie;
-import org.apache.http.cookie.SetCookie2;
-import org.apache.http.util.Args;
-
-/**
- * {@code "Version"} cookie attribute handler for RFC 2965 cookie spec.
- *
- * @since 4.0
- */
-@Immutable
-public class RFC2965VersionAttributeHandler implements CommonCookieAttributeHandler {
-
- public RFC2965VersionAttributeHandler() {
- super();
- }
-
- /**
- * Parse cookie version attribute.
- */
- @Override
- public void parse(final SetCookie cookie, final String value)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- if (value == null) {
- throw new MalformedCookieException(
- "Missing value for version attribute");
- }
- int version = -1;
- try {
- version = Integer.parseInt(value);
- } catch (final NumberFormatException e) {
- version = -1;
- }
- if (version < 0) {
- throw new MalformedCookieException("Invalid cookie version.");
- }
- cookie.setVersion(version);
- }
-
- /**
- * validate cookie version attribute. Version attribute is REQUIRED.
- */
- @Override
- public void validate(final Cookie cookie, final CookieOrigin origin)
- throws MalformedCookieException {
- Args.notNull(cookie, "Cookie");
- if (cookie instanceof SetCookie2) {
- if (cookie instanceof ClientCookie
- && !((ClientCookie) cookie).containsAttribute(ClientCookie.VERSION_ATTR)) {
- throw new CookieRestrictionViolationException(
- "Violates RFC 2965. Version attribute is required.");
- }
- }
- }
-
- @Override
- public boolean match(final Cookie cookie, final CookieOrigin origin) {
- return true;
- }
-
- @Override
- public String getAttributeName() {
- return ClientCookie.VERSION_ATTR;
- }
-
-}
diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC6265CookieSpec.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC6265CookieSpec.java
index 38504e2ec..af182e97d 100644
--- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC6265CookieSpec.java
+++ b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC6265CookieSpec.java
@@ -40,7 +40,6 @@ import java.util.concurrent.ConcurrentHashMap;
import org.apache.http.FormattedHeader;
import org.apache.http.Header;
import org.apache.http.annotation.ThreadSafe;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieAttributeHandler;
@@ -168,8 +167,8 @@ public class RFC6265CookieSpec implements CookieSpec {
attribMap.put(paramName, paramValue);
}
// Ignore 'Expires' if 'Max-Age' is present
- if (attribMap.containsKey(ClientCookie.MAX_AGE_ATTR)) {
- attribMap.remove(ClientCookie.EXPIRES_ATTR);
+ if (attribMap.containsKey(Cookie.MAX_AGE_ATTR)) {
+ attribMap.remove(Cookie.EXPIRES_ATTR);
}
for (Map.Entry entry: attribMap.entrySet()) {
@@ -264,14 +263,4 @@ public class RFC6265CookieSpec implements CookieSpec {
return false;
}
- @Override
- public final int getVersion() {
- return 0;
- }
-
- @Override
- public final Header getVersionHeader() {
- return null;
- }
-
}
diff --git a/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java b/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java
index 1c8cf42a9..1379b180d 100644
--- a/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java
+++ b/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java
@@ -46,12 +46,9 @@ import org.apache.http.cookie.CookieSpecProvider;
import org.apache.http.cookie.SM;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.cookie.BasicClientCookie;
-import org.apache.http.impl.cookie.BasicClientCookie2;
-import org.apache.http.impl.cookie.DefaultCookieSpecProvider;
import org.apache.http.impl.cookie.IgnoreSpecProvider;
-import org.apache.http.impl.cookie.NetscapeDraftSpec;
-import org.apache.http.impl.cookie.NetscapeDraftSpecProvider;
-import org.apache.http.impl.cookie.RFC2965SpecProvider;
+import org.apache.http.impl.cookie.RFC6265CookieSpecProvider;
+import org.apache.http.impl.cookie.RFC6265StrictSpec;
import org.apache.http.message.BasicHttpRequest;
import org.apache.http.protocol.HttpCoreContext;
import org.junit.Assert;
@@ -69,21 +66,23 @@ public class TestRequestAddCookies {
public void setUp() {
this.target = new HttpHost("localhost.local", 80);
this.cookieStore = new BasicCookieStore();
- final BasicClientCookie2 cookie1 = new BasicClientCookie2("name1", "value1");
- cookie1.setVersion(1);
+ final BasicClientCookie cookie1 = new BasicClientCookie("name1", "value1");
cookie1.setDomain("localhost.local");
cookie1.setPath("/");
this.cookieStore.addCookie(cookie1);
- final BasicClientCookie2 cookie2 = new BasicClientCookie2("name2", "value2");
- cookie2.setVersion(1);
+ final BasicClientCookie cookie2 = new BasicClientCookie("name2", "value2");
cookie2.setDomain("localhost.local");
cookie2.setPath("/");
this.cookieStore.addCookie(cookie2);
+ final CookieSpecProvider laxCookiePolicyPRovider = new RFC6265CookieSpecProvider(
+ RFC6265CookieSpecProvider.CompatibilityLevel.RELAXED, null);
+ final CookieSpecProvider strictCookiePolicyPRovider = new RFC6265CookieSpecProvider(
+ RFC6265CookieSpecProvider.CompatibilityLevel.STRICT, null);
this.cookieSpecRegistry = RegistryBuilder.create()
- .register(CookieSpecs.DEFAULT, new DefaultCookieSpecProvider())
- .register(CookieSpecs.STANDARD, new RFC2965SpecProvider())
- .register(CookieSpecs.NETSCAPE, new NetscapeDraftSpecProvider())
+ .register(CookieSpecs.DEFAULT, laxCookiePolicyPRovider)
+ .register(CookieSpecs.STANDARD, laxCookiePolicyPRovider)
+ .register(CookieSpecs.STANDARD_STRICT, strictCookiePolicyPRovider)
.register(CookieSpecs.IGNORE_COOKIES, new IgnoreSpecProvider())
.build();
}
@@ -117,14 +116,10 @@ public class TestRequestAddCookies {
final HttpRequestInterceptor interceptor = new RequestAddCookies();
interceptor.process(request, context);
- final Header[] headers1 = request.getHeaders(SM.COOKIE);
- Assert.assertNotNull(headers1);
- Assert.assertEquals(2, headers1.length);
- Assert.assertEquals("$Version=1; name1=\"value1\"", headers1[0].getValue());
- Assert.assertEquals("$Version=1; name2=\"value2\"", headers1[1].getValue());
- final Header[] headers2 = request.getHeaders(SM.COOKIE2);
- Assert.assertNotNull(headers2);
- Assert.assertEquals(0, headers2.length);
+ final Header[] headers = request.getHeaders(SM.COOKIE);
+ Assert.assertNotNull(headers);
+ Assert.assertEquals(1, headers.length);
+ Assert.assertEquals("name1=value1; name2=value2", headers[0].getValue());
final CookieOrigin cookieOrigin = context.getCookieOrigin();
Assert.assertNotNull(cookieOrigin);
@@ -149,12 +144,9 @@ public class TestRequestAddCookies {
final HttpRequestInterceptor interceptor = new RequestAddCookies();
interceptor.process(request, context);
- final Header[] headers1 = request.getHeaders(SM.COOKIE);
- Assert.assertNotNull(headers1);
- Assert.assertEquals(0, headers1.length);
- final Header[] headers2 = request.getHeaders(SM.COOKIE2);
- Assert.assertNotNull(headers2);
- Assert.assertEquals(0, headers2.length);
+ final Header[] headers = request.getHeaders(SM.COOKIE);
+ Assert.assertNotNull(headers);
+ Assert.assertEquals(0, headers.length);
}
@Test
@@ -172,12 +164,9 @@ public class TestRequestAddCookies {
final HttpRequestInterceptor interceptor = new RequestAddCookies();
interceptor.process(request, context);
- final Header[] headers1 = request.getHeaders(SM.COOKIE);
- Assert.assertNotNull(headers1);
- Assert.assertEquals(0, headers1.length);
- final Header[] headers2 = request.getHeaders(SM.COOKIE2);
- Assert.assertNotNull(headers2);
- Assert.assertEquals(0, headers2.length);
+ final Header[] headers = request.getHeaders(SM.COOKIE);
+ Assert.assertNotNull(headers);
+ Assert.assertEquals(0, headers.length);
}
@Test
@@ -195,12 +184,9 @@ public class TestRequestAddCookies {
final HttpRequestInterceptor interceptor = new RequestAddCookies();
interceptor.process(request, context);
- final Header[] headers1 = request.getHeaders(SM.COOKIE);
- Assert.assertNotNull(headers1);
- Assert.assertEquals(0, headers1.length);
- final Header[] headers2 = request.getHeaders(SM.COOKIE2);
- Assert.assertNotNull(headers2);
- Assert.assertEquals(0, headers2.length);
+ final Header[] headers = request.getHeaders(SM.COOKIE);
+ Assert.assertNotNull(headers);
+ Assert.assertEquals(0, headers.length);
}
@Test
@@ -218,12 +204,9 @@ public class TestRequestAddCookies {
final HttpRequestInterceptor interceptor = new RequestAddCookies();
interceptor.process(request, context);
- final Header[] headers1 = request.getHeaders(SM.COOKIE);
- Assert.assertNotNull(headers1);
- Assert.assertEquals(0, headers1.length);
- final Header[] headers2 = request.getHeaders(SM.COOKIE2);
- Assert.assertNotNull(headers2);
- Assert.assertEquals(0, headers2.length);
+ final Header[] headers = request.getHeaders(SM.COOKIE);
+ Assert.assertNotNull(headers);
+ Assert.assertEquals(0, headers.length);
}
@Test
@@ -239,19 +222,16 @@ public class TestRequestAddCookies {
final HttpRequestInterceptor interceptor = new RequestAddCookies();
interceptor.process(request, context);
- final Header[] headers1 = request.getHeaders(SM.COOKIE);
- Assert.assertNotNull(headers1);
- Assert.assertEquals(0, headers1.length);
- final Header[] headers2 = request.getHeaders(SM.COOKIE2);
- Assert.assertNotNull(headers2);
- Assert.assertEquals(0, headers2.length);
+ final Header[] headers = request.getHeaders(SM.COOKIE);
+ Assert.assertNotNull(headers);
+ Assert.assertEquals(0, headers.length);
}
@Test
public void testAddCookiesUsingExplicitCookieSpec() throws Exception {
final HttpRequest request = new BasicHttpRequest("GET", "/");
final RequestConfig config = RequestConfig.custom()
- .setCookieSpec(CookieSpecs.NETSCAPE).build();
+ .setCookieSpec(CookieSpecs.STANDARD_STRICT).build();
final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create();
@@ -265,7 +245,7 @@ public class TestRequestAddCookies {
interceptor.process(request, context);
final CookieSpec cookieSpec = context.getCookieSpec();
- Assert.assertTrue(cookieSpec instanceof NetscapeDraftSpec);
+ Assert.assertTrue(cookieSpec instanceof RFC6265StrictSpec);
final Header[] headers1 = request.getHeaders(SM.COOKIE);
Assert.assertNotNull(headers1);
@@ -368,8 +348,7 @@ public class TestRequestAddCookies {
public void testExcludeExpiredCookies() throws Exception {
final HttpRequest request = new BasicHttpRequest("GET", "/");
- final BasicClientCookie2 cookie3 = new BasicClientCookie2("name3", "value3");
- cookie3.setVersion(1);
+ final BasicClientCookie cookie3 = new BasicClientCookie("name3", "value3");
cookie3.setDomain("localhost.local");
cookie3.setPath("/");
cookie3.setExpiryDate(new Date(System.currentTimeMillis() + 100));
@@ -393,14 +372,10 @@ public class TestRequestAddCookies {
final HttpRequestInterceptor interceptor = new RequestAddCookies();
interceptor.process(request, context);
- final Header[] headers1 = request.getHeaders(SM.COOKIE);
- Assert.assertNotNull(headers1);
- Assert.assertEquals(2, headers1.length);
- Assert.assertEquals("$Version=1; name1=\"value1\"", headers1[0].getValue());
- Assert.assertEquals("$Version=1; name2=\"value2\"", headers1[1].getValue());
- final Header[] headers2 = request.getHeaders(SM.COOKIE2);
- Assert.assertNotNull(headers2);
- Assert.assertEquals(0, headers2.length);
+ final Header[] headers = request.getHeaders(SM.COOKIE);
+ Assert.assertNotNull(headers);
+ Assert.assertEquals(1, headers.length);
+ Assert.assertEquals("name1=value1; name2=value2", headers[0].getValue());
Mockito.verify(this.cookieStore, Mockito.times(1)).clearExpired(Mockito.any());
}
@@ -426,12 +401,9 @@ public class TestRequestAddCookies {
final HttpRequestInterceptor interceptor = new RequestAddCookies();
interceptor.process(request, context);
- final Header[] headers1 = request.getHeaders(SM.COOKIE);
- Assert.assertNotNull(headers1);
- Assert.assertEquals(0, headers1.length);
- final Header[] headers2 = request.getHeaders(SM.COOKIE2);
- Assert.assertNotNull(headers2);
- Assert.assertEquals(0, headers2.length);
+ final Header[] headers = request.getHeaders(SM.COOKIE);
+ Assert.assertNotNull(headers);
+ Assert.assertEquals(0, headers.length);
}
// Helper method
diff --git a/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java b/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java
index 30a7d0f0c..fd241fd97 100644
--- a/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java
+++ b/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java
@@ -37,7 +37,7 @@ import org.apache.http.cookie.CookieOrigin;
import org.apache.http.cookie.CookieSpec;
import org.apache.http.cookie.SM;
import org.apache.http.impl.client.BasicCookieStore;
-import org.apache.http.impl.cookie.DefaultCookieSpec;
+import org.apache.http.impl.cookie.RFC6265LaxSpec;
import org.apache.http.message.BasicHttpResponse;
import org.junit.Assert;
import org.junit.Before;
@@ -52,7 +52,7 @@ public class TestResponseProcessCookies {
@Before
public void setUp() throws Exception {
this.cookieOrigin = new CookieOrigin("localhost", 80, "/", false);
- this.cookieSpec = new DefaultCookieSpec();
+ this.cookieSpec = new RFC6265LaxSpec();
this.cookieStore = new BasicCookieStore();
}
@@ -87,7 +87,6 @@ public class TestResponseProcessCookies {
Assert.assertNotNull(cookies);
Assert.assertEquals(1, cookies.size());
final Cookie cookie = cookies.get(0);
- Assert.assertEquals(0, cookie.getVersion());
Assert.assertEquals("name1", cookie.getName());
Assert.assertEquals("value1", cookie.getValue());
Assert.assertEquals("localhost", cookie.getDomain());
@@ -148,65 +147,4 @@ public class TestResponseProcessCookies {
Assert.assertEquals(0, cookies.size());
}
- @Test
- public void testSetCookie2OverrideSetCookie() throws Exception {
- final HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
- response.addHeader(SM.SET_COOKIE, "name1=value1");
- response.addHeader(SM.SET_COOKIE2, "name1=value2; Version=1");
-
- final HttpClientContext context = HttpClientContext.create();
- context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin);
- context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec);
- context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
-
- final HttpResponseInterceptor interceptor = new ResponseProcessCookies();
- interceptor.process(response, context);
-
- final List cookies = this.cookieStore.getCookies();
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final Cookie cookie = cookies.get(0);
- Assert.assertEquals(1, cookie.getVersion());
- Assert.assertEquals("name1", cookie.getName());
- Assert.assertEquals("value2", cookie.getValue());
- Assert.assertEquals("localhost.local", cookie.getDomain());
- Assert.assertEquals("/", cookie.getPath());
- }
-
- @Test
- public void testInvalidHeader() throws Exception {
- final HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
- response.addHeader(SM.SET_COOKIE2, "name=value; Version=crap");
-
- final HttpClientContext context = HttpClientContext.create();
- context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin);
- context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec);
- context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
-
- final HttpResponseInterceptor interceptor = new ResponseProcessCookies();
- interceptor.process(response, context);
-
- final List cookies = this.cookieStore.getCookies();
- Assert.assertNotNull(cookies);
- Assert.assertTrue(cookies.isEmpty());
- }
-
- @Test
- public void testCookieRejected() throws Exception {
- final HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
- response.addHeader(SM.SET_COOKIE2, "name=value; Domain=www.somedomain.com; Version=1");
-
- final HttpClientContext context = HttpClientContext.create();
- context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin);
- context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec);
- context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
-
- final HttpResponseInterceptor interceptor = new ResponseProcessCookies();
- interceptor.process(response, context);
-
- final List cookies = this.cookieStore.getCookies();
- Assert.assertNotNull(cookies);
- Assert.assertTrue(cookies.isEmpty());
- }
-
}
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicClientCookie2.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicClientCookie2.java
deleted file mode 100644
index 9af1608bb..000000000
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicClientCookie2.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * Unit tests for {@link BasicClientCookie2}.
- */
-public class TestBasicClientCookie2 {
-
- @SuppressWarnings("unused")
- @Test
- public void testConstructor() {
- final BasicClientCookie2 cookie = new BasicClientCookie2("name", "value");
- Assert.assertEquals("name", cookie.getName());
- Assert.assertEquals("value", cookie.getValue());
- try {
- new BasicClientCookie2(null, null);
- Assert.fail("IllegalArgumentException should have been thrown");
- } catch (final IllegalArgumentException ex) {
- //expected
- }
- }
-
- @Test
- public void testCloning() throws Exception {
- final BasicClientCookie2 orig = new BasicClientCookie2("name", "value");
- orig.setDomain("domain");
- orig.setPath("/");
- orig.setAttribute("attrib", "stuff");
- orig.setPorts(new int[] {80, 8080});
- final BasicClientCookie2 clone = (BasicClientCookie2) orig.clone();
- Assert.assertEquals(orig.getName(), clone.getName());
- Assert.assertEquals(orig.getValue(), clone.getValue());
- Assert.assertEquals(orig.getDomain(), clone.getDomain());
- Assert.assertEquals(orig.getPath(), clone.getPath());
- Assert.assertEquals(orig.getAttribute("attrib"), clone.getAttribute("attrib"));
- Assert.assertEquals(orig.getPorts().length, clone.getPorts().length);
- Assert.assertEquals(orig.getPorts()[0], clone.getPorts()[0]);
- Assert.assertEquals(orig.getPorts()[1], clone.getPorts()[1]);
- }
-
- @Test
- public void testHTTPCLIENT_1031() throws Exception {
- final BasicClientCookie2 orig = new BasicClientCookie2("name", "value");
- orig.setDomain("domain");
- orig.setPath("/");
- orig.setAttribute("attrib", "stuff");
- final BasicClientCookie2 clone = (BasicClientCookie2) orig.clone();
- Assert.assertEquals(orig.getName(), clone.getName());
- Assert.assertEquals(orig.getValue(), clone.getValue());
- Assert.assertEquals(orig.getDomain(), clone.getDomain());
- Assert.assertEquals(orig.getPath(), clone.getPath());
- Assert.assertEquals(orig.getAttribute("attrib"), clone.getAttribute("attrib"));
- Assert.assertNull(clone.getPorts());
- }
-
- @Test
- public void testSerialization() throws Exception {
- final BasicClientCookie2 orig = new BasicClientCookie2("name", "value");
- orig.setDomain("domain");
- orig.setPath("/");
- orig.setAttribute("attrib", "stuff");
- orig.setPorts(new int[] {80, 8080});
- final ByteArrayOutputStream outbuffer = new ByteArrayOutputStream();
- final ObjectOutputStream outstream = new ObjectOutputStream(outbuffer);
- outstream.writeObject(orig);
- outstream.close();
- final byte[] raw = outbuffer.toByteArray();
- final ByteArrayInputStream inbuffer = new ByteArrayInputStream(raw);
- final ObjectInputStream instream = new ObjectInputStream(inbuffer);
- final BasicClientCookie2 clone = (BasicClientCookie2) instream.readObject();
- Assert.assertEquals(orig.getName(), clone.getName());
- Assert.assertEquals(orig.getValue(), clone.getValue());
- Assert.assertEquals(orig.getDomain(), clone.getDomain());
- Assert.assertEquals(orig.getPath(), clone.getPath());
- Assert.assertEquals(orig.getAttribute("attrib"), clone.getAttribute("attrib"));
- final int[] expected = orig.getPorts();
- final int[] clones = clone.getPorts();
- Assert.assertNotNull(expected);
- Assert.assertNotNull(clones);
- Assert.assertEquals(expected.length, clones.length);
- for (int i = 0; i < expected.length; i++) {
- Assert.assertEquals(expected[i], clones[i]);
- }
- }
-
-}
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicCookieAttribHandlers.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicCookieAttribHandlers.java
index 4da73d176..95e3d47e2 100644
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicCookieAttribHandlers.java
+++ b/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicCookieAttribHandlers.java
@@ -36,7 +36,7 @@ import java.util.Locale;
import org.apache.http.client.utils.DateUtils;
import org.apache.http.conn.util.DomainType;
import org.apache.http.conn.util.PublicSuffixMatcher;
-import org.apache.http.cookie.ClientCookie;
+import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieAttributeHandler;
import org.apache.http.cookie.CookieOrigin;
import org.apache.http.cookie.MalformedCookieException;
@@ -142,7 +142,7 @@ public class TestBasicCookieAttribHandlers {
final CookieAttributeHandler h = new BasicDomainHandler();
cookie.setDomain("somedomain.com");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "somedomain.com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "somedomain.com");
Assert.assertTrue(h.match(cookie, origin));
cookie.setDomain(".somedomain.com");
@@ -156,7 +156,7 @@ public class TestBasicCookieAttribHandlers {
final CookieAttributeHandler h = new BasicDomainHandler();
cookie.setDomain("somedomain.com");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "somedomain.com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "somedomain.com");
Assert.assertTrue(h.match(cookie, origin));
cookie.setDomain(".somedomain.com");
@@ -173,7 +173,7 @@ public class TestBasicCookieAttribHandlers {
final CookieAttributeHandler h = new BasicDomainHandler();
cookie.setDomain("somedomain.com");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "somedomain.com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "somedomain.com");
Assert.assertTrue(h.match(cookie, origin));
}
@@ -184,7 +184,7 @@ public class TestBasicCookieAttribHandlers {
final CookieAttributeHandler h = new BasicDomainHandler();
cookie.setDomain("somedoMain.Com");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "somedoMain.Com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "somedoMain.Com");
Assert.assertTrue(h.match(cookie, origin));
}
@@ -373,27 +373,6 @@ public class TestBasicCookieAttribHandlers {
}
}
- @Test
- public void testBasicCommentParse() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieAttributeHandler h = new BasicCommentHandler();
- h.parse(cookie, "whatever");
- Assert.assertEquals("whatever", cookie.getComment());
- h.parse(cookie, null);
- Assert.assertEquals(null, cookie.getComment());
- }
-
- @Test
- public void testBasicCommentInvalidInput() throws Exception {
- final CookieAttributeHandler h = new BasicCommentHandler();
- try {
- h.parse(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- }
-
@Test
public void testBasicSecureParse() throws Exception {
final BasicClientCookie cookie = new BasicClientCookie("name", "value");
@@ -500,33 +479,42 @@ public class TestBasicCookieAttribHandlers {
final BasicClientCookie cookie = new BasicClientCookie("name", "value");
final PublicSuffixMatcher matcher = new PublicSuffixMatcher(DomainType.ICANN, Arrays.asList("co.uk", "com"), null);
- final PublicSuffixDomainFilter h = new PublicSuffixDomainFilter(new RFC2109DomainHandler(), matcher);
+ final PublicSuffixDomainFilter h = new PublicSuffixDomainFilter(new BasicDomainHandler(), matcher);
cookie.setDomain(".co.uk");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, ".co.uk");
Assert.assertFalse(h.match(cookie, new CookieOrigin("apache.co.uk", 80, "/stuff", false)));
cookie.setDomain("co.uk");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "co.uk");
Assert.assertFalse(h.match(cookie, new CookieOrigin("apache.co.uk", 80, "/stuff", false)));
cookie.setDomain(".co.com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, ".co.com");
Assert.assertTrue(h.match(cookie, new CookieOrigin("apache.co.com", 80, "/stuff", false)));
cookie.setDomain("co.com");
- Assert.assertFalse(h.match(cookie, new CookieOrigin("apache.co.com", 80, "/stuff", false)));
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "co.com");
+ Assert.assertTrue(h.match(cookie, new CookieOrigin("apache.co.com", 80, "/stuff", false)));
cookie.setDomain(".com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, ".com");
Assert.assertFalse(h.match(cookie, new CookieOrigin("apache.com", 80, "/stuff", false)));
cookie.setDomain("com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "com");
Assert.assertFalse(h.match(cookie, new CookieOrigin("apache.com", 80, "/stuff", false)));
cookie.setDomain("apache.com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "apache.com");
Assert.assertTrue(h.match(cookie, new CookieOrigin("apache.com", 80, "/stuff", false)));
cookie.setDomain(".apache.com");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, ".apache.com");
Assert.assertTrue(h.match(cookie, new CookieOrigin("www.apache.com", 80, "/stuff", false)));
cookie.setDomain("localhost");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, "localhost");
Assert.assertTrue(h.match(cookie, new CookieOrigin("localhost", 80, "/stuff", false)));
}
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieNetscapeDraft.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieNetscapeDraft.java
deleted file mode 100644
index c85214aff..000000000
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieNetscapeDraft.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.TimeZone;
-
-import org.apache.http.Header;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.message.BasicHeader;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * Test cases for Netscape cookie draft
- */
-public class TestCookieNetscapeDraft {
-
- @Test
- public void testParseAbsPath() throws Exception {
- final Header header = new BasicHeader("Set-Cookie", "name1=value1;Path=/path/");
-
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final CookieOrigin origin = new CookieOrigin("host", 80, "/path/", true);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertEquals("Found 1 cookies.",1,cookies.size());
- Assert.assertEquals("Name","name1",cookies.get(0).getName());
- Assert.assertEquals("Value","value1",cookies.get(0).getValue());
- Assert.assertEquals("Domain","host",cookies.get(0).getDomain());
- Assert.assertEquals("Path","/path/",cookies.get(0).getPath());
- }
-
- @Test
- public void testParseAbsPath2() throws Exception {
- final Header header = new BasicHeader("Set-Cookie", "name1=value1;Path=/");
-
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final CookieOrigin origin = new CookieOrigin("host", 80, "/", true);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertEquals("Found 1 cookies.",1,cookies.size());
- Assert.assertEquals("Name","name1",cookies.get(0).getName());
- Assert.assertEquals("Value","value1",cookies.get(0).getValue());
- Assert.assertEquals("Domain","host",cookies.get(0).getDomain());
- Assert.assertEquals("Path","/",cookies.get(0).getPath());
- }
-
- @Test
- public void testParseRelativePath() throws Exception {
- final Header header = new BasicHeader("Set-Cookie", "name1=value1;Path=whatever");
-
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final CookieOrigin origin = new CookieOrigin("host", 80, "whatever", true);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertEquals("Found 1 cookies.",1,cookies.size());
- Assert.assertEquals("Name","name1",cookies.get(0).getName());
- Assert.assertEquals("Value","value1",cookies.get(0).getValue());
- Assert.assertEquals("Domain","host",cookies.get(0).getDomain());
- Assert.assertEquals("Path","whatever",cookies.get(0).getPath());
- }
-
- @Test
- public void testParseWithIllegalNetscapeDomain1() throws Exception {
- final Header header = new BasicHeader("Set-Cookie","cookie-name=cookie-value; domain=.com");
-
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- try {
- final CookieOrigin origin = new CookieOrigin("a.com", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- @Test
- public void testParseWithWrongNetscapeDomain2() throws Exception {
- final Header header = new BasicHeader("Set-Cookie","cookie-name=cookie-value; domain=.y.z");
-
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- try {
- final CookieOrigin origin = new CookieOrigin("x.y.z", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- @Test
- public void testParseVersionIgnored() throws Exception {
- final Header header = new BasicHeader("Set-Cookie", "name1=value1;Path=/path/;Version=1;");
-
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final CookieOrigin origin = new CookieOrigin("host", 80, "/path/", true);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertEquals("Found 1 cookies.",1,cookies.size());
- final Cookie cookie = cookies.get(0);
- Assert.assertEquals("Name","name1", cookie.getName());
- Assert.assertEquals("Value", "value1", cookie.getValue());
- Assert.assertEquals("Domain", "host", cookie.getDomain());
- Assert.assertEquals("Path","/path/", cookie.getPath());
- Assert.assertEquals(0, cookie.getVersion());
- }
-
- /**
- * Tests Netscape specific cookie formatting.
- */
- @Test
- public void testNetscapeCookieFormatting() throws Exception {
- final Header header = new BasicHeader(
- "Set-Cookie", "name=value; path=/; domain=.mydomain.com");
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- final List headers = cookiespec.formatCookies(cookies);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("name=value", headers.get(0).getValue());
- }
-
- /**
- * Tests Netscape specific expire attribute parsing.
- */
- @Test
- public void testNetscapeCookieExpireAttribute() throws Exception {
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final Header header = new BasicHeader("Set-Cookie",
- "name=value; path=/; domain=.mydomain.com; expires=Thu, 01-Jan-2070 00:00:10 GMT; comment=no_comment");
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final Cookie cookie = cookies.get(0);
- final Calendar c = Calendar.getInstance();
- c.setTimeZone(TimeZone.getTimeZone("GMT"));
- c.setTime(cookie.getExpiryDate());
- final int year = c.get(Calendar.YEAR);
- Assert.assertEquals(2070, year);
- }
-
- /**
- * Expire attribute with two digit year.
- */
- @Test
- public void testNetscapeCookieExpireAttributeTwoDigitYear() throws Exception {
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final Header header = new BasicHeader("Set-Cookie",
- "name=value; path=/; domain=.mydomain.com; expires=Thursday, 01-Jan-70 00:00:10 GMT; comment=no_comment");
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final Cookie cookie = cookies.get(0);
- final Calendar c = Calendar.getInstance();
- c.setTimeZone(TimeZone.getTimeZone("GMT"));
- c.setTime(cookie.getExpiryDate());
- final int year = c.get(Calendar.YEAR);
- Assert.assertEquals(2070, year);
- }
-
- /**
- * Invalid expire attribute.
- */
- @Test
- public void testNetscapeCookieInvalidExpireAttribute() throws Exception {
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie",
- "name=value; path=/; domain=.mydomain.com; expires=Thu 01-Jan-2070 00:00:10 GMT; comment=no_comment");
- try {
- final List cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- /**
- * Tests Netscape specific expire attribute without a time zone.
- */
- @Test
- public void testNetscapeCookieExpireAttributeNoTimeZone() throws Exception {
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final Header header = new BasicHeader("Set-Cookie",
- "name=value; expires=Thu, 01-Jan-2006 00:00:00 ");
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- /**
- * Tests if cookie values with embedded comma are handled correctly.
- */
- @Test
- public void testCookieWithComma() throws Exception {
- final Header header = new BasicHeader("Set-Cookie", "a=b,c");
-
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final CookieOrigin origin = new CookieOrigin("localhost", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertEquals("number of cookies", 1, cookies.size());
- Assert.assertEquals("a", cookies.get(0).getName());
- Assert.assertEquals("b,c", cookies.get(0).getValue());
- }
-
- @Test
- public void testFormatCookies() throws Exception {
- final BasicClientCookie c1 = new BasicClientCookie("name1", "value1");
- c1.setDomain(".whatever.com");
- c1.setAttribute(ClientCookie.DOMAIN_ATTR, c1.getDomain());
- c1.setPath("/");
- c1.setAttribute(ClientCookie.PATH_ATTR, c1.getPath());
-
- final Cookie c2 = new BasicClientCookie("name2", "value2");
- final Cookie c3 = new BasicClientCookie("name3", null);
-
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- final List cookies = new ArrayList<>();
- cookies.add(c1);
- cookies.add(c2);
- cookies.add(c3);
- final List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("name1=value1; name2=value2; name3", headers.get(0).getValue());
- }
-
- @Test
- public void testInvalidInput() throws Exception {
- final CookieSpec cookiespec = new NetscapeDraftSpec();
- try {
- cookiespec.parse(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- cookiespec.parse(new BasicHeader("Set-Cookie", "name=value"), null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- cookiespec.formatCookies(null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- final List cookies = new ArrayList<>();
- cookiespec.formatCookies(cookies);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- }
-
-}
-
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java
deleted file mode 100644
index 630e6ccab..000000000
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.http.Header;
-import org.apache.http.client.utils.DateUtils;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.message.BasicHeader;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * Test cases for RFC2109 cookie spec
- */
-public class TestCookieRFC2109Spec {
-
- @SuppressWarnings("unused")
- @Test
- public void testConstructor() throws Exception {
- new RFC2109Spec();
- new RFC2109Spec(null, false);
- new RFC2109Spec(new String[] { DateUtils.PATTERN_RFC1036 }, false);
- }
-
- @Test
- public void testParseVersion() throws Exception {
- final Header header = new BasicHeader("Set-Cookie","cookie-name=cookie-value; version=1");
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("127.0.0.1", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertEquals("Found 1 cookie.",1,cookies.size());
- Assert.assertEquals("Name","cookie-name",cookies.get(0).getName());
- Assert.assertEquals("Value","cookie-value",cookies.get(0).getValue());
- Assert.assertEquals("Version",1,cookies.get(0).getVersion());
- }
-
- /**
- * Test domain equals host
- */
- @Test
- public void testCookiesomainEqualsHost() throws Exception {
- final Header header = new BasicHeader("Set-Cookie",
- "cookie-name=cookie-value; domain=www.b.com; version=1");
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("www.b.com", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- Assert.assertEquals("www.b.com", cookies.get(0).getDomain());
- }
-
- /**
- * Domain does not start with a dot
- */
- @Test
- public void testParseWithIllegalDomain1() throws Exception {
- final Header header = new BasicHeader("Set-Cookie",
- "cookie-name=cookie-value; domain=a.b.com; version=1");
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("www.a.b.com", 80, "/", false);
- try {
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- /**
- * Domain must have alt least one embedded dot
- */
- @Test
- public void testParseWithIllegalDomain2() throws Exception {
- final Header header = new BasicHeader("Set-Cookie",
- "cookie-name=cookie-value; domain=.com; version=1");
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("b.com", 80, "/", false);
- try {
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- /**
- * Host minus domain may not contain any dots
- */
- @Test
- public void testParseWithIllegalDomain4() throws Exception {
- final Header header = new BasicHeader("Set-Cookie",
- "cookie-name=cookie-value; domain=.c.com; version=1");
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("a.b.c.com", 80, "/", false);
- try {
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- /**
- * Tests if that invalid second domain level cookie gets
- * rejected in the strict mode, but gets accepted in the
- * browser compatibility mode.
- */
- @Test
- public void testSecondDomainLevelCookie() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", null);
- cookie.setDomain(".sourceforge.net");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, cookie.getDomain());
- cookie.setPath("/");
- cookie.setAttribute(ClientCookie.PATH_ATTR, cookie.getPath());
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("sourceforge.net", 80, "/", false);
- try {
- cookiespec.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException e) {
- // Expected
- }
- }
-
- @Test
- public void testSecondDomainLevelCookieMatch() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", null);
- cookie.setDomain(".sourceforge.net");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, cookie.getDomain());
- cookie.setPath("/");
- cookie.setAttribute(ClientCookie.PATH_ATTR, cookie.getPath());
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("sourceforge.net", 80, "/", false);
- Assert.assertFalse(cookiespec.match(cookie, origin));
- }
-
- @Test
- public void testParseWithWrongPath() throws Exception {
- final Header header = new BasicHeader("Set-Cookie",
- "cookie-name=cookie-value; domain=127.0.0.1; path=/not/just/root");
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("127.0.0.1", 80, "/", false);
- try {
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- /**
- * Tests if cookie constructor rejects cookie name containing blanks.
- */
- @Test
- public void testCookieNameWithBlanks() throws Exception {
- final Header setcookie = new BasicHeader("Set-Cookie", "invalid name=");
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("127.0.0.1", 80, "/", false);
- try {
- final List cookies = cookiespec.parse(setcookie, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- /**
- * Tests if cookie constructor rejects cookie name starting with $.
- */
- @Test
- public void testCookieNameStartingWithDollarSign() throws Exception {
- final Header setcookie = new BasicHeader("Set-Cookie", "$invalid_name=");
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("127.0.0.1", 80, "/", false);
- try {
- final List cookies = cookiespec.parse(setcookie, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- /**
- * Tests if default cookie validator rejects cookies originating from a host without domain
- * where domain attribute does not match the host of origin
- */
- @Test
- public void testInvalidDomainWithSimpleHostName() throws Exception {
- final CookieSpec cookiespec = new RFC2109Spec();
- Header header = new BasicHeader("Set-Cookie",
- "name=\"value\"; version=\"1\"; path=\"/\"; domain=\".mydomain.com\"");
- final CookieOrigin origin1 = new CookieOrigin("host", 80, "/", false);
- List cookies = cookiespec.parse(header, origin1);
- try {
- cookiespec.validate(cookies.get(0), origin1);
- Assert.fail("MalformedCookieException must have thrown");
- }
- catch(final MalformedCookieException expected) {
- }
- final CookieOrigin origin2 = new CookieOrigin("host2", 80, "/", false);
- header = new BasicHeader("Set-Cookie",
- "name=\"value\"; version=\"1\"; path=\"/\"; domain=\"host1\"");
- cookies = cookiespec.parse(header, origin2);
- try {
- cookiespec.validate(cookies.get(0), origin2);
- Assert.fail("MalformedCookieException must have thrown");
- }
- catch(final MalformedCookieException expected) {
- }
- }
-
- /**
- * Tests if cookie values with embedded comma are handled correctly.
- */
- @Test
- public void testCookieWithComma() throws Exception {
- final Header header = new BasicHeader("Set-Cookie", "a=b,c");
-
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("localhost", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertEquals("number of cookies", 2, cookies.size());
- Assert.assertEquals("a", cookies.get(0).getName());
- Assert.assertEquals("b", cookies.get(0).getValue());
- Assert.assertEquals("c", cookies.get(1).getName());
- Assert.assertEquals(null, cookies.get(1).getValue());
- }
-
- /**
- * Tests RFC 2109 compiant cookie formatting.
- */
- @Test
- public void testRFC2109CookieFormatting() throws Exception {
- final CookieSpec cookiespec = new RFC2109Spec(null, false);
- Header header = new BasicHeader("Set-Cookie",
- "name=\"value\"; version=1; path=\"/\"; domain=\".mydomain.com\"");
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
- List cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=1; name=\"value\"; $Path=\"/\"; $Domain=\".mydomain.com\"",
- headers.get(0).getValue());
-
- header = new BasicHeader( "Set-Cookie",
- "name=value; path=/; domain=.mydomain.com");
- cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=0; name=value; $Path=/; $Domain=.mydomain.com",
- headers.get(0).getValue());
- }
-
- @Test
- public void testRFC2109CookiesFormatting() throws Exception {
- final CookieSpec cookiespec = new RFC2109Spec(null, true);
- Header header = new BasicHeader("Set-Cookie",
- "name1=value1; path=/; domain=.mydomain.com, " +
- "name2=\"value2\"; version=\"1\"; path=\"/\"; domain=\".mydomain.com\"");
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
- List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(2, cookies.size());
- List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals(
- "$Version=0; name1=value1; $Path=/; $Domain=.mydomain.com; " +
- "name2=value2; $Path=/; $Domain=.mydomain.com",
- headers.get(0).getValue());
-
- header = new BasicHeader("Set-Cookie",
- "name1=value1; version=1; path=/; domain=.mydomain.com, " +
- "name2=\"value2\"; version=\"1\"; path=\"/\"; domain=\".mydomain.com\"");
- cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(2, cookies.size());
- headers = cookiespec.formatCookies(cookies);
- Assert.assertEquals(
- "$Version=1; name1=\"value1\"; $Path=\"/\"; $Domain=\".mydomain.com\"; " +
- "name2=\"value2\"; $Path=\"/\"; $Domain=\".mydomain.com\"",
- headers.get(0).getValue());
- }
-
- /**
- * Tests if null cookie values are handled correctly.
- */
- @Test
- public void testNullCookieValueFormatting() {
- final BasicClientCookie cookie = new BasicClientCookie("name", null);
- cookie.setDomain(".whatever.com");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, cookie.getDomain());
- cookie.setPath("/");
- cookie.setAttribute(ClientCookie.PATH_ATTR, cookie.getPath());
-
- final CookieSpec cookiespec = new RFC2109Spec();
- List cookies = new ArrayList<>();
- cookies.add(cookie);
- List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=0; name=; $Path=/; $Domain=.whatever.com",
- headers.get(0).getValue());
-
- cookie.setVersion(1);
- cookies = new ArrayList<>();
- cookies.add(cookie);
- headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=1; name=; $Path=\"/\"; $Domain=\".whatever.com\"",
- headers.get(0).getValue());
- }
-
- @Test
- public void testCookieNullDomainNullPathFormatting() {
- final BasicClientCookie cookie = new BasicClientCookie("name", null);
- cookie.setPath("/");
- cookie.setAttribute(ClientCookie.PATH_ATTR, cookie.getPath());
-
- final CookieSpec cookiespec = new RFC2109Spec();
- List cookies = new ArrayList<>();
- cookies.add(cookie);
- List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=0; name=; $Path=/", headers.get(0).getValue());
-
- cookie.removeAttribute(ClientCookie.DOMAIN_ATTR);
- cookie.removeAttribute(ClientCookie.PATH_ATTR);
- cookies = new ArrayList<>();
- cookies.add(cookie);
- headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=0; name=", headers.get(0).getValue());
- }
-
- @Test
- public void testCookieOrderingByPath() {
- final BasicClientCookie c1 = new BasicClientCookie("name1", "value1");
- c1.setPath("/a/b/c");
- c1.setAttribute(ClientCookie.PATH_ATTR, c1.getPath());
- final BasicClientCookie c2 = new BasicClientCookie("name2", "value2");
- c2.setPath("/a/b");
- c2.setAttribute(ClientCookie.PATH_ATTR, c2.getPath());
- final BasicClientCookie c3 = new BasicClientCookie("name3", "value3");
- c3.setPath("/a");
- c3.setAttribute(ClientCookie.PATH_ATTR, c3.getPath());
- final BasicClientCookie c4 = new BasicClientCookie("name4", "value4");
- c4.setPath("/");
- c4.setAttribute(ClientCookie.PATH_ATTR, c4.getPath());
-
- final CookieSpec cookiespec = new RFC2109Spec(null, true);
- final List cookies = new ArrayList<>();
- cookies.add(c2);
- cookies.add(c4);
- cookies.add(c1);
- cookies.add(c3);
- final List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=0; name1=value1; $Path=/a/b/c; " +
- "name2=value2; $Path=/a/b; " +
- "name3=value3; $Path=/a; " +
- "name4=value4; $Path=/", headers.get(0).getValue());
- }
-
- @Test(expected=MalformedCookieException.class)
- public void testVersion1CookieWithInvalidExpires() throws Exception {
- final CookieSpec cookiespec = new RFC2109Spec();
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
-
- final Header origHeader = new BasicHeader("Set-Cookie",
- "test=\"test\"; Version=1; Expires=Mon, 11-Feb-2013 10:39:19 GMT; Path=/");
- cookiespec.parse(origHeader, origin);
- }
-
- @Test
- public void testInvalidInput() throws Exception {
- final CookieSpec cookiespec = new RFC2109Spec();
- try {
- cookiespec.parse(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- cookiespec.parse(new BasicHeader("Set-Cookie", "name=value"), null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- cookiespec.validate(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- cookiespec.formatCookies(null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- final List cookies = new ArrayList<>();
- cookiespec.formatCookies(cookies);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- }
-
-}
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2965Spec.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2965Spec.java
deleted file mode 100644
index bb25530e5..000000000
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2965Spec.java
+++ /dev/null
@@ -1,1014 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-package org.apache.http.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.http.Header;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.message.BasicHeader;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * Test cases for RFC2965 cookie spec
- */
-public class TestCookieRFC2965Spec {
-
- /**
- * Test parsing cookie {@code "Path"} attribute.
- */
- @Test
- public void testParsePath() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Path=/;Version=1;Path=");
- final List cookies = cookiespec.parse(header, origin);
- Assert .assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- // only the first occurrence of path attribute is considered, others ignored
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("/", cookie.getPath());
- Assert.assertTrue(cookie.containsAttribute(ClientCookie.PATH_ATTR));
- }
-
- @Test
- public void testParsePathDefault() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/path/", false);
- // Path is OPTIONAL, defaults to the request path
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("/path", cookie.getPath());
- Assert.assertFalse(cookie.containsAttribute(ClientCookie.PATH_ATTR));
- }
-
- @Test
- public void testParseNullPath() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Path=;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("/", cookie.getPath());
- Assert.assertTrue(cookie.containsAttribute(ClientCookie.PATH_ATTR));
- }
-
- @Test
- public void testParseBlankPath() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Path=\" \";Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("/", cookie.getPath());
- Assert.assertTrue(cookie.containsAttribute(ClientCookie.PATH_ATTR));
- }
-
- /**
- * Test parsing cookie {@code "Domain"} attribute.
- */
- @Test
- public void testParseDomain() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- Header header = new BasicHeader("Set-Cookie2", "name=value;Domain=.domain.com;Version=1;Domain=");
- List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- // only the first occurrence of domain attribute is considered, others ignored
- ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals(".domain.com", cookie.getDomain());
- Assert.assertTrue(cookie.containsAttribute(ClientCookie.DOMAIN_ATTR));
-
- // should put a leading dot if there is no dot in front of domain
- header = new BasicHeader("Set-Cookie2", "name=value;Domain=domain.com;Version=1");
- cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals(".domain.com", cookie.getDomain());
- }
-
- @Test
- public void testParseDomainDefaultValue() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- // Domain is OPTIONAL, defaults to the request host
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("www.domain.com", cookie.getDomain());
- Assert.assertFalse(cookie.containsAttribute(ClientCookie.DOMAIN_ATTR));
- }
-
- @Test
- public void testParseNullDomain() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- // domain cannot be null
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Domain=;Version=1");
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testParseBlankDomain() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Domain=\" \";Version=1");
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- /**
- * Test parsing cookie {@code "Port"} attribute.
- */
- @Test
- public void testParsePort() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Port=\"80,800,8000\";Version=1;Port=nonsense");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- // only the first occurrence of port attribute is considered, others ignored
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- final int[] ports = cookie.getPorts();
- Assert.assertNotNull(ports);
- Assert.assertEquals(3, ports.length);
- Assert.assertEquals(80, ports[0]);
- Assert.assertEquals(800, ports[1]);
- Assert.assertEquals(8000, ports[2]);
- Assert.assertTrue(cookie.containsAttribute(ClientCookie.PORT_ATTR));
- }
-
- @Test
- public void testParsePortDefault() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- // Port is OPTIONAL, cookie can be accepted from any port
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertFalse(cookie.containsAttribute(ClientCookie.PORT_ATTR));
- }
-
- @Test
- public void testParseNullPort() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- // null port defaults to request port
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Port=;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- final int[] ports = cookie.getPorts();
- Assert.assertNotNull(ports);
- Assert.assertEquals(1, ports.length);
- Assert.assertEquals(80, ports[0]);
- Assert.assertEquals("", cookie.getAttribute(ClientCookie.PORT_ATTR));
- }
-
- @Test
- public void testParseBlankPort() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- // blank port defaults to request port
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Port=\" \";Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- final int[] ports = cookie.getPorts();
- Assert.assertNotNull(ports);
- Assert.assertEquals(1, ports.length);
- Assert.assertEquals(80, ports[0]);
- Assert.assertEquals(" ", cookie.getAttribute(ClientCookie.PORT_ATTR));
- }
-
- @Test
- public void testParseInvalidPort() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Port=nonsense;Version=1");
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testParseNegativePort() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Port=\"80,-800,8000\";Version=1");
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- /**
- * test parsing cookie name/value.
- */
- @Test
- public void testParseNameValue() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=1;");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("name", cookie.getName());
- Assert.assertEquals("value", cookie.getValue());
- }
-
- /**
- * test parsing cookie {@code "Version"} attribute.
- */
- @Test
- public void testParseVersion() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=1;");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals(1, cookie.getVersion());
- Assert.assertTrue(cookie.containsAttribute(ClientCookie.VERSION_ATTR));
- }
-
- @Test
- public void testParseNullVersion() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- // version cannot be null
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=;");
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testParseNegativeVersion() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=-1;");
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
- /**
- * test parsing cookie {@code "Max-age"} attribute.
- */
- @Test
- public void testParseMaxage() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Max-age=3600;Version=1;Max-age=nonsense");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- // only the first occurence of max-age attribute is considered, others ignored
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertFalse(cookie.isExpired(new Date()));
- }
-
- @Test
- public void testParseMaxageDefault() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- // Max-age is OPTIONAL, defaults to session cookie
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertFalse(cookie.isPersistent());
- }
-
- @Test
- public void testParseNullMaxage() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Max-age=;Version=1");
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testParseNegativeMaxage() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Max-age=-3600;Version=1;");
- try {
- cookiespec.parse(header, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- /**
- * test parsing {@code "Secure"} attribute.
- */
- @Test
- public void testParseSecure() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Secure;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertTrue(cookie.isSecure());
- }
-
- /**
- * test parsing {@code "Discard"} attribute.
- */
- @Test
- public void testParseDiscard() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- Header header = new BasicHeader("Set-Cookie2", "name=value;Discard;Max-age=36000;Version=1");
- List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- ClientCookie cookie = (ClientCookie) cookies.get(0);
- // discard overrides max-age
- Assert.assertFalse(cookie.isPersistent());
-
- // Discard is OPTIONAL, default behavior is dictated by max-age
- header = new BasicHeader("Set-Cookie2", "name=value;Max-age=36000;Version=1");
- cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- cookie = (ClientCookie) cookies.get(0);
- Assert.assertTrue(cookie.isPersistent());
- }
-
- /**
- * test parsing {@code "Comment"}, {@code "CommentURL"} and
- * {@code "Secure"} attributes.
- */
- @Test
- public void testParseOtherAttributes() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- Header header = new BasicHeader("Set-Cookie2", "name=value;Comment=\"good cookie\";" +
- "CommentURL=\"www.domain.com/goodcookie/\";Secure;Version=1");
- List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("good cookie", cookie.getComment());
- Assert.assertEquals("www.domain.com/goodcookie/", cookie.getCommentURL());
- Assert.assertTrue(cookie.isSecure());
-
- // Comment, CommentURL, Secure are OPTIONAL
- header = new BasicHeader("Set-Cookie2", "name=value;Version=1");
- cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- cookie = (ClientCookie) cookies.get(0);
- Assert.assertFalse(cookie.isSecure());
- }
-
- /**
- * Test parsing header with 2 cookies (separated by comma)
- */
- @Test
- public void testCookiesWithComma() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "a=b,c");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(2, cookies.size());
- Assert.assertEquals("a", cookies.get(0).getName());
- Assert.assertEquals("b", cookies.get(0).getValue());
- Assert.assertEquals("c", cookies.get(1).getName());
- Assert.assertEquals(null, cookies.get(1).getValue());
- }
-
- // ------------------------------------------------------- Test Cookie Validation
-
- /**
- * Test {@code Domain} validation when domain is not specified
- * in {@code Set-Cookie2} header.
- */
- @Test
- public void testValidateNoDomain() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- // cookie domain must string match request host
- Assert.assertEquals("www.domain.com", cookie.getDomain());
- }
-
- /**
- * Test {@code Domain} validation. Cookie domain attribute must have a
- * leading dot.
- */
- @Test
- public void testValidateDomainLeadingDot() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value;Domain=domain.com;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals(".domain.com", cookie.getDomain());
- }
-
- /**
- * Test {@code Domain} validation. Domain must have at least one embedded dot.
- */
- @Test
- public void testValidateDomainEmbeddedDot() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- CookieOrigin origin = new CookieOrigin("b.com", 80, "/", false);
- Header header = new BasicHeader("Set-Cookie2", "name=value; domain=.com; version=1");
- try {
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException expected) {}
-
- origin = new CookieOrigin("www.domain.com", 80, "/", false);
- header = new BasicHeader("Set-Cookie2", "name=value;Domain=domain.com;Version=1");
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- }
-
- /**
- * Test local {@code Domain} validation. Simple host names
- * (without any dots) are valid only when cookie domain is specified
- * as ".local".
- */
- @Test
- public void testValidateDomainLocal() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("simplehost", 80, "/", false);
- // when domain is specified as .local, simple host names are valid
- Header header = new BasicHeader("Set-Cookie2", "name=value; domain=.local; version=1");
- List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals(".local", cookie.getDomain());
-
- // when domain is NOT specified as .local, simple host names are invalid
- header = new BasicHeader("Set-Cookie2", "name=value; domain=domain.com; version=1");
- try {
- // since domain is not .local, this must Assert.fail
- cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException expected) {}
- }
-
- @Test
- public void testValidateDomainLocalhost() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("localhost", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value; version=1");
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("localhost.local", cookie.getDomain());
- }
-
- /**
- * Test {@code Domain} validation. Effective host name
- * must domain-match domain attribute.
- */
- @Test
- public void testValidateDomainEffectiveHost() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
-
- // cookie domain does not domain-match request host
- Header header = new BasicHeader("Set-Cookie2", "name=value; domain=.domain.com; version=1");
- try {
- final CookieOrigin origin = new CookieOrigin("www.domain.org", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException expected) {}
-
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- // cookie domain domain-matches request host
- header = new BasicHeader("Set-Cookie2", "name=value; domain=.domain.com; version=1");
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- }
-
- /**
- * Test local {@code Domain} validation.
- * Effective host name minus domain must not contain any dots.
- */
- @Test
- public void testValidateDomainIllegal() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("a.b.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie2", "name=value; domain=.domain.com; version=1");
- try {
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException expected) {}
- }
-
- /**
- * Test cookie {@code Path} validation. Cookie path attribute must path-match
- * request path.
- */
- @Test
- public void testValidatePath() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- Header header = new BasicHeader("Set-Cookie2", "name=value;path=/path;version=1");
- try {
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException expected) {}
-
- // path-matching is case-sensitive
- header = new BasicHeader("Set-Cookie2", "name=value;path=/Path;version=1");
- try {
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/path", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException expected) {}
-
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/path/path1", false);
- header = new BasicHeader("Set-Cookie2", "name=value;path=/path;version=1");
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- Assert.assertEquals("/path", cookies.get(0).getPath());
- }
-
- /**
- * Test cookie name validation.
- */
- @Test
- public void testValidateCookieName() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("127.0.0.1", 80, "/", false);
- // cookie name must not contain blanks
- Header header = new BasicHeader("Set-Cookie2", "invalid name=value; version=1");
- try {
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException expected) {}
-
- // cookie name must not start with '$'.
- header = new BasicHeader("Set-Cookie2", "$invalid_name=value; version=1");
- try {
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException expected) {}
-
- // valid name
- header = new BasicHeader("Set-Cookie2", "name=value; version=1");
- final List cookies = cookiespec.parse(header, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- Assert.assertEquals("name", cookie.getName());
- Assert.assertEquals("value", cookie.getValue());
- }
-
- /**
- * Test cookie {@code Port} validation. Request port must be in the
- * port attribute list.
- */
- @Test
- public void testValidatePort() throws Exception {
- final Header header = new BasicHeader("Set-Cookie2", "name=value; Port=\"80,800\"; version=1");
- final CookieSpec cookiespec = new RFC2965Spec();
- try {
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 8000, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException e) {}
-
- // valid port list
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
- final ClientCookie cookie = (ClientCookie) cookies.get(0);
- final int[] ports = cookie.getPorts();
- Assert.assertNotNull(ports);
- Assert.assertEquals(2, ports.length);
- Assert.assertEquals(80, ports[0]);
- Assert.assertEquals(800, ports[1]);
- }
-
- /**
- * Test cookie {@code Version} validation.
- */
- @Test
- public void testValidateVersion() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- // version attribute is REQUIRED
- final Header header = new BasicHeader("Set-Cookie2", "name=value");
- try {
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 8000, "/", false);
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException e) {}
- }
-
- // ------------------------------------------------------- Test Cookie Matching
-
- /**
- * test cookie {@code Path} matching. Cookie path attribute must path-match
- * path of the request URI.
- */
- @Test
- public void testMatchPath() throws Exception {
- final BasicClientCookie2 cookie = new BasicClientCookie2("name", "value");
- cookie.setDomain(".domain.com");
- cookie.setPath("/path");
- cookie.setPorts(new int[] {80});
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin1 = new CookieOrigin("www.domain.com", 80, "/", false);
- Assert.assertFalse(cookiespec.match(cookie, origin1));
- final CookieOrigin origin2 = new CookieOrigin("www.domain.com", 80, "/path/path1", false);
- Assert.assertTrue(cookiespec.match(cookie, origin2));
- }
-
- /**
- * test cookie {@code Domain} matching.
- */
- @Test
- public void testMatchDomain() throws Exception {
- final BasicClientCookie2 cookie = new BasicClientCookie2("name", "value");
- cookie.setDomain(".domain.com");
- cookie.setPath("/");
- cookie.setPorts(new int[] {80});
- final CookieSpec cookiespec = new RFC2965Spec();
- // effective host name minus domain must not contain any dots
- final CookieOrigin origin1 = new CookieOrigin("a.b.domain.com" /* request host */, 80, "/", false);
- Assert.assertFalse(cookiespec.match(cookie, origin1));
- // The effective host name MUST domain-match the Domain
- // attribute of the cookie.
- final CookieOrigin origin2 = new CookieOrigin("www.domain.org" /* request host */, 80, "/", false);
- Assert.assertFalse(cookiespec.match(cookie, origin2));
- final CookieOrigin origin3 = new CookieOrigin("www.domain.com" /* request host */, 80, "/", false);
- Assert.assertTrue(cookiespec.match(cookie, origin3));
- }
-
- /**
- * test cookie local {@code Domain} matching.
- */
- @Test
- public void testMatchDomainLocal() throws Exception {
- final BasicClientCookie2 cookie = new BasicClientCookie2("name", "value");
- cookie.setDomain(".local");
- cookie.setPath("/");
- cookie.setPorts(new int[] {80});
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin1 = new CookieOrigin("host" /* request host */, 80, "/", false);
- Assert.assertTrue(cookiespec.match(cookie, origin1));
- final CookieOrigin origin2 = new CookieOrigin("host.com" /* request host */, 80, "/", false);
- Assert.assertFalse(cookiespec.match(cookie, origin2));
- }
-
- /**
- * test cookie {@code Port} matching.
- */
- @Test
- public void testMatchPort() throws Exception {
- // cookie can be sent to any port if port attribute not specified
- BasicClientCookie2 cookie = new BasicClientCookie2("name", "value");
- cookie.setDomain(".domain.com");
- cookie.setPath("/");
- cookie.setPorts(null);
-
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin1 = new CookieOrigin("www.domain.com", 8080 /* request port */, "/", false);
- Assert.assertTrue(cookiespec.match(cookie, origin1));
- final CookieOrigin origin2 = new CookieOrigin("www.domain.com", 323 /* request port */, "/", false);
- Assert.assertTrue(cookiespec.match(cookie, origin2));
-
- // otherwise, request port must be in cookie's port list
- cookie = new BasicClientCookie2("name", "value");
- cookie.setDomain(".domain.com");
- cookie.setPath("/");
- cookie.setPorts(new int[] {80, 8080});
- cookie.setAttribute(ClientCookie.PORT_ATTR, "80, 8080");
- final CookieOrigin origin3 = new CookieOrigin("www.domain.com", 434 /* request port */, "/", false);
- Assert.assertFalse(cookiespec.match(cookie, origin3));
- final CookieOrigin origin4 = new CookieOrigin("www.domain.com", 8080 /* request port */, "/", false);
- Assert.assertTrue(cookiespec.match(cookie, origin4));
- }
-
- /**
- * test cookie expiration.
- */
- @Test
- public void testCookieExpiration() throws Exception {
- final Date now = new Date();
-
- final Date beforeOneHour = new Date(now.getTime() - 3600 * 1000L);
- BasicClientCookie2 cookie = new BasicClientCookie2("name", "value");
- cookie.setDomain(".domain.com");
- cookie.setPath("/");
- cookie.setPorts(null);
- cookie.setExpiryDate(beforeOneHour);
-
- Assert.assertTrue(cookie.isExpired(now));
-
- final Date afterOneHour = new Date(now.getTime() + 3600 * 1000L);
- cookie = new BasicClientCookie2("name", "value");
- cookie.setDomain(".domain.com");
- cookie.setPath("/");
- cookie.setPorts(null);
- cookie.setExpiryDate(afterOneHour);
-
- Assert.assertFalse(cookie.isExpired(now));
-
- // discard attributes overrides cookie age, makes it a session cookie.
- cookie.setDiscard(true);
- Assert.assertFalse(cookie.isPersistent());
- Assert.assertTrue(cookie.isExpired(now));
- }
-
- /**
- * test cookie {@code Secure} attribute.
- */
- @Test
- public void testCookieSecure() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- // secure cookie can only be sent over a secure connection
- final BasicClientCookie2 cookie = new BasicClientCookie2("name", "value");
- cookie.setDomain(".domain.com");
- cookie.setPath("/");
- cookie.setSecure(true);
- final CookieOrigin origin1 = new CookieOrigin("www.domain.com", 80, "/", false);
- Assert.assertFalse(cookiespec.match(cookie, origin1));
- final CookieOrigin origin2 = new CookieOrigin("www.domain.com", 80, "/", true);
- Assert.assertTrue(cookiespec.match(cookie, origin2));
- }
-
- // ------------------------------------------------------- Test Cookie Formatting
-
- /**
- * Tests RFC 2965 compliant cookie formatting.
- */
- @Test
- public void testRFC2965CookieFormatting() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec(null, true);
- final BasicClientCookie2 cookie1 = new BasicClientCookie2("name1", "value");
- cookie1.setDomain(".domain.com");
- cookie1.setPath("/");
- cookie1.setPorts(new int[] {80,8080});
- cookie1.setVersion(1);
- // domain, path, port specified
- cookie1.setAttribute(ClientCookie.DOMAIN_ATTR, ".domain.com");
- cookie1.setAttribute(ClientCookie.PATH_ATTR, "/");
- cookie1.setAttribute(ClientCookie.PORT_ATTR, "80,8080");
-
- List cookies = new ArrayList<>();
- cookies.add(cookie1);
- List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=1; name1=\"value\"; $Path=\"/\"; $Domain=\".domain.com\"; $Port=\"80,8080\"",
- headers.get(0).getValue());
-
-
- final BasicClientCookie2 cookie2 = new BasicClientCookie2("name2", "value");
- cookie2.setDomain(".domain.com");
- cookie2.setPath("/a/");
- cookie2.setPorts(new int[] {80,8080});
- cookie2.setVersion(2);
- // domain, path specified but port unspecified
- cookie2.setAttribute(ClientCookie.DOMAIN_ATTR, ".domain.com");
- cookie2.setAttribute(ClientCookie.PATH_ATTR, "/a/");
-
- cookies = new ArrayList<>();
- cookies.add(cookie2);
- headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=2; name2=\"value\"; $Path=\"/a/\"; $Domain=\".domain.com\"",
- headers.get(0).getValue());
-
- final BasicClientCookie2 cookie3 = new BasicClientCookie2("name3", "value");
- cookie3.setDomain(".domain.com");
- cookie3.setPath("/a/b/");
- cookie3.setPorts(new int[] {80,8080});
- cookie3.setVersion(1);
- // path specified, port specified but blank, domain unspecified
- cookie3.setAttribute(ClientCookie.PATH_ATTR, "/a/b/");
- cookie3.setAttribute(ClientCookie.PORT_ATTR, " ");
-
- cookies = new ArrayList<>();
- cookies.add(cookie3);
- headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=1; name3=\"value\"; $Path=\"/a/b/\"; $Port=\"\"",
- headers.get(0).getValue());
-
- cookies = new ArrayList<>();
- cookies.add(cookie3);
- cookies.add(cookie2);
- cookies.add(cookie1);
- headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- Assert.assertEquals("$Version=1; " +
- "name3=\"value\"; $Path=\"/a/b/\"; $Port=\"\"; " +
- "name2=\"value\"; $Path=\"/a/\"; $Domain=\".domain.com\"; " +
- "name1=\"value\"; $Path=\"/\"; $Domain=\".domain.com\"; $Port=\"80,8080\"",
- headers.get(0).getValue());
- }
-
- /**
- * Tests RFC 2965 compliant cookies formatting.
- */
- @Test
- public void testRFC2965CookiesFormatting() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec(null, true);
- final BasicClientCookie2 cookie1 = new BasicClientCookie2("name1", "value1");
- cookie1.setDomain(".domain.com");
- cookie1.setPath("/");
- cookie1.setPorts(new int[] {80,8080});
- cookie1.setVersion(1);
- // domain, path, port specified
- cookie1.setAttribute(ClientCookie.DOMAIN_ATTR, ".domain.com");
- cookie1.setAttribute(ClientCookie.PATH_ATTR, "/");
- cookie1.setAttribute(ClientCookie.PORT_ATTR, "80,8080");
-
- final BasicClientCookie2 cookie2 = new BasicClientCookie2("name2", "");
- cookie2.setDomain(".domain.com");
- cookie2.setPath("/");
- cookie2.setPorts(new int[] {80,8080});
- cookie2.setVersion(1);
- // value null, domain, path specified
- cookie2.setAttribute(ClientCookie.DOMAIN_ATTR, ".domain.com");
- cookie2.setAttribute(ClientCookie.PATH_ATTR, "/");
-
- final List cookies = new ArrayList<>();
- cookies.add(cookie1);
- cookies.add(cookie2);
- final List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
-
- Assert.assertEquals("$Version=1; name1=\"value1\"; $Path=\"/\"; $Domain=\".domain.com\"; $Port=\"80,8080\"; " +
- "name2=\"\"; $Path=\"/\"; $Domain=\".domain.com\"",
- headers.get(0).getValue());
- }
-
- // ------------------------------------------------------- Backward compatibility tests
-
- /**
- * Test rejection of {@code Set-Cookie} header.
- */
- @Test
- public void testRejectSetCookie() throws Exception {
- final CookieSpec cookiespec = new RFC2965Spec();
- final CookieOrigin origin = new CookieOrigin("www.domain.com", 80, "/", false);
- final Header header = new BasicHeader("Set-Cookie", "name=value; domain=.domain.com; version=1");
- try {
- cookiespec.parse(header, origin);
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
-}
-
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestDefaultCookieSpec.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestDefaultCookieSpec.java
deleted file mode 100644
index 2018f4db2..000000000
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestDefaultCookieSpec.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.http.Header;
-import org.apache.http.cookie.ClientCookie;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.MalformedCookieException;
-import org.apache.http.cookie.SetCookie2;
-import org.apache.http.message.BasicHeader;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * Test cases for 'best match' cookie policy
- */
-public class TestDefaultCookieSpec {
-
- @Test
- public void testCookieBrowserCompatParsing() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- final CookieOrigin origin = new CookieOrigin("a.b.domain.com", 80, "/", false);
-
- // Make sure the lenient (browser compatible) cookie parsing
- // and validation is used for Netscape style cookies
- final Header header = new BasicHeader("Set-Cookie", "name=value;path=/;domain=domain.com");
-
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
- }
-
- @Test
- public void testNetscapeCookieParsing() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
-
- Header header = new BasicHeader("Set-Cookie",
- "name=value; path=/; domain=.mydomain.com; expires=Thu, 01-Jan-2070 00:00:10 GMT; comment=no_comment");
- List cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- Assert.assertEquals(1, cookies.size());
- header = new BasicHeader("Set-Cookie",
- "name=value; path=/; domain=.mydomain.com; expires=Thu, 01-Jan-2070 00:00:10 GMT; version=1");
- cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- Assert.assertEquals(1, cookies.size());
- }
-
- @Test
- public void testCookieStandardCompliantParsing() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- final CookieOrigin origin = new CookieOrigin("a.b.domain.com", 80, "/", false);
-
- // Make sure the strict (RFC2965) cookie parsing
- // and validation is used for version 1 Set-Cookie2 headers
- Header header = new BasicHeader("Set-Cookie2", "name=value;path=/;domain=b.domain.com; version=1");
-
- List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
-
- // Make sure the strict (RFC2109) cookie parsing
- // and validation is used for version 1 Set-Cookie headers
- header = new BasicHeader("Set-Cookie", "name=value;path=/;domain=.b.domain.com; version=1");
-
- cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- cookiespec.validate(cookies.get(i), origin);
- }
-
- header = new BasicHeader("Set-Cookie2", "name=value;path=/;domain=domain.com; version=1");
- try {
- cookies = cookiespec.parse(header, origin);
- cookiespec.validate(cookies.get(0), origin);
- Assert.fail("MalformedCookieException exception should have been thrown");
- } catch (final MalformedCookieException e) {
- // expected
- }
- }
-
- @Test
- public void testCookieStandardCompliantParsingLocalHost() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- final CookieOrigin origin = new CookieOrigin("localhost", 80, "/", false);
-
- final Header header = new BasicHeader("Set-Cookie", "special=\"abcdigh\"; Version=1");
-
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- final Cookie cookie = cookies.get(i);
- cookiespec.validate(cookie, origin);
- Assert.assertEquals("localhost", cookie.getDomain());
- Assert.assertFalse(cookie instanceof SetCookie2);
- }
- }
-
- @Test
- public void testCookieStandardCompliantParsingLocalHost2() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- final CookieOrigin origin = new CookieOrigin("localhost", 80, "/", false);
-
- final Header header = new BasicHeader("Set-Cookie2", "special=\"abcdigh\"; Version=1");
-
- final List cookies = cookiespec.parse(header, origin);
- for (int i = 0; i < cookies.size(); i++) {
- final Cookie cookie = cookies.get(i);
- cookiespec.validate(cookie, origin);
- Assert.assertEquals("localhost.local", cookie.getDomain());
- Assert.assertTrue(cookie instanceof SetCookie2);
- }
- }
-
- @Test
- public void testCookieBrowserCompatMatch() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- final CookieOrigin origin = new CookieOrigin("a.b.domain.com", 80, "/", false);
-
- // Make sure the lenient (browser compatible) cookie matching
- // is used for Netscape style cookies
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- cookie.setDomain(".domain.com");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, cookie.getDomain());
- cookie.setPath("/");
- cookie.setAttribute(ClientCookie.PATH_ATTR, cookie.getPath());
-
- Assert.assertTrue(cookiespec.match(cookie, origin));
- }
-
- @Test
- public void testCookieStandardCompliantMatch() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- final CookieOrigin origin = new CookieOrigin("a.b.domain.com", 80, "/", false);
-
- // Make sure the strict (RFC2965) cookie matching
- // is used for version 1 cookies
- final BasicClientCookie2 cookie = new BasicClientCookie2("name", "value");
- cookie.setVersion(1);
- cookie.setDomain(".domain.com");
- cookie.setAttribute(ClientCookie.DOMAIN_ATTR, cookie.getDomain());
- cookie.setPath("/");
- cookie.setAttribute(ClientCookie.PATH_ATTR, cookie.getPath());
-
- Assert.assertFalse(cookiespec.match(cookie, origin));
-
- cookie.setDomain(".b.domain.com");
-
- Assert.assertTrue(cookiespec.match(cookie, origin));
- }
-
- @Test
- public void testCookieBrowserCompatFormatting() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
-
- // Make sure the lenient (browser compatible) cookie formatting
- // is used for Netscape style cookies
- final BasicClientCookie cookie1 = new BasicClientCookie("name1", "value1");
- cookie1.setDomain(".domain.com");
- cookie1.setAttribute(ClientCookie.DOMAIN_ATTR, cookie1.getDomain());
- cookie1.setPath("/");
- cookie1.setAttribute(ClientCookie.PATH_ATTR, cookie1.getPath());
-
- final BasicClientCookie cookie2 = new BasicClientCookie("name2", "value2");
- cookie2.setVersion(1);
- cookie2.setDomain(".domain.com");
- cookie2.setAttribute(ClientCookie.DOMAIN_ATTR, cookie2.getDomain());
- cookie2.setPath("/");
- cookie2.setAttribute(ClientCookie.PATH_ATTR, cookie2.getPath());
-
- final List cookies = new ArrayList<>();
- cookies.add(cookie1);
- cookies.add(cookie2);
-
- final List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
-
- final Header header = headers.get(0);
- Assert.assertEquals("name1=value1; name2=value2", header.getValue());
-
- }
-
- @Test
- public void testCookieStandardCompliantFormatting() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec(null, true);
-
- // Make sure the strict (RFC2965) cookie formatting
- // is used for Netscape style cookies
- final BasicClientCookie cookie1 = new BasicClientCookie("name1", "value1");
- cookie1.setVersion(1);
- cookie1.setDomain(".domain.com");
- cookie1.setAttribute(ClientCookie.DOMAIN_ATTR, cookie1.getDomain());
- cookie1.setPath("/");
- cookie1.setAttribute(ClientCookie.PATH_ATTR, cookie1.getPath());
-
- final BasicClientCookie cookie2 = new BasicClientCookie("name2", "value2");
- cookie2.setVersion(1);
- cookie2.setDomain(".domain.com");
- cookie2.setAttribute(ClientCookie.DOMAIN_ATTR, cookie2.getDomain());
- cookie2.setPath("/");
- cookie2.setAttribute(ClientCookie.PATH_ATTR, cookie2.getPath());
-
- final List cookies = new ArrayList<>();
- cookies.add(cookie1);
- cookies.add(cookie2);
-
- final List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
-
- final Header header = headers.get(0);
- Assert.assertEquals("$Version=1; name1=\"value1\"; $Path=\"/\"; $Domain=\".domain.com\"; " +
- "name2=\"value2\"; $Path=\"/\"; $Domain=\".domain.com\"",
- header.getValue());
-
- }
-
- @Test
- public void testInvalidInput() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- try {
- cookiespec.parse(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- cookiespec.parse(new BasicHeader("Set-Cookie", "name=value"), null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- cookiespec.formatCookies(null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- final List cookies = new ArrayList<>();
- cookiespec.formatCookies(cookies);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- }
-
- @Test
- public void testVersion1CookieWithInvalidExpires() throws Exception {
- final CookieSpec cookiespec = new DefaultCookieSpec();
- final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
-
- final Header origHeader = new BasicHeader("Set-Cookie",
- "test=\"test\"; Version=1; Expires=Mon, 11-Feb-2013 10:39:19 GMT; Path=/");
- final List cookies = cookiespec.parse(origHeader, origin);
- Assert.assertNotNull(cookies);
- Assert.assertEquals(1, cookies.size());
-
- final List headers = cookiespec.formatCookies(cookies);
- Assert.assertNotNull(headers);
- Assert.assertEquals(1, headers.size());
- final Header header1 = headers.get(0);
- Assert.assertEquals("test=\"test\"", header1.getValue());
- }
-
-}
-
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestNetscapeCookieAttribHandlers.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestNetscapeCookieAttribHandlers.java
deleted file mode 100644
index f0c8bf387..000000000
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestNetscapeCookieAttribHandlers.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TestNetscapeCookieAttribHandlers {
-
- @Test
- public void testNetscapeDomainValidate1() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("somehost", 80, "/", false);
- final CookieAttributeHandler h = new NetscapeDomainHandler();
-
- cookie.setDomain("somehost");
- h.validate(cookie, origin);
-
- cookie.setDomain("otherhost");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testNetscapeDomainValidate2() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new NetscapeDomainHandler();
-
- cookie.setDomain(".somedomain.com");
- h.validate(cookie, origin);
-
- cookie.setDomain(".otherdomain.com");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- cookie.setDomain("www.otherdomain.com");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testNetscapeDomainValidate3() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.a.com", 80, "/", false);
- final CookieAttributeHandler h = new NetscapeDomainHandler();
-
- cookie.setDomain(".a.com");
- h.validate(cookie, origin);
-
- cookie.setDomain(".com");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testNetscapeDomainValidate4() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.a.b.c", 80, "/", false);
- final CookieAttributeHandler h = new NetscapeDomainHandler();
-
- cookie.setDomain(".a.b.c");
- h.validate(cookie, origin);
-
- cookie.setDomain(".b.c");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testNetscapeDomainMatch1() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new NetscapeDomainHandler();
-
- cookie.setDomain(null);
- Assert.assertFalse(h.match(cookie, origin));
-
- cookie.setDomain(".somedomain.com");
- Assert.assertTrue(h.match(cookie, origin));
- }
-
- @Test
- public void testNetscapeDomainMatch2() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.whatever.somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new NetscapeDomainHandler();
-
- cookie.setDomain(".somedomain.com");
- Assert.assertTrue(h.match(cookie, origin));
- }
-
- @Test
- public void testNetscapeDomainInvalidInput() throws Exception {
- final CookieAttributeHandler h = new NetscapeDomainHandler();
- try {
- h.match(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- h.match(new BasicClientCookie("name", "value"), null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- }
-
-}
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestNetscapeDraftHeaderParser.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestNetscapeDraftHeaderParser.java
deleted file mode 100644
index 6e5a1bcec..000000000
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestNetscapeDraftHeaderParser.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.HeaderElement;
-import org.apache.http.NameValuePair;
-import org.apache.http.message.ParserCursor;
-import org.apache.http.util.CharArrayBuffer;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * Unit tests for {@link NetscapeDraftHeaderParser}.
- */
-public class TestNetscapeDraftHeaderParser {
-
- @Test
- public void testNetscapeCookieParsing() throws Exception {
- final NetscapeDraftHeaderParser parser = NetscapeDraftHeaderParser.DEFAULT;
-
- String s = "name = value; test; test1 = stuff,with,commas ;" +
- " test2 = \"stuff, stuff\"; test3=\"stuff";
- CharArrayBuffer buffer = new CharArrayBuffer(16);
- buffer.append(s);
- ParserCursor cursor = new ParserCursor(0, s.length());
-
- HeaderElement he = parser.parseHeader(buffer, cursor);
- Assert.assertEquals("name", he.getName());
- Assert.assertEquals("value", he.getValue());
- final NameValuePair[] params = he.getParameters();
- Assert.assertEquals("test", params[0].getName());
- Assert.assertEquals(null, params[0].getValue());
- Assert.assertEquals("test1", params[1].getName());
- Assert.assertEquals("stuff,with,commas", params[1].getValue());
- Assert.assertEquals("test2", params[2].getName());
- Assert.assertEquals("\"stuff, stuff\"", params[2].getValue());
- Assert.assertEquals("test3", params[3].getName());
- Assert.assertEquals("\"stuff", params[3].getValue());
- Assert.assertEquals(s.length(), cursor.getPos());
- Assert.assertTrue(cursor.atEnd());
-
- s = " ";
- buffer = new CharArrayBuffer(16);
- buffer.append(s);
- cursor = new ParserCursor(0, s.length());
- he = parser.parseHeader(buffer, cursor);
- Assert.assertEquals("", he.getName());
- Assert.assertEquals(null, he.getValue());
- }
-
-}
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestPublicSuffixListParser.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestPublicSuffixListParser.java
index 86dded928..852871159 100644
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestPublicSuffixListParser.java
+++ b/httpclient/src/test/java/org/apache/http/impl/cookie/TestPublicSuffixListParser.java
@@ -33,6 +33,7 @@ import java.io.InputStreamReader;
import org.apache.http.Consts;
import org.apache.http.conn.util.PublicSuffixList;
import org.apache.http.conn.util.PublicSuffixMatcher;
+import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
import org.junit.Assert;
import org.junit.Before;
@@ -57,13 +58,14 @@ public class TestPublicSuffixListParser {
in.close();
}
final PublicSuffixMatcher matcher = new PublicSuffixMatcher(suffixList.getRules(), suffixList.getExceptions());
- this.filter = new PublicSuffixDomainFilter(new RFC2109DomainHandler(), matcher);
+ this.filter = new PublicSuffixDomainFilter(new BasicDomainHandler(), matcher);
}
@Test
public void testParse() throws Exception {
final BasicClientCookie cookie = new BasicClientCookie("name", "value");
+ cookie.setAttribute(Cookie.DOMAIN_ATTR, ".jp");
cookie.setDomain(".jp");
Assert.assertFalse(filter.match(cookie, new CookieOrigin("apache.jp", 80, "/stuff", false)));
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestRFC2109CookieAttribHandlers.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestRFC2109CookieAttribHandlers.java
deleted file mode 100644
index fe53212fe..000000000
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestRFC2109CookieAttribHandlers.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- *
- */
-
-package org.apache.http.impl.cookie;
-
-import org.apache.http.cookie.CookieAttributeHandler;
-import org.apache.http.cookie.CookieOrigin;
-import org.apache.http.cookie.MalformedCookieException;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TestRFC2109CookieAttribHandlers {
-
- @Test
- public void testRFC2109DomainParse() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- h.parse(cookie, "somehost");
- Assert.assertEquals("somehost", cookie.getDomain());
-
- try {
- h.parse(cookie, null);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- try {
- h.parse(cookie, " ");
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testRFC2109DomainValidate1() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("somehost", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- cookie.setDomain("somehost");
- h.validate(cookie, origin);
-
- cookie.setDomain("otherhost");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- cookie.setDomain(null);
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testRFC2109DomainValidate2() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- cookie.setDomain(".somedomain.com");
- h.validate(cookie, origin);
-
- cookie.setDomain(".otherdomain.com");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- cookie.setDomain("www.otherdomain.com");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testRFC2109DomainValidate3() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.a.com", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- cookie.setDomain(".a.com");
- h.validate(cookie, origin);
-
- cookie.setDomain(".com");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testRFC2109DomainValidate4() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.a.b.c", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- cookie.setDomain(".a.b.c");
- h.validate(cookie, origin);
-
- cookie.setDomain(".b.c");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- cookie.setDomain(".a.a.b.c");
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException should have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testRFC2109DomainMatch1() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- cookie.setDomain(null);
- Assert.assertFalse(h.match(cookie, origin));
-
- cookie.setDomain(".somedomain.com");
- Assert.assertTrue(h.match(cookie, origin));
- }
-
- @Test
- public void testRFC2109DomainMatch2() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.whatever.somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- cookie.setDomain(".somedomain.com");
- Assert.assertTrue(h.match(cookie, origin));
- }
-
- @Test
- public void testRFC2109DomainMatch3() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- cookie.setDomain("somedomain.com");
- Assert.assertTrue(h.match(cookie, origin));
- }
-
- @Test
- public void testRFC2109DomainMatch4() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("www.somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109DomainHandler();
-
- cookie.setDomain("somedomain.com");
- Assert.assertFalse(h.match(cookie, origin));
- }
-
- @Test
- public void testRFC2109DomainInvalidInput() throws Exception {
- final CookieAttributeHandler h = new RFC2109DomainHandler();
- try {
- h.parse(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- h.validate(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- h.validate(new BasicClientCookie("name", "value"), null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- h.match(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- h.match(new BasicClientCookie("name", "value"), null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- }
-
- @Test
- public void testRFC2109VersionParse() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieAttributeHandler h = new RFC2109VersionHandler();
- h.parse(cookie, "12");
- Assert.assertEquals(12, cookie.getVersion());
- }
-
- @Test
- public void testRFC2109VersionParseInvalid() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieAttributeHandler h = new RFC2109VersionHandler();
- try {
- h.parse(cookie, "garbage");
- Assert.fail("MalformedCookieException must have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- try {
- h.parse(cookie, null);
- Assert.fail("MalformedCookieException must have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- try {
- h.parse(cookie, " ");
- Assert.fail("MalformedCookieException must have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testRFC2109VersionValidate() throws Exception {
- final BasicClientCookie cookie = new BasicClientCookie("name", "value");
- final CookieOrigin origin = new CookieOrigin("somedomain.com", 80, "/", false);
- final CookieAttributeHandler h = new RFC2109VersionHandler();
-
- cookie.setVersion(12);
- h.validate(cookie, origin);
-
- cookie.setVersion(-12);
- try {
- h.validate(cookie, origin);
- Assert.fail("MalformedCookieException must have been thrown");
- } catch (final MalformedCookieException ex) {
- // expected
- }
- }
-
- @Test
- public void testRFC2109VersionInvalidInput() throws Exception {
- final CookieAttributeHandler h = new RFC2109VersionHandler();
- try {
- h.parse(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- try {
- h.validate(null, null);
- Assert.fail("IllegalArgumentException must have been thrown");
- } catch (final IllegalArgumentException ex) {
- // expected
- }
- }
-
-}
diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestRFC6265CookieSpec.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestRFC6265CookieSpec.java
index 82e97a467..c4ada65a2 100644
--- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestRFC6265CookieSpec.java
+++ b/httpclient/src/test/java/org/apache/http/impl/cookie/TestRFC6265CookieSpec.java
@@ -31,7 +31,6 @@ import java.util.Arrays;
import java.util.List;
import org.apache.http.Header;
-import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.CommonCookieAttributeHandler;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
@@ -63,10 +62,8 @@ public class TestRFC6265CookieSpec {
Assert.assertEquals("value", cookie.getValue());
Assert.assertEquals("/path", cookie.getPath());
Assert.assertEquals("host", cookie.getDomain());
- Assert.assertTrue(cookie instanceof ClientCookie);
- final ClientCookie clientCookie = (ClientCookie) cookie;
- Assert.assertEquals("stuff", clientCookie.getAttribute("this"));
- Assert.assertEquals(null, clientCookie.getAttribute("that"));
+ Assert.assertEquals("stuff", cookie.getAttribute("this"));
+ Assert.assertEquals(null, cookie.getAttribute("that"));
Mockito.verify(h1).parse(Mockito.any(), Mockito.eq("stuff"));
Mockito.verify(h2, Mockito.never()).parse(Mockito.any(), Mockito.anyString());
@@ -84,9 +81,7 @@ public class TestRFC6265CookieSpec {
final Cookie cookie = cookies.get(0);
Assert.assertEquals("name", cookie.getName());
Assert.assertEquals(" one, two, three; four ", cookie.getValue());
- Assert.assertTrue(cookie instanceof ClientCookie);
- final ClientCookie clientCookie = (ClientCookie) cookie;
- Assert.assertEquals("stuff", clientCookie.getAttribute("this"));
+ Assert.assertEquals("stuff", cookie.getAttribute("this"));
}
@Test(expected = MalformedCookieException.class)
@@ -155,13 +150,11 @@ public class TestRFC6265CookieSpec {
final Cookie cookie = cookies.get(0);
Assert.assertEquals("name", cookie.getName());
Assert.assertEquals("value", cookie.getValue());
- Assert.assertTrue(cookie instanceof ClientCookie);
- final ClientCookie clientCookie = (ClientCookie) cookie;
- Assert.assertEquals("v", clientCookie.getAttribute("p1"));
- Assert.assertEquals("v,0", clientCookie.getAttribute("p2"));
- Assert.assertTrue(clientCookie.containsAttribute("p3"));
- Assert.assertTrue(clientCookie.containsAttribute("p4"));
- Assert.assertFalse(clientCookie.containsAttribute("p5"));
+ Assert.assertEquals("v", cookie.getAttribute("p1"));
+ Assert.assertEquals("v,0", cookie.getAttribute("p2"));
+ Assert.assertTrue(cookie.containsAttribute("p3"));
+ Assert.assertTrue(cookie.containsAttribute("p4"));
+ Assert.assertFalse(cookie.containsAttribute("p5"));
}
@Test
@@ -181,9 +174,7 @@ public class TestRFC6265CookieSpec {
final Cookie cookie = cookies.get(0);
Assert.assertEquals("name", cookie.getName());
Assert.assertEquals("value", cookie.getValue());
- Assert.assertTrue(cookie instanceof ClientCookie);
- final ClientCookie clientCookie = (ClientCookie) cookie;
- Assert.assertEquals("v", clientCookie.getAttribute("p1"));
+ Assert.assertEquals("v", cookie.getAttribute("p1"));
}
@Test
@@ -203,9 +194,7 @@ public class TestRFC6265CookieSpec {
final Cookie cookie = cookies.get(0);
Assert.assertEquals("name", cookie.getName());
Assert.assertEquals("value", cookie.getValue());
- Assert.assertTrue(cookie instanceof ClientCookie);
- final ClientCookie clientCookie = (ClientCookie) cookie;
- Assert.assertEquals("", clientCookie.getAttribute("p1"));
+ Assert.assertEquals("", cookie.getAttribute("p1"));
}
@Test
@@ -267,14 +256,6 @@ public class TestRFC6265CookieSpec {
Mockito.verify(h2, Mockito.never()).match(cookie, origin);
}
- @Test
- public void testLegacy() throws Exception {
- final RFC6265CookieSpec cookiespec = new RFC6265CookieSpec();
-
- Assert.assertEquals(0, cookiespec.getVersion());
- Assert.assertEquals(null, cookiespec.getVersionHeader());
- }
-
@Test
public void testFormatCookiesBasics() throws Exception {
final Cookie cookie1 = new BasicClientCookie("name1", "value");