You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ol...@apache.org on 2006/05/06 14:49:43 UTC

svn commit: r400312 - in /jakarta/commons/proper/httpclient/trunk/src: java/org/apache/commons/httpclient/ java/org/apache/commons/httpclient/cookie/ test/org/apache/commons/httpclient/cookie/

Author: olegk
Date: Sat May  6 05:49:41 2006
New Revision: 400312

URL: http://svn.apache.org/viewcvs?rev=400312&view=rev
Log:
Merged down the diff from the COOKIE_2_BRANCH

Added:
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/Cookie2.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/Cookie2.java
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookieAttributeHandler.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookieAttributeHandler.java
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookieOrigin.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookieOrigin.java
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookiePathComparator.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookiePathComparator.java
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookieVersionSupport.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookieVersionSupport.java
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/RFC2965Spec.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/java/org/apache/commons/httpclient/cookie/RFC2965Spec.java
    jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookie2.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/test/org/apache/commons/httpclient/cookie/TestCookie2.java
    jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookiePathComparator.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/test/org/apache/commons/httpclient/cookie/TestCookiePathComparator.java
    jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookieRFC2965Spec.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/test/org/apache/commons/httpclient/cookie/TestCookieRFC2965Spec.java
    jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookieVersionSupport.java
      - copied unchanged from r399747, jakarta/commons/proper/httpclient/branches/COOKIE_2_BRANCH/src/test/org/apache/commons/httpclient/cookie/TestCookieVersionSupport.java
Modified:
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookiePolicy.java
    jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/RFC2109Spec.java
    jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookieAll.java

Modified: jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java?rev=400312&r1=400311&r2=400312&view=diff
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java (original)
+++ jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/HttpMethodBase.java Sat May  6 05:49:41 2006
@@ -39,6 +39,7 @@
 import org.apache.commons.httpclient.auth.AuthState;
 import org.apache.commons.httpclient.cookie.CookiePolicy;
 import org.apache.commons.httpclient.cookie.CookieSpec;
+import org.apache.commons.httpclient.cookie.CookieVersionSupport;
 import org.apache.commons.httpclient.cookie.MalformedCookieException;
 import org.apache.commons.httpclient.params.HttpMethodParams;
 import org.apache.commons.httpclient.protocol.Protocol;
@@ -1190,6 +1191,20 @@
                     getRequestHeaderGroup().addHeader(new Header("Cookie", s, true));
                 }
             }
+            if (matcher instanceof CookieVersionSupport) {
+                CookieVersionSupport versupport = (CookieVersionSupport) matcher;
+                int ver = versupport.getVersion();
+                boolean needVersionHeader = false;
+                for (int i = 0; i < cookies.length; i++) {
+                    if (ver != cookies[i].getVersion()) {
+                        needVersionHeader = true;
+                    }
+                }
+                if (needVersionHeader) {
+                    // Advertise cookie version support
+                    getRequestHeaderGroup().addHeader(versupport.getVersionHeader());
+                }
+            }
         }
     }
 
@@ -1462,14 +1477,42 @@
         LOG.trace("enter HttpMethodBase.processResponseHeaders(HttpState, "
             + "HttpConnection)");
 
-        Header[] headers = getResponseHeaderGroup().getHeaders("set-cookie2");
-        //Only process old style set-cookie headers if new style headres
-        //are not present
-        if (headers.length == 0) { 
-            headers = getResponseHeaderGroup().getHeaders("set-cookie");
-        }
-        
         CookieSpec parser = getCookieSpec(state);
