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 2009/07/09 21:29:12 UTC

svn commit: r792645 - in /httpcomponents/httpclient/trunk: ./ httpclient/src/main/java/org/apache/http/client/protocol/ httpclient/src/main/java/org/apache/http/cookie/ httpclient/src/test/java/org/apache/http/impl/client/

Author: olegk
Date: Thu Jul  9 19:29:11 2009
New Revision: 792645

URL: http://svn.apache.org/viewvc?rev=792645&view=rev
Log:
HTTPCLIENT-859: CookieIdentityComparator now takes path attribute into consideration when comparing cookies

Modified:
    httpcomponents/httpclient/trunk/RELEASE_NOTES.txt
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java
    httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java
    httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestCookieIdentityComparator.java

Modified: httpcomponents/httpclient/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt?rev=792645&r1=792644&r2=792645&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/RELEASE_NOTES.txt (original)
+++ httpcomponents/httpclient/trunk/RELEASE_NOTES.txt Thu Jul  9 19:29:11 2009
@@ -1,6 +1,10 @@
 Changes since 4.0 beta 2
 -------------------
 
+* [HTTPCLIENT-859] CookieIdentityComparator now takes path attribute into 
+  consideration when comparing cookies.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
 * HttpClient will no longer send expired cookies back to the origin server.
   Contributed by Oleg Kalnichevski <olegk at apache.org>
 

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java?rev=792645&r1=792644&r2=792645&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/protocol/RequestAddCookies.java Thu Jul  9 19:29:11 2009
@@ -176,7 +176,7 @@
         List<Cookie> matchedCookies = new ArrayList<Cookie>();
         Date now = new Date();
         for (Cookie cookie : cookies) {
-            if (cookie.getExpiryDate() == null || cookie.getExpiryDate().after(now)) {
+            if (!cookie.isExpired(now)) {
                 if (cookieSpec.match(cookie, cookieOrigin)) {
                     if (this.log.isDebugEnabled()) {
                         this.log.debug("Cookie " + cookie + " match " + cookieOrigin);

Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java?rev=792645&r1=792644&r2=792645&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java Thu Jul  9 19:29:11 2009
@@ -67,6 +67,17 @@
             }
             res = d1.compareToIgnoreCase(d2);
         }
+        if (res == 0) {
+            String p1 = c1.getPath();
+            if (p1 == null) {
+                p1 = "/";
+            }
+            String p2 = c2.getPath();
+            if (p2 == null) {
+                p2 = "/";
+            }
+            res = p1.compareTo(p2);
+        }
         return res;
     }
 

Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestCookieIdentityComparator.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestCookieIdentityComparator.java?rev=792645&r1=792644&r2=792645&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestCookieIdentityComparator.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/client/TestCookieIdentityComparator.java Thu Jul  9 19:29:11 2009
@@ -116,4 +116,42 @@
         assertTrue(comparator.compare(c3, c4) == 0);
     }
 
+    public void testCookieIdentityComparasionByNameDomainAndPath() {
+        CookieIdentityComparator comparator = new CookieIdentityComparator(); 
+        BasicClientCookie c1 = new BasicClientCookie("name", "value1");
+        c1.setDomain("www.domain.com");
+        c1.setPath("/whatever");
+        BasicClientCookie c2 = new BasicClientCookie("name", "value2"); 
+        c2.setDomain("www.domain.com");
+        c2.setPath("/whatever");
+        assertTrue(comparator.compare(c1, c2) == 0);
+        
+        BasicClientCookie c3 = new BasicClientCookie("name", "value1"); 
+        c3.setDomain("www.domain.com");
+        c3.setPath("/whatever");
+        BasicClientCookie c4 = new BasicClientCookie("name", "value2"); 
+        c4.setDomain("domain.com");
+        c4.setPath("/whatever-not");
+        assertFalse(comparator.compare(c3, c4) == 0);
+    }
+
+    public void testCookieIdentityComparasionByNameDomainAndNullPath() {
+        CookieIdentityComparator comparator = new CookieIdentityComparator(); 
+        BasicClientCookie c1 = new BasicClientCookie("name", "value1");
+        c1.setDomain("www.domain.com");
+        c1.setPath("/");
+        BasicClientCookie c2 = new BasicClientCookie("name", "value2"); 
+        c2.setDomain("www.domain.com");
+        c2.setPath(null);
+        assertTrue(comparator.compare(c1, c2) == 0);
+        
+        BasicClientCookie c3 = new BasicClientCookie("name", "value1"); 
+        c3.setDomain("www.domain.com");
+        c3.setPath("/whatever");
+        BasicClientCookie c4 = new BasicClientCookie("name", "value2"); 
+        c4.setDomain("domain.com");
+        c4.setPath(null);
+        assertFalse(comparator.compare(c3, c4) == 0);
+    }
+
 }