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 2007/11/14 17:59:17 UTC
svn commit: r594946 - in /jakarta/httpcomponents/httpclient/trunk: ./
module-client/ module-client/src/main/java/org/apache/http/client/methods/
module-client/src/test/java/org/apache/http/client/
module-client/src/test/java/org/apache/http/client/meth...
Author: olegk
Date: Wed Nov 14 08:59:15 2007
New Revision: 594946
URL: http://svn.apache.org/viewvc?rev=594946&view=rev
Log:
HTTPCLIENT-688: HttpOptions#getAllowedMethods can now handle multiple Allow headers
Contributed by Andrea Selva <selva.andre at gmail.com>
Reviewed by Oleg Kalnichevski
Added:
jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/
jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestAllMethods.java (with props)
jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestHttpOptions.java (with props)
Modified:
jakarta/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt
jakarta/httpcomponents/httpclient/trunk/module-client/ (props changed)
jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java
jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/TestAll.java
Modified: jakarta/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt?rev=594946&r1=594945&r2=594946&view=diff
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt (original)
+++ jakarta/httpcomponents/httpclient/trunk/RELEASE_NOTES.txt Wed Nov 14 08:59:15 2007
@@ -1,3 +1,11 @@
+Changes since 4.0 Alpha 2
+-------------------
+
+* [HTTPCLIENT-688] HttpOptions#getAllowedMethods can now handle multiple
+ Allow headers
+ Contributed by Andrea Selva <selva.andre at gmail.com>
+
+
Release 4.0 Alpha 2
-------------------
Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Nov 14 08:59:15 2007
@@ -2,3 +2,4 @@
.classpath
.project
bin
+lib
Modified: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java?rev=594946&r1=594945&r2=594946&view=diff
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java Wed Nov 14 08:59:15 2007
@@ -33,14 +33,13 @@
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
+import org.apache.http.HeaderIterator;
import org.apache.http.HttpResponse;
-import org.apache.http.ParseException;
/**
* HTTP OPTIONS method.
@@ -83,20 +82,19 @@
return METHOD_NAME;
}
- public Set getAllowedMethods(final HttpResponse response)
- throws ParseException {
-
+ public Set getAllowedMethods(final HttpResponse response) {
if (response == null) {
throw new IllegalArgumentException("HTTP response may not be null");
}
- Header header = response.getFirstHeader("Allow");
- if (header == null) {
- return Collections.EMPTY_SET;
- }
- HeaderElement[] elements = header.getElements();
- Set methods = new HashSet(elements.length);
- for (int i = 0; i < elements.length; i++) {
- methods.add(elements[i].getName());
+
+ HeaderIterator it = response.headerIterator("Allow");
+ Set methods = new HashSet();
+ while (it.hasNext()) {
+ Header header = it.nextHeader();
+ HeaderElement[] elements = header.getElements();
+ for (int i = 0; i < elements.length; i++) {
+ methods.add(elements[i].getName());
+ }
}
return methods;
}
Modified: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/TestAll.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/TestAll.java?rev=594946&r1=594945&r2=594946&view=diff
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/TestAll.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/TestAll.java Wed Nov 14 08:59:15 2007
@@ -34,6 +34,7 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.apache.http.client.methods.TestAllMethods;
import org.apache.http.client.protocol.TestAllProtocol;
import org.apache.http.conn.TestAllConn;
import org.apache.http.cookie.TestAllCookie;
@@ -55,6 +56,7 @@
suite.addTest(TestAllConn.suite());
suite.addTest(TestAllConnImpl.suite());
suite.addTest(TestAllProtocol.suite());
+ suite.addTest(TestAllMethods.suite());
return suite;
}
Added: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestAllMethods.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestAllMethods.java?rev=594946&view=auto
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestAllMethods.java (added)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestAllMethods.java Wed Nov 14 08:59:15 2007
@@ -0,0 +1,54 @@
+/*
+ * $HeadURL:$
+ * $Revision:$
+ * $Date:$
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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/>.
+ *
+ */
+
+package org.apache.http.client.methods;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class TestAllMethods extends TestCase {
+
+ public TestAllMethods(String testName) {
+ super(testName);
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite();
+ suite.addTest(TestHttpOptions.suite());
+ return suite;
+ }
+
+ public static void main(String args[]) {
+ String[] testCaseName = { TestAllMethods.class.getName() };
+ junit.textui.TestRunner.main(testCaseName);
+ }
+
+}
Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestAllMethods.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestAllMethods.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestAllMethods.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestHttpOptions.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestHttpOptions.java?rev=594946&view=auto
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestHttpOptions.java (added)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestHttpOptions.java Wed Nov 14 08:59:15 2007
@@ -0,0 +1,77 @@
+/*
+ * $HeadURL:$
+ * $Revision:$
+ * $Date:$
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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/>.
+ *
+ */
+
+package org.apache.http.client.methods;
+
+import java.io.IOException;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.http.ProtocolVersion;
+import org.apache.http.message.BasicHttpResponse;
+import org.apache.http.message.BasicStatusLine;
+
+public class TestHttpOptions extends TestCase {
+
+ // ------------------------------------------------------------ Constructor
+ public TestHttpOptions(final String testName) throws IOException {
+ super(testName);
+ }
+
+ // ------------------------------------------------------------------- Main
+ public static void main(String args[]) {
+ String[] testCaseName = { TestHttpOptions.class.getName() };
+ junit.textui.TestRunner.main(testCaseName);
+ }
+
+ // ------------------------------------------------------- TestCase Methods
+
+ public static Test suite() {
+ return new TestSuite(TestHttpOptions.class);
+ }
+
+ public void testMultipleAllows() {
+ ProtocolVersion proto = new ProtocolVersion("HTTP", 1, 1);
+ BasicStatusLine line = new BasicStatusLine(proto, 200, "test reason");
+ BasicHttpResponse resp = new BasicHttpResponse(line);
+ resp.addHeader("Allow", "POST");
+ resp.addHeader("Allow", "GET");
+
+ HttpOptions opt = new HttpOptions();
+ Set methodsName = opt.getAllowedMethods(resp);
+
+ assertTrue(methodsName.contains("POST"));
+ assertTrue(methodsName.contains("GET"));
+ }
+
+}
Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestHttpOptions.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestHttpOptions.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/client/methods/TestHttpOptions.java
------------------------------------------------------------------------------
svn:mime-type = text/plain