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 2004/09/15 22:42:17 UTC
cvs commit: jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/params TestHttpParams.java
olegk 2004/09/15 13:42:17
Modified: httpclient/src/java/org/apache/commons/httpclient
Header.java HttpMethodBase.java
HttpMethodDirector.java
httpclient/src/java/org/apache/commons/httpclient/params
HostParams.java
httpclient/src/test/org/apache/commons/httpclient
TestNoHost.java
Added: httpclient/src/test/org/apache/commons/httpclient/params
TestHttpParams.java
Log:
PR #10793 (User definable default headers support)
Changelog:
* default headers can be defined at the host or agent level
* Header class made immutable
Contributed by Oleg Kalnichevski
Reviewed by Michael Becke
Revision Changes Path
1.17 +5 -19 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/Header.java
Index: Header.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/Header.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- Header.java 13 May 2004 04:03:25 -0000 1.16
+++ Header.java 15 Sep 2004 20:42:17 -0000 1.17
@@ -137,22 +137,8 @@
*
* @since 3.0
*/
- public boolean isAutogenerated()
- {
+ public boolean isAutogenerated() {
return isAutogenerated;
- }
-
- /**
- * Sets the values of the auto-generated header flag.
- *
- * @return b <tt>true</tt> if the header is autogenerated,
- * <tt>false</tt> otherwise.
- *
- * @since 3.0
- */
- public void setAutogenerated(boolean b)
- {
- isAutogenerated = b;
}
}
1.213 +8 -10 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.212
retrieving revision 1.213
diff -u -r1.212 -r1.213
--- HttpMethodBase.java 14 Sep 2004 20:11:31 -0000 1.212
+++ HttpMethodBase.java 15 Sep 2004 20:42:17 -0000 1.213
@@ -1166,15 +1166,13 @@
if ((cookies != null) && (cookies.length > 0)) {
if (getParams().isParameterTrue(HttpMethodParams.SINGLE_COOKIE_HEADER)) {
// In strict mode put all cookies on the same header
- Header header = matcher.formatCookieHeader(cookies);
- header.setAutogenerated(true);
- getRequestHeaderGroup().addHeader(header);
+ String s = matcher.formatCookies(cookies);
+ getRequestHeaderGroup().addHeader(new Header("Cookie", s, true));
} else {
// In non-strict mode put each cookie on a separate header
for (int i = 0; i < cookies.length; i++) {
- Header header = matcher.formatCookieHeader(cookies[i]);
- header.setAutogenerated(true);
- getRequestHeaderGroup().addHeader(header);
+ String s = matcher.formatCookie(cookies[i]);
+ getRequestHeaderGroup().addHeader(new Header("Cookie", s, true));
}
}
}
1.30 +17 -3 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodDirector.java
Index: HttpMethodDirector.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodDirector.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- HttpMethodDirector.java 14 Sep 2004 20:11:31 -0000 1.29
+++ HttpMethodDirector.java 15 Sep 2004 20:42:17 -0000 1.30
@@ -30,7 +30,9 @@
package org.apache.commons.httpclient;
import java.io.IOException;
+import java.util.Collection;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -44,6 +46,7 @@
import org.apache.commons.httpclient.auth.CredentialsNotAvailableException;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.auth.MalformedChallengeException;
+import org.apache.commons.httpclient.params.HostParams;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.params.HttpMethodParams;
@@ -130,6 +133,17 @@
// Global -> HttpClient -> HostConfiguration -> HttpMethod
this.hostConfiguration.getParams().setDefaults(this.params);
method.getParams().setDefaults(this.hostConfiguration.getParams());
+
+ // Generate default request headers
+ Collection defaults = (Collection)this.hostConfiguration.getParams().
+ getParameter(HostParams.DEFAULT_HEADERS);
+ if (defaults != null) {
+ Iterator i = defaults.iterator();
+ while (i.hasNext()) {
+ method.addRequestHeader((Header)i.next());
+ }
+ }
+
try {
int maxRedirects = this.params.getIntParameter(HttpClientParams.MAX_REDIRECTS, 100);
1.3 +13 -4 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/HostParams.java
Index: HostParams.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/HostParams.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- HostParams.java 13 May 2004 04:01:22 -0000 1.2
+++ HostParams.java 15 Sep 2004 20:42:17 -0000 1.3
@@ -51,6 +51,15 @@
private static final Log LOG = LogFactory.getLog(HttpParams.class);
/**
+ * Defines the request headers to be sent per default with each request.
+ * <p>
+ * This parameter expects a value of type {@link java.util.Collection}. The
+ * collection is expected to contain {@link Header}s.
+ * </p>
+ */
+ public static final String DEFAULT_HEADERS = "http.default-headers";
+
+ /**
* Creates a new collection of parameters with the collection returned
* by {@link #getDefaultParams()} as a parent. The collection will defer
* to its parent for a default value if a particular parameter is not
1.39 +6 -4 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestNoHost.java
Index: TestNoHost.java
===================================================================
RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestNoHost.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- TestNoHost.java 11 May 2004 20:43:55 -0000 1.38
+++ TestNoHost.java 15 Sep 2004 20:42:17 -0000 1.39
@@ -38,6 +38,7 @@
import org.apache.commons.httpclient.auth.TestChallengeParser;
import org.apache.commons.httpclient.auth.TestChallengeProcessor;
import org.apache.commons.httpclient.cookie.TestCookieAll;
+import org.apache.commons.httpclient.params.TestHttpParams;
/**
* Tests that don't require any external host.
@@ -90,6 +91,7 @@
suite.addTest(TestEquals.suite());
suite.addTestSuite(TestIdleConnectionTimeout.class);
suite.addTest(TestMethodAbort.suite());
+ suite.addTest(TestHttpParams.suite());
return suite;
}
1.1 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/params/TestHttpParams.java
Index: TestHttpParams.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/params/TestHttpParams.java,v 1.1 2004/09/15 20:42:17 olegk Exp $
* $Revision: 1.1 $
* $Date: 2004/09/15 20:42:17 $
* ====================================================================
*
* Copyright 1999-2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.commons.httpclient.params;
import java.io.IOException;
import java.util.ArrayList;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.commons.httpclient.HttpClientTestBase;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HostParams;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.server.HttpService;
import org.apache.commons.httpclient.server.SimpleRequest;
import org.apache.commons.httpclient.server.SimpleResponse;
/**
* HTTP preference framework tests.
*
* @author Oleg Kalnichevski
*
* @version $Revision: 1.1 $
*/
public class TestHttpParams extends HttpClientTestBase {
// ------------------------------------------------------------ Constructor
public TestHttpParams(String testName) {
super(testName);
}
// ------------------------------------------------------------------- Main
public static void main(String args[]) {
String[] testCaseName = { TestHttpParams.class.getName() };
junit.textui.TestRunner.main(testCaseName);
}
// ------------------------------------------------------- TestCase Methods
public static Test suite() {
return new TestSuite(TestHttpParams.class);
}
private class SimpleService implements HttpService {
public SimpleService() {
super();
}
public boolean process(final SimpleRequest request, final SimpleResponse response)
throws IOException
{
String uri = request.getRequestLine().getUri();
HttpVersion httpversion = request.getRequestLine().getHttpVersion();
if ("/miss/".equals(uri)) {
response.setStatusLine(httpversion, HttpStatus.SC_MOVED_TEMPORARILY);
response.addHeader(new Header("Location", "/hit/"));
response.setBodyString("Missed!");
} else if ("/hit/".equals(uri)) {
response.setStatusLine(httpversion, HttpStatus.SC_OK);
response.setBodyString("Hit!");
} else {
response.setStatusLine(httpversion, HttpStatus.SC_NOT_FOUND);
response.setBodyString(uri + " not found");
}
return true;
}
}
public void testDefaultHeaders() throws IOException {
this.server.setHttpService(new SimpleService());
ArrayList defaults = new ArrayList();
defaults.add(new Header("this-header", "value1"));
defaults.add(new Header("that-header", "value1"));
defaults.add(new Header("that-header", "value2"));
defaults.add(new Header("User-Agent", "test"));
HostConfiguration hostconfig = new HostConfiguration();
hostconfig.setHost(
this.server.getLocalAddress(),
this.server.getLocalPort(),
Protocol.getProtocol("http"));
hostconfig.getParams().setParameter(HostParams.DEFAULT_HEADERS, defaults);
GetMethod httpget = new GetMethod("/miss/");
try {
this.client.executeMethod(hostconfig, httpget);
} finally {
httpget.releaseConnection();
}
assertEquals(HttpStatus.SC_OK, httpget.getStatusCode());
Header[] thisheader = httpget.getRequestHeaders("this-header");
assertEquals(1, thisheader.length);
Header[] thatheader = httpget.getRequestHeaders("that-header");
assertEquals(2, thatheader.length);
assertEquals("test", httpget.getRequestHeader("User-Agent").getValue());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org