You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2014/08/22 14:35:14 UTC

svn commit: r1619780 - in /httpcomponents/httpclient/trunk/httpclient/src: main/java/org/apache/http/impl/cookie/ test/java/org/apache/http/impl/cookie/

Author: olegk
Date: Fri Aug 22 12:35:14 2014
New Revision: 1619780

URL: http://svn.apache.org/r1619780
Log:
BestMatchSpec to use Netscape policy instead of browser compatibility for netscape style cookies; browser compatibility policy is to be deprecated

Modified:
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java
    httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieBestMatchSpec.java

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java?rev=1619780&r1=1619779&r2=1619780&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java Fri Aug 22 12:35:14 2014
@@ -58,7 +58,7 @@ public class BestMatchSpec implements Co
     // Cached values of CookieSpec instances
     private RFC2965Spec strict; // @NotThreadSafe
     private RFC2109Spec obsoleteStrict; // @NotThreadSafe
-    private BrowserCompatSpec compat; // @NotThreadSafe
+    private NetscapeDraftSpec netscape; // @NotThreadSafe
 
     public BestMatchSpec(final String[] datepatterns, final boolean oneHeader) {
         super();
@@ -84,11 +84,11 @@ public class BestMatchSpec implements Co
         return obsoleteStrict;
     }
 
-    private BrowserCompatSpec getCompat() {
-        if (this.compat == null) {
-            this.compat = new BrowserCompatSpec(this.datepatterns);
+    private NetscapeDraftSpec getNetscapeCompat() {
+        if (this.netscape == null) {
+            this.netscape = new NetscapeDraftSpec(false, this.datepatterns);
         }
-        return compat;
+        return netscape;
     }
 
     @Override
@@ -129,7 +129,7 @@ public class BestMatchSpec implements Co
                 cursor = new ParserCursor(0, buffer.length());
             }
             helems = new HeaderElement[] { parser.parseHeader(buffer, cursor) };
-            return getCompat().parse(helems, origin);
+            return getNetscapeCompat().parse(helems, origin);
         } else {
             if (SM.SET_COOKIE2.equals(header.getName())) {
                 return getStrict().parse(helems, origin);
@@ -152,7 +152,7 @@ public class BestMatchSpec implements Co
                 getObsoleteStrict().validate(cookie, origin);
             }
         } else {
-            getCompat().validate(cookie, origin);
+            getNetscapeCompat().validate(cookie, origin);
         }
     }
 
@@ -167,7 +167,7 @@ public class BestMatchSpec implements Co
                 return getObsoleteStrict().match(cookie, origin);
             }
         } else {
-            return getCompat().match(cookie, origin);
+            return getNetscapeCompat().match(cookie, origin);
         }
     }
 
@@ -191,7 +191,7 @@ public class BestMatchSpec implements Co
                 return getObsoleteStrict().formatCookies(cookies);
             }
         } else {
-            return getCompat().formatCookies(cookies);
+            return getNetscapeCompat().formatCookies(cookies);
         }
     }
 

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java?rev=1619780&r1=1619779&r2=1619780&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java Fri Aug 22 12:35:14 2014
@@ -59,8 +59,7 @@ public class NetscapeDraftSpec extends C
 
     private final String[] datepatterns;
 
-    /** Default constructor */
-    public NetscapeDraftSpec(final String[] datepatterns) {
+    NetscapeDraftSpec(final boolean strictDomainValidation, final String[] datepatterns) {
         super();
         if (datepatterns != null) {
             this.datepatterns = datepatterns.clone();
@@ -68,14 +67,18 @@ public class NetscapeDraftSpec extends C
             this.datepatterns = new String[] { EXPIRES_PATTERN };
         }
         registerAttribHandler(ClientCookie.PATH_ATTR, new BasicPathHandler());
-        registerAttribHandler(ClientCookie.DOMAIN_ATTR, new NetscapeDomainHandler());
+        registerAttribHandler(ClientCookie.DOMAIN_ATTR,
+                strictDomainValidation ? new NetscapeDomainHandler() : new BasicDomainHandler());
         registerAttribHandler(ClientCookie.SECURE_ATTR, new BasicSecureHandler());
         registerAttribHandler(ClientCookie.COMMENT_ATTR, new BasicCommentHandler());
         registerAttribHandler(ClientCookie.EXPIRES_ATTR, new BasicExpiresHandler(
                 this.datepatterns));
     }
 
-    /** Default constructor */
+    public NetscapeDraftSpec(final String[] datepatterns) {
+        this(true, datepatterns);
+    }
+
     public NetscapeDraftSpec() {
         this(null);
     }

Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieBestMatchSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieBestMatchSpec.java?rev=1619780&r1=1619779&r2=1619780&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieBestMatchSpec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieBestMatchSpec.java Fri Aug 22 12:35:14 2014
@@ -277,5 +277,23 @@ public class TestCookieBestMatchSpec {
         }
     }
 
+    @Test
+    public void testVersion1CookieWithInvalidExpires() throws Exception {
+        final CookieSpec cookiespec = new BestMatchSpec();
+        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<Cookie> cookies = cookiespec.parse(origHeader, origin);
+        Assert.assertNotNull(cookies);
+        Assert.assertEquals(1, cookies.size());
+
+        final List<Header> headers = cookiespec.formatCookies(cookies);
+        Assert.assertNotNull(headers);
+        Assert.assertEquals(1, headers.size());
+        final Header header1 = headers.get(0);
+        Assert.assertEquals("test=\"test\"", header1.getValue());
+    }
+
 }