olegk       2003/02/18 07:54:30

  Modified:    httpclient/src/java/org/apache/commons/httpclient
                        HttpMethodBase.java
               httpclient/src/java/org/apache/commons/httpclient/cookie
                        CookieSpecBase.java
               httpclient/src/test/org/apache/commons/httpclient
                        TestWebappCookie.java
               httpclient/src/test-webapp/src/org/apache/commons/httpclient
                        ReadCookieServlet.java
  Log:
  Changelog:
  - In non-strict mode each cookie sent with the request is put on a
  separate request header.
  - In strict mode all cookies are crammed into one request header, as
  before
  
  Contributed by Oleg Kalnichevski
  
  Revision  Changes    Path
  1.114     +15 -5     
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java
  
  Index: HttpMethodBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v
  retrieving revision 1.113
  retrieving revision 1.114
  diff -u -r1.113 -r1.114
  --- HttpMethodBase.java       16 Feb 2003 17:56:17 -0000      1.113
  +++ HttpMethodBase.java       18 Feb 2003 15:54:29 -0000      1.114
  @@ -1317,7 +1317,17 @@
           Cookie[] cookies = matcher.match(conn.getHost(), conn.getPort(),
               getPath(), conn.isSecure(), state.getCookies());
           if ((cookies != null) && (cookies.length > 0)) {
  -            setRequestHeader(matcher.formatCookieHeader(cookies));
  +            if (this.isStrictMode()) {
  +                // In strict mode put all cookies on the same header
  +                getRequestHeaderGroup().addHeader(
  +                  matcher.formatCookieHeader(cookies));
  +            } else {
  +                // In non-strict mode put each cookie on a separate header
  +                for (int i = 0; i < cookies.length; i++) {
  +                    getRequestHeaderGroup().addHeader(
  +                      matcher.formatCookieHeader(cookies[i]));
  +                }
  +            }
           }
       }
   
  
  
  
  1.12      +5 -5      
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java
  
  Index: CookieSpecBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- CookieSpecBase.java       30 Jan 2003 05:01:55 -0000      1.11
  +++ CookieSpecBase.java       18 Feb 2003 15:54:30 -0000      1.12
  @@ -375,8 +375,8 @@
                       + paramValue);
               }
           } else {
  -            if (LOG.isWarnEnabled()) {
  -                LOG.warn("Unrecognized cookie attribute: " 
  +            if (LOG.isDebugEnabled()) {
  +                LOG.debug("Unrecognized cookie attribute: " 
                       + attribute.toString());
               }
           }
  
  
  
  1.10      +57 -6     
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappCookie.java
  
  Index: TestWebappCookie.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappCookie.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- TestWebappCookie.java     2 Feb 2003 11:05:20 -0000       1.9
  +++ TestWebappCookie.java     18 Feb 2003 15:54:30 -0000      1.10
  @@ -109,6 +109,7 @@
   
       public void testSetCookieGet() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           GetMethod method = new GetMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=set");
  @@ -129,6 +130,7 @@
   
       public void testSetCookiePost() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           PostMethod method = new PostMethod("/" + context + "/cookie/write");
           method.setRequestBody(new NameValuePair[] { new 
NameValuePair("simple","set") } );
  @@ -149,6 +151,7 @@
   
       public void testSetCookiePut() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           PutMethod method = new PutMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=set");
  @@ -169,6 +172,7 @@
   
       public void testSetExpiredCookieGet() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           GetMethod method = new GetMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=unset");
  @@ -187,6 +191,7 @@
   
       public void testSetExpiredCookiePut() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           PutMethod method = new PutMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=unset");
  @@ -205,6 +210,7 @@
   
       public void testSetUnsetCookieGet() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           GetMethod method = new GetMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=set");
  @@ -238,8 +244,9 @@
           assertEquals(0,client.getState().getCookies().length);
       }
   
  -    public void testSetMultiCookieGet() throws Exception {
  +    public void testSetMultiCookieGetStrict() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           GetMethod method = new GetMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=set&domain=set");
  @@ -261,8 +268,48 @@
           
assertEquals("value",((Cookie)(client.getState().getCookies()[1])).getValue());
       }
   
  +
  +    public void testMultiSendCookieGetNonstrict() throws Exception {
  +        HttpClient client = new HttpClient();
  +        client.getHostConfiguration().setHost(host, port, "http");
  +        GetMethod method = new GetMethod("/" + context + "/cookie/write");
  +        method.setQueryString("simple=set&domain=set");
  +        try {
  +            client.executeMethod(method);
  +        } catch (Throwable t) {
  +            t.printStackTrace();
  +            fail("Unable to execute method : " + t.toString());
  +        }
  +        assertEquals(200,method.getStatusCode());
  +        
assertTrue(method.getResponseBodyAsString().indexOf("<title>WriteCookieServlet: 
GET</title>") >= 0);
  +        assertTrue(method.getResponseBodyAsString().indexOf("Wrote 
simplecookie.<br>") >= 0);
  +        assertTrue(method.getResponseBodyAsString().indexOf("Wrote 
domaincookie.<br>") >= 0);
  +        assertEquals(2,client.getState().getCookies().length);
  +        assertEquals("simplecookie", 
((Cookie)(client.getState().getCookies()[0])).getName());
  +        
assertEquals("value",((Cookie)(client.getState().getCookies()[0])).getValue());
  +        assertEquals("domaincookie", 
((Cookie)(client.getState().getCookies()[1])).getName());
  +        
assertEquals("value",((Cookie)(client.getState().getCookies()[1])).getValue());
  +
  +        GetMethod method2 = new GetMethod("/" + context + "/cookie/read");
  +        try {
  +            client.executeMethod(method2);
  +        } catch (Throwable t) {
  +            t.printStackTrace();
  +            fail("Unable to execute method : " + t.toString());
  +        }
  +        assertEquals(200,method2.getStatusCode());
  +        String s = method2.getResponseBodyAsString();
  +        assertTrue(s, s.indexOf("<title>ReadCookieServlet: GET</title>") >= 0);
  +        assertTrue(s, s.indexOf("<p><tt>Cookie: $Version=\"1\"; 
simplecookie=\"value\"</tt></p>") >= 0);
  +        assertTrue(s, s.indexOf("<p><tt>Cookie: $Version=\"1\"; 
domaincookie=\"value\"; $Domain=\"" + host + "\"</tt></p>") >= 0);
  +        assertTrue(s, s.indexOf("<tt>simplecookie=\"value\"</tt><br>") >= 0);
  +        assertTrue(s, s.indexOf("<tt>domaincookie=\"value\"</tt><br>") >= 0);
  +    }
  +
  +
       public void testSetMultiCookiePut() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           PutMethod method = new PutMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=set&domain=set");
  @@ -286,6 +333,7 @@
   
       public void testSendCookieGet() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           GetMethod method = new GetMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=set");
  @@ -320,6 +368,7 @@
   
       public void testMultiSendCookieGet() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
           GetMethod method = new GetMethod("/" + context + "/cookie/write");
           method.setQueryString("simple=set&domain=set");
  @@ -358,6 +407,7 @@
   
       public void testDeleteCookieGet() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
   
           {
  @@ -435,6 +485,7 @@
   
       public void testDeleteCookiePut() throws Exception {
           HttpClient client = new HttpClient();
  +        client.setStrictMode(true);
           client.getHostConfiguration().setHost(host, port, "http");
   
           {
  @@ -655,7 +706,7 @@
               }
               assertEquals(200,method.getStatusCode());
               
assertTrue(method.getResponseBodyAsString().indexOf("<title>ReadCookieServlet: 
GET</title>") >= 0);
  -            
assertTrue(method.getResponseBodyAsString(),method.getResponseBodyAsString().indexOf("<p><tt>Cookie:
 null</tt></p>") >= 0);
  +            
assertTrue(method.getResponseBodyAsString(),method.getResponseBodyAsString().indexOf("<p><tt>Cookie:
 ") == -1);
               
assertTrue(method.getResponseBodyAsString().indexOf("<tt>pathcookie=value</tt><br>") 
== -1);
           }
       }
  
  
  
  1.4       +7 -4      
jakarta-commons/httpclient/src/test-webapp/src/org/apache/commons/httpclient/ReadCookieServlet.java
  
  Index: ReadCookieServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/test-webapp/src/org/apache/commons/httpclient/ReadCookieServlet.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ReadCookieServlet.java    23 Jan 2003 22:48:49 -0000      1.3
  +++ ReadCookieServlet.java    18 Feb 2003 15:54:30 -0000      1.4
  @@ -76,7 +76,10 @@
           out.println("<head><title>ReadCookieServlet: " + request.getMethod() + 
"</title></head>");
           out.println("<body>");
           out.println("<p>This is a response to an HTTP " + request.getMethod() + " 
request.</p>");
  -        out.println("<p><tt>Cookie: " + request.getHeader("Cookie") + "</tt></p>");
  +        Enumeration enum = request.getHeaders("Cookie");
  +        while (enum.hasMoreElements()) {
  +            out.println("<p><tt>Cookie: " + (String)enum.nextElement() + 
"</tt></p>");
  +        }
           Cookie[] cookies = request.getCookies();
           if(null != cookies) {
               for(int i=0;i<cookies.length;i++) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to