+
+        // process set-cookie headers
+        Header[] headers = getResponseHeaderGroup().getHeaders("set-cookie");
+        processCookieHeaders(parser, headers, state, conn);
+
+        // see if the cookie spec supports cookie versioning.
+        if (parser instanceof CookieVersionSupport) {
+            CookieVersionSupport versupport = (CookieVersionSupport) parser;
+            if (versupport.getVersion() > 0) {
+                // process set-cookie2 headers.
+                // Cookie2 will replace equivalent Cookie instances
+                headers = getResponseHeaderGroup().getHeaders("set-cookie2");
+                processCookieHeaders(parser, headers, state, conn);
+            }
+        }
+    }
+
+    /**
+     * This method processes the specified cookie headers. It is invoked from
+     * within {@link #processResponseHeaders(HttpState,HttpConnection)}
+     *
+     * @param headers cookie {@link Header}s to be processed
+     * @param state the {@link HttpState state} information associated with
+     *        this HTTP method
+     * @param conn the {@link HttpConnection connection} used to execute
+     *        this HTTP method
+     */
+    protected void processCookieHeaders(
+            final CookieSpec parser, 
+            final Header[] headers, 
+            final HttpState state, 
+            final HttpConnection conn) {
+        LOG.trace("enter HttpMethodBase.processCookieHeaders(Header[], HttpState, "
+                  + "HttpConnection)");
+
         String host = this.params.getVirtualHost();
         if (host == null) {
             host = conn.getHost();

Modified: jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookiePolicy.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookiePolicy.java?rev=400312&r1=400311&r2=400312&view=diff
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookiePolicy.java (original)
+++ jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/CookiePolicy.java Sat May  6 05:49:41 2006
@@ -80,8 +80,15 @@
      * @since 3.0
      */
     public static final String RFC_2109 = "rfc2109";
-    
-    /** 
+
+    /**
+     * The RFC 2965 compliant policy.
+     *
+     * @since 3.0
+     */
+    public static final String RFC_2965 = "rfc2965";
+
+    /**
      * The policy that ignores cookies. 
      * 
      * @since 3.0
@@ -98,6 +105,7 @@
     static {
         CookiePolicy.registerCookieSpec(DEFAULT, RFC2109Spec.class);
         CookiePolicy.registerCookieSpec(RFC_2109, RFC2109Spec.class);
+        CookiePolicy.registerCookieSpec(RFC_2965, RFC2965Spec.class);
         CookiePolicy.registerCookieSpec(BROWSER_COMPATIBILITY, CookieSpecBase.class);
         CookiePolicy.registerCookieSpec(NETSCAPE, NetscapeDraftSpec.class);
         CookiePolicy.registerCookieSpec(IGNORE_COOKIES, IgnoreCookiesSpec.class);
@@ -125,7 +133,14 @@
      */
     public static final int RFC2109 = 2;
 
-    /** 
+    /**
+     * The <tt>RFC2965</tt> RFC 2965 compliant policy.
+     *
+     * @deprecated Use {@link #RFC_2965}
+     */
+    public static final int RFC2965 = 3;
+
+    /**
      * The default cookie policy.
      *  
      * @deprecated Use {@link #DEFAULT} 
@@ -241,6 +256,8 @@
                 return new NetscapeDraftSpec(); 
             case RFC2109:
                 return new RFC2109Spec();
+            case RFC2965:
+                return new RFC2965Spec();
             default:
                 return getDefaultSpec(); 
         }
@@ -302,4 +319,5 @@
     public static CookieSpec getCompatibilitySpec() {
         return getSpecByPolicy(COMPATIBILITY);
     }
+    
 }

Modified: jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/RFC2109Spec.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/RFC2109Spec.java?rev=400312&r1=400311&r2=400312&view=diff
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/RFC2109Spec.java (original)
+++ jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/cookie/RFC2109Spec.java Sat May  6 05:49:41 2006
@@ -53,8 +53,14 @@
 public class RFC2109Spec extends CookieSpecBase {
 
     private final ParameterFormatter formatter;
-    
-    /** Default constructor */    
+
+    /**
+     * Cookie Response Header  name for cookies processed
+     * by this spec.
+     */
+    public static String SET_COOKIE_KEY = "set-cookie";
+
+    /** Default constructor */
     public RFC2109Spec() {
         super();
         this.formatter = new ParameterFormatter();

Modified: jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookieAll.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookieAll.java?rev=400312&r1=400311&r2=400312&view=diff
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookieAll.java (original)
+++ jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/cookie/TestCookieAll.java Sat May  6 05:49:41 2006
@@ -43,12 +43,16 @@
     public static Test suite() {
         TestSuite suite = new TestSuite();
         suite.addTest(TestCookie.suite());
+        suite.addTest(TestCookie2.suite());
         suite.addTest(TestCookieCompatibilitySpec.suite());
         suite.addTest(TestCookieRFC2109Spec.suite());
+        suite.addTest(TestCookieRFC2965Spec.suite());
         suite.addTest(TestCookieNetscapeDraft.suite());
         suite.addTest(TestCookieIgnoreSpec.suite());
         suite.addTest(TestCookiePolicy.suite());
         suite.addTest(TestDateParser.suite());
+        suite.addTest(TestCookiePathComparator.suite());
+        suite.addTest(TestCookieVersionSupport.suite());
         return suite;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org