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]