diff options
Diffstat (limited to 'src/org/apache/http/protocol')
29 files changed, 0 insertions, 3057 deletions
diff --git a/src/org/apache/http/protocol/BasicHttpContext.java b/src/org/apache/http/protocol/BasicHttpContext.java deleted file mode 100644 index 9b4e2b3..0000000 --- a/src/org/apache/http/protocol/BasicHttpContext.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/BasicHttpContext.java $ - * $Revision: 654882 $ - * $Date: 2008-05-09 09:58:59 -0700 (Fri, 09 May 2008) $ - * - * ==================================================================== - * 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.protocol; - -import java.util.HashMap; -import java.util.Map; - -/** - * Default implementation of the {@link HttpContext HttpContext}. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 654882 $ - * - * @since 4.0 - */ -public class BasicHttpContext implements HttpContext { - - private final HttpContext parentContext; - private Map map = null; - - public BasicHttpContext() { - this(null); - } - - public BasicHttpContext(final HttpContext parentContext) { - super(); - this.parentContext = parentContext; - } - - public Object getAttribute(final String id) { - if (id == null) { - throw new IllegalArgumentException("Id may not be null"); - } - Object obj = null; - if (this.map != null) { - obj = this.map.get(id); - } - if (obj == null && this.parentContext != null) { - obj = this.parentContext.getAttribute(id); - } - return obj; - } - - public void setAttribute(final String id, final Object obj) { - if (id == null) { - throw new IllegalArgumentException("Id may not be null"); - } - if (this.map == null) { - this.map = new HashMap(); - } - this.map.put(id, obj); - } - - public Object removeAttribute(final String id) { - if (id == null) { - throw new IllegalArgumentException("Id may not be null"); - } - if (this.map != null) { - return this.map.remove(id); - } else { - return null; - } - } - -} diff --git a/src/org/apache/http/protocol/BasicHttpProcessor.java b/src/org/apache/http/protocol/BasicHttpProcessor.java deleted file mode 100644 index 3caec72..0000000 --- a/src/org/apache/http/protocol/BasicHttpProcessor.java +++ /dev/null @@ -1,337 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/BasicHttpProcessor.java $ - * $Revision: 613298 $ - * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 2008) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; - -/** - * Keeps lists of interceptors for processing requests and responses. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * @author Andrea Selva - * - * @version $Revision: 613298 $ - * - * @since 4.0 - */ -public final class BasicHttpProcessor implements - HttpProcessor, HttpRequestInterceptorList, HttpResponseInterceptorList, Cloneable { - - protected List requestInterceptors = null; - protected List responseInterceptors = null; - - - // non-Javadoc, see interface HttpRequestInterceptorList - public void addRequestInterceptor(final HttpRequestInterceptor itcp) { - - if (itcp == null) { - return; - } - if (this.requestInterceptors == null) { - this.requestInterceptors = new ArrayList(); - } - this.requestInterceptors.add(itcp); - } - - // non-Javadoc, see interface HttpRequestInterceptorList - public void addRequestInterceptor(final HttpRequestInterceptor itcp, - int index) { - if (index < 0) { - throw new IndexOutOfBoundsException(String.valueOf(index)); - } - if (itcp == null) { - return; - } - - if (this.requestInterceptors == null) { - if (index > 0) { - throw new IndexOutOfBoundsException(String.valueOf(index)); - } - this.requestInterceptors = new ArrayList(); - } - this.requestInterceptors.add(index, itcp); - } - - - public void addResponseInterceptor(HttpResponseInterceptor itcp, - int index) { - if (index < 0) { - throw new IndexOutOfBoundsException(String.valueOf(index)); - } - if (itcp == null) { - return; - } - - if (this.responseInterceptors == null) { - if (index > 0) { - throw new IndexOutOfBoundsException(String.valueOf(index)); - } - this.responseInterceptors = new ArrayList(); - } - this.responseInterceptors.add(index, itcp); - } - - - // non-Javadoc, see interface HttpRequestInterceptorList - public void removeRequestInterceptorByClass(final Class clazz) { - if (this.requestInterceptors == null) { - return; - } - for (Iterator it = this.requestInterceptors.iterator(); - it.hasNext(); ) { - Object request = it.next(); - if (request.getClass().equals(clazz)) { - it.remove(); - } - } - } - - // non-Javadoc, see interface HttpResponseInterceptorList - public void removeResponseInterceptorByClass(final Class clazz) { - if (this.responseInterceptors == null) { - return; - } - for (Iterator it = this.responseInterceptors.iterator(); - it.hasNext(); ) { - Object request = it.next(); - if (request.getClass().equals(clazz)) { - it.remove(); - } - } - } - - /** - * Same as {@link #addRequestInterceptor(HttpRequestInterceptor) addRequestInterceptor}. - * - * @param interceptor the interceptor to add - */ - public final - void addInterceptor(final HttpRequestInterceptor interceptor) { - addRequestInterceptor(interceptor); - } - - public final - void addInterceptor(final HttpRequestInterceptor interceptor, - int index) { - addRequestInterceptor(interceptor, index); - } - - - // non-Javadoc, see interface HttpRequestInterceptorList - public int getRequestInterceptorCount() { - return (this.requestInterceptors == null) ? - 0 : this.requestInterceptors.size(); - } - - - // non-Javadoc, see interface HttpRequestInterceptorList - public HttpRequestInterceptor getRequestInterceptor(int index) { - - if ((this.requestInterceptors == null) || - (index < 0) || (index >= this.requestInterceptors.size())) - return null; - - return (HttpRequestInterceptor) this.requestInterceptors.get(index); - } - - - // non-Javadoc, see interface HttpRequestInterceptorList - public void clearRequestInterceptors() { - this.requestInterceptors = null; - } - - - - // non-Javadoc, see interface HttpResponseInterceptorList - public void addResponseInterceptor(final HttpResponseInterceptor itcp) { - if (itcp == null) { - return; - } - if (this.responseInterceptors == null) { - this.responseInterceptors = new ArrayList(); - } - this.responseInterceptors.add(itcp); - } - - /** - * Same as {@link #addResponseInterceptor(HttpResponseInterceptor) addResponseInterceptor}. - * - * @param interceptor the interceptor to add - */ - public final - void addInterceptor(final HttpResponseInterceptor interceptor) { - addResponseInterceptor(interceptor); - } - - public final void addInterceptor(final HttpResponseInterceptor interceptor, - int index) { - addResponseInterceptor(interceptor, index); - } - - - - // non-Javadoc, see interface HttpResponseInterceptorList - public int getResponseInterceptorCount() { - return (this.responseInterceptors == null) ? - 0 : this.responseInterceptors.size(); - } - - - // non-Javadoc, see interface HttpResponseInterceptorList - public HttpResponseInterceptor getResponseInterceptor(int index) { - - if ((this.responseInterceptors == null) || - (index < 0) || (index >= this.responseInterceptors.size())) - return null; - - return (HttpResponseInterceptor) this.responseInterceptors.get(index); - } - - - // non-Javadoc, see interface HttpResponseInterceptorList - public void clearResponseInterceptors() { - this.responseInterceptors = null; - } - - - /** - * Sets the interceptor lists. - * First, both interceptor lists maintained by this processor - * will be cleared. - * Subsequently, - * elements of the argument list that are request interceptors will be - * added to the request interceptor list. - * Elements that are response interceptors will be - * added to the response interceptor list. - * Elements that are both request and response interceptor will be - * added to both lists. - * Elements that are neither request nor response interceptor - * will be ignored. - * - * @param list the list of request and response interceptors - * from which to initialize - */ - public void setInterceptors(final List list) { - if (list == null) { - throw new IllegalArgumentException("List must not be null."); - } - if (this.requestInterceptors != null) { - this.requestInterceptors.clear(); - } - if (this.responseInterceptors != null) { - this.responseInterceptors.clear(); - } - for (int i = 0; i < list.size(); i++) { - Object obj = list.get(i); - if (obj instanceof HttpRequestInterceptor) { - addInterceptor((HttpRequestInterceptor)obj); - } - if (obj instanceof HttpResponseInterceptor) { - addInterceptor((HttpResponseInterceptor)obj); - } - } - } - - /** - * Clears both interceptor lists maintained by this processor. - */ - public void clearInterceptors() { - clearRequestInterceptors(); - clearResponseInterceptors(); - } - - // non-Javadoc, see interface HttpRequestInterceptor (via HttpProcessor) - public void process( - final HttpRequest request, - final HttpContext context) - throws IOException, HttpException { - if (this.requestInterceptors != null) { - for (int i = 0; i < this.requestInterceptors.size(); i++) { - HttpRequestInterceptor interceptor = - (HttpRequestInterceptor) this.requestInterceptors.get(i); - interceptor.process(request, context); - } - } - } - - // non-Javadoc, see interface HttpResponseInterceptor (via HttpProcessor) - public void process( - final HttpResponse response, - final HttpContext context) - throws IOException, HttpException { - if (this.responseInterceptors != null) { - for (int i = 0; i < this.responseInterceptors.size(); i++) { - HttpResponseInterceptor interceptor = - (HttpResponseInterceptor) this.responseInterceptors.get(i); - interceptor.process(response, context); - } - } - } - - protected void copyInterceptors(final BasicHttpProcessor target) { - if (this.requestInterceptors != null) { - target.requestInterceptors = - new ArrayList(this.requestInterceptors); - } - if (this.responseInterceptors != null) { - target.responseInterceptors = - new ArrayList(this.responseInterceptors); - } - } - - /** - * Creates a copy of this instance - * - * @return new instance of the BasicHttpProcessor - */ - public BasicHttpProcessor copy() { - BasicHttpProcessor clone = new BasicHttpProcessor(); - copyInterceptors(clone); - return clone; - } - - public Object clone() throws CloneNotSupportedException { - BasicHttpProcessor clone = (BasicHttpProcessor) super.clone(); - copyInterceptors(clone); - return clone; - } - -} diff --git a/src/org/apache/http/protocol/DefaultedHttpContext.java b/src/org/apache/http/protocol/DefaultedHttpContext.java deleted file mode 100644 index 986f1a6..0000000 --- a/src/org/apache/http/protocol/DefaultedHttpContext.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/DefaultedHttpContext.java $ - * $Revision: 654882 $ - * $Date: 2008-05-09 09:58:59 -0700 (Fri, 09 May 2008) $ - * - * ==================================================================== - * 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.protocol; - -/** - * {@link HttpContext} implementation that delegates resolution of an attribute - * to the given default {@link HttpContext} instance if the attribute is not - * present in the local one. The state of the local context can be mutated, - * whereas the default context is treated as read-only. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 654882 $ - */ -public final class DefaultedHttpContext implements HttpContext { - - private final HttpContext local; - private final HttpContext defaults; - - public DefaultedHttpContext(final HttpContext local, final HttpContext defaults) { - super(); - if (local == null) { - throw new IllegalArgumentException("HTTP context may not be null"); - } - this.local = local; - this.defaults = defaults; - } - - public Object getAttribute(final String id) { - Object obj = this.local.getAttribute(id); - if (obj == null) { - return this.defaults.getAttribute(id); - } else { - return obj; - } - } - - public Object removeAttribute(final String id) { - return this.local.removeAttribute(id); - } - - public void setAttribute(final String id, final Object obj) { - this.local.setAttribute(id, obj); - } - - public HttpContext getDefaults() { - return this.defaults; - } - -} diff --git a/src/org/apache/http/protocol/ExecutionContext.java b/src/org/apache/http/protocol/ExecutionContext.java deleted file mode 100644 index d14acb5..0000000 --- a/src/org/apache/http/protocol/ExecutionContext.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ExecutionContext.java $ - * $Revision: 558154 $ - * $Date: 2007-07-20 14:29:02 -0700 (Fri, 20 Jul 2007) $ - * - * ==================================================================== - * 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.protocol; - -/** - * {@link HttpContext Context} attribute names for protocol execution. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 558154 $ - * - * @since 4.0 - */ -public interface ExecutionContext { - - public static final String HTTP_CONNECTION = "http.connection"; - public static final String HTTP_REQUEST = "http.request"; - public static final String HTTP_RESPONSE = "http.response"; - public static final String HTTP_TARGET_HOST = "http.target_host"; - public static final String HTTP_PROXY_HOST = "http.proxy_host"; - public static final String HTTP_REQ_SENT = "http.request_sent"; - -} diff --git a/src/org/apache/http/protocol/HTTP.java b/src/org/apache/http/protocol/HTTP.java deleted file mode 100644 index de76ca6..0000000 --- a/src/org/apache/http/protocol/HTTP.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HTTP.java $ - * $Revision: 555989 $ - * $Date: 2007-07-13 06:33:39 -0700 (Fri, 13 Jul 2007) $ - * - * ==================================================================== - * 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.protocol; - -/** - * Constants and static helpers related to the HTTP protocol. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 555989 $ - * - * @since 4.0 - */ -public final class HTTP { - - public static final int CR = 13; // <US-ASCII CR, carriage return (13)> - public static final int LF = 10; // <US-ASCII LF, linefeed (10)> - public static final int SP = 32; // <US-ASCII SP, space (32)> - public static final int HT = 9; // <US-ASCII HT, horizontal-tab (9)> - - /** HTTP header definitions */ - public static final String TRANSFER_ENCODING = "Transfer-Encoding"; - public static final String CONTENT_LEN = "Content-Length"; - public static final String CONTENT_TYPE = "Content-Type"; - public static final String CONTENT_ENCODING = "Content-Encoding"; - public static final String EXPECT_DIRECTIVE = "Expect"; - public static final String CONN_DIRECTIVE = "Connection"; - public static final String TARGET_HOST = "Host"; - public static final String USER_AGENT = "User-Agent"; - public static final String DATE_HEADER = "Date"; - public static final String SERVER_HEADER = "Server"; - - /** HTTP expectations */ - public static final String EXPECT_CONTINUE = "100-Continue"; - - /** HTTP connection control */ - public static final String CONN_CLOSE = "Close"; - public static final String CONN_KEEP_ALIVE = "Keep-Alive"; - - /** Transfer encoding definitions */ - public static final String CHUNK_CODING = "chunked"; - public static final String IDENTITY_CODING = "identity"; - - /** Common charset definitions */ - public static final String UTF_8 = "UTF-8"; - public static final String UTF_16 = "UTF-16"; - public static final String US_ASCII = "US-ASCII"; - public static final String ASCII = "ASCII"; - public static final String ISO_8859_1 = "ISO-8859-1"; - - /** Default charsets */ - public static final String DEFAULT_CONTENT_CHARSET = ISO_8859_1; - public static final String DEFAULT_PROTOCOL_CHARSET = US_ASCII; - - /** Content type definitions */ - public final static String OCTET_STREAM_TYPE = "application/octet-stream"; - public final static String PLAIN_TEXT_TYPE = "text/plain"; - public final static String CHARSET_PARAM = "; charset="; - - /** Default content type */ - public final static String DEFAULT_CONTENT_TYPE = OCTET_STREAM_TYPE; - - public static boolean isWhitespace(char ch) { - return ch == SP || ch == HT || ch == CR || ch == LF; - } - - private HTTP() { - } - -} diff --git a/src/org/apache/http/protocol/HttpContext.java b/src/org/apache/http/protocol/HttpContext.java deleted file mode 100644 index bcf36fd..0000000 --- a/src/org/apache/http/protocol/HttpContext.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpContext.java $ - * $Revision: 558111 $ - * $Date: 2007-07-20 13:01:50 -0700 (Fri, 20 Jul 2007) $ - * - * ==================================================================== - * 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.protocol; - -/** - * A context for executing a request. - * The context is used to tie together the request, the response, - * and optional application data. It is also used for internal data. - * Attribute names starting with the prefix "http." are - * {@link #RESERVED_PREFIX reserved} for internal data. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 558111 $ - * - * @since 4.0 - */ -public interface HttpContext { - - /** The prefix reserved for use by HTTP components. "http." */ - public static final String RESERVED_PREFIX = "http."; - - Object getAttribute(String id); - - void setAttribute(String id, Object obj); - - Object removeAttribute(String id); - -} diff --git a/src/org/apache/http/protocol/HttpDateGenerator.java b/src/org/apache/http/protocol/HttpDateGenerator.java deleted file mode 100644 index bfb0863..0000000 --- a/src/org/apache/http/protocol/HttpDateGenerator.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpDateGenerator.java $ - * $Revision: 548066 $ - * $Date: 2007-06-17 09:51:55 -0700 (Sun, 17 Jun 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; - - -/** - * Generates a date in the format required by the HTTP protocol. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 548066 $ - * - * @since 4.0 - */ -public class HttpDateGenerator { - - /** Date format pattern used to generate the header in RFC 1123 format. */ - public static final - String PATTERN_RFC1123 = "EEE, dd MMM yyyy HH:mm:ss zzz"; - - /** The time zone to use in the date header. */ - public static final TimeZone GMT = TimeZone.getTimeZone("GMT"); - - - private final DateFormat dateformat; - - private long dateAsLong = 0L; - private String dateAsText = null; - - public HttpDateGenerator() { - super(); - this.dateformat = new SimpleDateFormat(PATTERN_RFC1123, Locale.US); - this.dateformat.setTimeZone(GMT); - } - - public synchronized String getCurrentDate() { - long now = System.currentTimeMillis(); - if (now - this.dateAsLong > 1000) { - // Generate new date string - this.dateAsText = this.dateformat.format(new Date(now)); - this.dateAsLong = now; - } - return this.dateAsText; - } - -} diff --git a/src/org/apache/http/protocol/HttpExpectationVerifier.java b/src/org/apache/http/protocol/HttpExpectationVerifier.java deleted file mode 100644 index 9fa4316..0000000 --- a/src/org/apache/http/protocol/HttpExpectationVerifier.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpExpectationVerifier.java $ - * $Revision: 613298 $ - * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 2008) $ - * - * ==================================================================== - * 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.protocol; - -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; - -/** - * Defines an interface to verify whether an incoming HTTP request meets - * the target server's expectations. - *<p> - * The Expect request-header field is used to indicate that particular - * server behaviors are required by the client. - *</p> - *<pre> - * Expect = "Expect" ":" 1#expectation - * - * expectation = "100-continue" | expectation-extension - * expectation-extension = token [ "=" ( token | quoted-string ) - * *expect-params ] - * expect-params = ";" token [ "=" ( token | quoted-string ) ] - *</pre> - *<p> - * A server that does not understand or is unable to comply with any of - * the expectation values in the Expect field of a request MUST respond - * with appropriate error status. The server MUST respond with a 417 - * (Expectation Failed) status if any of the expectations cannot be met - * or, if there are other problems with the request, some other 4xx - * status. - *</p> - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 613298 $ - * - * @since 4.0 - */ -public interface HttpExpectationVerifier { - - void verify(HttpRequest request, HttpResponse response, HttpContext context) - throws HttpException; - -} diff --git a/src/org/apache/http/protocol/HttpProcessor.java b/src/org/apache/http/protocol/HttpProcessor.java deleted file mode 100644 index 489220d..0000000 --- a/src/org/apache/http/protocol/HttpProcessor.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpProcessor.java $ - * $Revision: 496070 $ - * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 2007) $ - * - * ==================================================================== - * 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.protocol; - -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpResponseInterceptor; - -/** - * Performs interceptor processing of requests and responses. - * Specific interceptors typically interpret or update message headers, - * and they may wrap the message entity for example to implement a - * specific transport or content encoding. - * A <code>HttpProcessor</code> typically maintains a list of - * interceptors that will be applied to a request or response. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * @author <a href="mailto:rolandw at apache.org">Roland Weber</a> - * - * @version $Revision: 496070 $ - * - * @since 4.0 - */ -public interface HttpProcessor - extends HttpRequestInterceptor, HttpResponseInterceptor { - - // no additional methods -} diff --git a/src/org/apache/http/protocol/HttpRequestExecutor.java b/src/org/apache/http/protocol/HttpRequestExecutor.java deleted file mode 100644 index 71fa75a..0000000 --- a/src/org/apache/http/protocol/HttpRequestExecutor.java +++ /dev/null @@ -1,322 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestExecutor.java $ - * $Revision: 576073 $ - * $Date: 2007-09-16 03:53:13 -0700 (Sun, 16 Sep 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; -import java.net.ProtocolException; - -import org.apache.http.HttpClientConnection; -import org.apache.http.HttpEntityEnclosingRequest; -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.HttpVersion; -import org.apache.http.ProtocolVersion; -import org.apache.http.params.CoreProtocolPNames; - -/** - * Sends HTTP requests and receives the responses. - * Takes care of request preprocessing and response postprocessing - * by the respective interceptors. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 576073 $ - * - * @since 4.0 - */ -public class HttpRequestExecutor { - - /** - * Create a new request executor. - */ - public HttpRequestExecutor() { - super(); - } - - /** - * Decide whether a response comes with an entity. - * The implementation in this class is based on RFC 2616. - * Unknown methods and response codes are supposed to - * indicate responses with an entity. - * <br/> - * Derived executors can override this method to handle - * methods and response codes not specified in RFC 2616. - * - * @param request the request, to obtain the executed method - * @param response the response, to obtain the status code - */ - protected boolean canResponseHaveBody(final HttpRequest request, - final HttpResponse response) { - - if ("HEAD".equalsIgnoreCase(request.getRequestLine().getMethod())) { - return false; - } - int status = response.getStatusLine().getStatusCode(); - return status >= HttpStatus.SC_OK - && status != HttpStatus.SC_NO_CONTENT - && status != HttpStatus.SC_NOT_MODIFIED - && status != HttpStatus.SC_RESET_CONTENT; - } - - /** - * Synchronously send a request and obtain the response. - * - * @param request the request to send. It will be preprocessed. - * @param conn the open connection over which to send - * - * @return the response to the request, postprocessed - * - * @throws HttpException in case of a protocol or processing problem - * @throws IOException in case of an I/O problem - */ - public HttpResponse execute( - final HttpRequest request, - final HttpClientConnection conn, - final HttpContext context) - throws IOException, HttpException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (conn == null) { - throw new IllegalArgumentException("Client connection may not be null"); - } - if (context == null) { - throw new IllegalArgumentException("HTTP context may not be null"); - } - - try { - HttpResponse response = doSendRequest(request, conn, context); - if (response == null) { - response = doReceiveResponse(request, conn, context); - } - return response; - } catch (IOException ex) { - conn.close(); - throw ex; - } catch (HttpException ex) { - conn.close(); - throw ex; - } catch (RuntimeException ex) { - conn.close(); - throw ex; - } - } - - /** - * Prepare a request for sending. - * - * @param request the request to prepare - * @param processor the processor to use - * @param context the context for sending the request - * - * @throws HttpException in case of a protocol or processing problem - * @throws IOException in case of an I/O problem - */ - public void preProcess( - final HttpRequest request, - final HttpProcessor processor, - final HttpContext context) - throws HttpException, IOException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (processor == null) { - throw new IllegalArgumentException("HTTP processor may not be null"); - } - if (context == null) { - throw new IllegalArgumentException("HTTP context may not be null"); - } - processor.process(request, context); - } - - /** - * Send a request over a connection. - * This method also handles the expect-continue handshake if necessary. - * If it does not have to handle an expect-continue handshake, it will - * not use the connection for reading or anything else that depends on - * data coming in over the connection. - * - * @param request the request to send, already - * {@link #preProcess preprocessed} - * @param conn the connection over which to send the request, - * already established - * @param context the context for sending the request - * - * @return a terminal response received as part of an expect-continue - * handshake, or - * <code>null</code> if the expect-continue handshake is not used - * - * @throws HttpException in case of a protocol or processing problem - * @throws IOException in case of an I/O problem - */ - protected HttpResponse doSendRequest( - final HttpRequest request, - final HttpClientConnection conn, - final HttpContext context) - throws IOException, HttpException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (conn == null) { - throw new IllegalArgumentException("HTTP connection may not be null"); - } - if (context == null) { - throw new IllegalArgumentException("HTTP context may not be null"); - } - - HttpResponse response = null; - context.setAttribute(ExecutionContext.HTTP_REQ_SENT, Boolean.FALSE); - - conn.sendRequestHeader(request); - if (request instanceof HttpEntityEnclosingRequest) { - // Check for expect-continue handshake. We have to flush the - // headers and wait for an 100-continue response to handle it. - // If we get a different response, we must not send the entity. - boolean sendentity = true; - final ProtocolVersion ver = - request.getRequestLine().getProtocolVersion(); - if (((HttpEntityEnclosingRequest) request).expectContinue() && - !ver.lessEquals(HttpVersion.HTTP_1_0)) { - - conn.flush(); - // As suggested by RFC 2616 section 8.2.3, we don't wait for a - // 100-continue response forever. On timeout, send the entity. - int tms = request.getParams().getIntParameter( - CoreProtocolPNames.WAIT_FOR_CONTINUE, 2000); - - if (conn.isResponseAvailable(tms)) { - response = conn.receiveResponseHeader(); - if (canResponseHaveBody(request, response)) { - conn.receiveResponseEntity(response); - } - int status = response.getStatusLine().getStatusCode(); - if (status < 200) { - if (status != HttpStatus.SC_CONTINUE) { - throw new ProtocolException( - "Unexpected response: " + response.getStatusLine()); - } - // discard 100-continue - response = null; - } else { - sendentity = false; - } - } - } - if (sendentity) { - conn.sendRequestEntity((HttpEntityEnclosingRequest) request); - } - } - conn.flush(); - context.setAttribute(ExecutionContext.HTTP_REQ_SENT, Boolean.TRUE); - return response; - } - - /** - * Wait for and receive a response. - * This method will automatically ignore intermediate responses - * with status code 1xx. - * - * @param request the request for which to obtain the response - * @param conn the connection over which the request was sent - * @param context the context for receiving the response - * - * @return the final response, not yet post-processed - * - * @throws HttpException in case of a protocol or processing problem - * @throws IOException in case of an I/O problem - */ - protected HttpResponse doReceiveResponse( - final HttpRequest request, - final HttpClientConnection conn, - final HttpContext context) - throws HttpException, IOException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (conn == null) { - throw new IllegalArgumentException("HTTP connection may not be null"); - } - if (context == null) { - throw new IllegalArgumentException("HTTP context may not be null"); - } - - HttpResponse response = null; - int statuscode = 0; - - while (response == null || statuscode < HttpStatus.SC_OK) { - - response = conn.receiveResponseHeader(); - if (canResponseHaveBody(request, response)) { - conn.receiveResponseEntity(response); - } - statuscode = response.getStatusLine().getStatusCode(); - - } // while intermediate response - - return response; - - } - - /** - * Finish a response. - * This includes post-processing of the response object. - * It does <i>not</i> read the response entity, if any. - * It does <i>not</i> allow for immediate re-use of the - * connection over which the response is coming in. - * - * @param response the response object to finish - * @param processor the processor to use - * @param context the context for post-processing the response - * - * @throws HttpException in case of a protocol or processing problem - * @throws IOException in case of an I/O problem - */ - public void postProcess( - final HttpResponse response, - final HttpProcessor processor, - final HttpContext context) - throws HttpException, IOException { - if (response == null) { - throw new IllegalArgumentException("HTTP response may not be null"); - } - if (processor == null) { - throw new IllegalArgumentException("HTTP processor may not be null"); - } - if (context == null) { - throw new IllegalArgumentException("HTTP context may not be null"); - } - processor.process(response, context); - } - -} // class HttpRequestExecutor diff --git a/src/org/apache/http/protocol/HttpRequestHandler.java b/src/org/apache/http/protocol/HttpRequestHandler.java deleted file mode 100644 index 7494353..0000000 --- a/src/org/apache/http/protocol/HttpRequestHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandler.java $ - * $Revision: 613298 $ - * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 2008) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; - -/** - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 613298 $ - * - * @since 4.0 - */ -public interface HttpRequestHandler { - - void handle(HttpRequest request, HttpResponse response, HttpContext context) - throws HttpException, IOException; - -} diff --git a/src/org/apache/http/protocol/HttpRequestHandlerRegistry.java b/src/org/apache/http/protocol/HttpRequestHandlerRegistry.java deleted file mode 100644 index 668d748..0000000 --- a/src/org/apache/http/protocol/HttpRequestHandlerRegistry.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerRegistry.java $ - * $Revision: 630662 $ - * $Date: 2008-02-24 11:40:51 -0800 (Sun, 24 Feb 2008) $ - * - * ==================================================================== - * 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.protocol; - -import java.util.Map; - -/** - * Maintains a map of HTTP request handlers keyed by a request URI pattern. - * {@link HttpRequestHandler} instances can be looked up by request URI - * using the {@link HttpRequestHandlerResolver} interface.<br/> - * Patterns may have three formats: - * <ul> - * <li><code>*</code></li> - * <li><code>*<uri></code></li> - * <li><code><uri>*</code></li> - * </ul> - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 630662 $ - */ -public class HttpRequestHandlerRegistry implements HttpRequestHandlerResolver { - - private final UriPatternMatcher matcher; - - public HttpRequestHandlerRegistry() { - matcher = new UriPatternMatcher(); - } - - public void register(final String pattern, final HttpRequestHandler handler) { - matcher.register(pattern, handler); - } - - public void unregister(final String pattern) { - matcher.unregister(pattern); - } - - public void setHandlers(final Map map) { - matcher.setHandlers(map); - } - - public HttpRequestHandler lookup(final String requestURI) { - return (HttpRequestHandler) matcher.lookup(requestURI); - } - - /** - * @deprecated - */ - protected boolean matchUriRequestPattern(final String pattern, final String requestUri) { - return matcher.matchUriRequestPattern(pattern, requestUri); - } - -} diff --git a/src/org/apache/http/protocol/HttpRequestHandlerResolver.java b/src/org/apache/http/protocol/HttpRequestHandlerResolver.java deleted file mode 100644 index be92deb..0000000 --- a/src/org/apache/http/protocol/HttpRequestHandlerResolver.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestHandlerResolver.java $ - * $Revision: 613298 $ - * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 2008) $ - * - * ==================================================================== - * 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.protocol; - -/** - * Interface to be implemented by objects that can resolve - * {@link HttpRequestHandler} instances by request URI. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 613298 $ - */ -public interface HttpRequestHandlerResolver { - - HttpRequestHandler lookup(String requestURI); - -} diff --git a/src/org/apache/http/protocol/HttpRequestInterceptorList.java b/src/org/apache/http/protocol/HttpRequestInterceptorList.java deleted file mode 100644 index 84ec761..0000000 --- a/src/org/apache/http/protocol/HttpRequestInterceptorList.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpRequestInterceptorList.java $ - * $Revision: 554903 $ - * $Date: 2007-07-10 03:54:17 -0700 (Tue, 10 Jul 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.util.List; - -import org.apache.http.HttpRequestInterceptor; - -/** - * Provides access to an ordered list of request interceptors. - * Lists are expected to be built upfront and used read-only afterwards - * for {@link HttpProcessor processing}. - * - * @author <a href="mailto:rolandw at apache.org">Roland Weber</a> - * - * @version $Revision: 554903 $ - * - * @since 4.0 - */ -public interface HttpRequestInterceptorList { - - /** - * Appends a request interceptor to this list. - * - * @param itcp the request interceptor to add - */ - void addRequestInterceptor(HttpRequestInterceptor itcp) - ; - - - /** - * Inserts a request interceptor at the specified index. - * - * @param itcp the request interceptor to add - * @param index the index to insert the interceptor at - */ - void addRequestInterceptor(HttpRequestInterceptor itcp, int index); - - - /** - * Obtains the current size of this list. - * - * @return the number of request interceptors in this list - */ - int getRequestInterceptorCount() - ; - - - /** - * Obtains a request interceptor from this list. - * - * @param index the index of the interceptor to obtain, - * 0 for first - * - * @return the interceptor at the given index, or - * <code>null</code> if the index is out of range - */ - HttpRequestInterceptor getRequestInterceptor(int index) - ; - - - /** - * Removes all request interceptors from this list. - */ - void clearRequestInterceptors() - ; - - - /** - * Removes all request interceptor of the specified class - * - * @param clazz the class of the instances to be removed. - */ - void removeRequestInterceptorByClass(Class clazz); - - - /** - * Sets the request interceptors in this list. - * This list will be cleared and re-initialized to contain - * all request interceptors from the argument list. - * If the argument list includes elements that are not request - * interceptors, the behavior is implementation dependent. - * - * @param itcps the list of request interceptors - */ - void setInterceptors(List itcps) - ; - - -} // interface HttpRequestInterceptorList - diff --git a/src/org/apache/http/protocol/HttpResponseInterceptorList.java b/src/org/apache/http/protocol/HttpResponseInterceptorList.java deleted file mode 100644 index 8b5811b..0000000 --- a/src/org/apache/http/protocol/HttpResponseInterceptorList.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpResponseInterceptorList.java $ - * $Revision: 554903 $ - * $Date: 2007-07-10 03:54:17 -0700 (Tue, 10 Jul 2007) $ - * - * ==================================================================== - * 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.protocol; - - -import java.util.List; - -import org.apache.http.HttpResponseInterceptor; - - -/** - * Provides access to an ordered list of response interceptors. - * Lists are expected to be built upfront and used read-only afterwards - * for {@link HttpProcessor processing}. - * - * @author <a href="mailto:rolandw at apache.org">Roland Weber</a> - * - * @version $Revision: 554903 $ - * - * @since 4.0 - */ -public interface HttpResponseInterceptorList { - - /** - * Appends a response interceptor to this list. - * - * @param itcp the response interceptor to add - */ - void addResponseInterceptor(HttpResponseInterceptor itcp) - ; - - /** - * Inserts a response interceptor at the specified index. - * - * @param itcp the response interceptor to add - * @param index the index to insert the interceptor at - */ - void addResponseInterceptor(HttpResponseInterceptor itcp, int index); - - - /** - * Obtains the current size of this list. - * - * @return the number of response interceptors in this list - */ - int getResponseInterceptorCount() - ; - - - /** - * Obtains a response interceptor from this list. - * - * @param index the index of the interceptor to obtain, - * 0 for first - * - * @return the interceptor at the given index, or - * <code>null</code> if the index is out of range - */ - HttpResponseInterceptor getResponseInterceptor(int index) - ; - - - /** - * Removes all response interceptors from this list. - */ - void clearResponseInterceptors() - ; - - - /** - * Removes all response interceptor of the specified class - * - * @param clazz the class of the instances to be removed. - */ - void removeResponseInterceptorByClass(Class clazz); - - - /** - * Sets the response interceptors in this list. - * This list will be cleared and re-initialized to contain - * all response interceptors from the argument list. - * If the argument list includes elements that are not response - * interceptors, the behavior is implementation dependent. - * - * @param itcps the list of response interceptors - */ - void setInterceptors(List itcps) - ; - - -} // interface HttpResponseInterceptorList - diff --git a/src/org/apache/http/protocol/HttpService.java b/src/org/apache/http/protocol/HttpService.java deleted file mode 100644 index 991e931..0000000 --- a/src/org/apache/http/protocol/HttpService.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpService.java $ - * $Revision: 610763 $ - * $Date: 2008-01-10 04:01:13 -0800 (Thu, 10 Jan 2008) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.ConnectionReuseStrategy; -import org.apache.http.HttpEntity; -import org.apache.http.HttpEntityEnclosingRequest; -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseFactory; -import org.apache.http.HttpServerConnection; -import org.apache.http.HttpStatus; -import org.apache.http.HttpVersion; -import org.apache.http.MethodNotSupportedException; -import org.apache.http.ProtocolException; -import org.apache.http.ProtocolVersion; -import org.apache.http.UnsupportedHttpVersionException; -import org.apache.http.entity.ByteArrayEntity; -import org.apache.http.params.HttpParams; -import org.apache.http.params.DefaultedHttpParams; -import org.apache.http.util.EncodingUtils; - -/** - * Minimalistic server-side implementation of an HTTP processor. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 610763 $ - */ -public class HttpService { - - private HttpParams params = null; - private HttpProcessor processor = null; - private HttpRequestHandlerResolver handlerResolver = null; - private ConnectionReuseStrategy connStrategy = null; - private HttpResponseFactory responseFactory = null; - private HttpExpectationVerifier expectationVerifier = null; - - /** - * Create a new HTTP service. - * - * @param proc the processor to use on requests and responses - * @param connStrategy the connection reuse strategy - * @param responseFactory the response factory - */ - public HttpService( - final HttpProcessor proc, - final ConnectionReuseStrategy connStrategy, - final HttpResponseFactory responseFactory) { - super(); - setHttpProcessor(proc); - setConnReuseStrategy(connStrategy); - setResponseFactory(responseFactory); - } - - public void setHttpProcessor(final HttpProcessor processor) { - if (processor == null) { - throw new IllegalArgumentException("HTTP processor may not be null."); - } - this.processor = processor; - } - - public void setConnReuseStrategy(final ConnectionReuseStrategy connStrategy) { - if (connStrategy == null) { - throw new IllegalArgumentException("Connection reuse strategy may not be null"); - } - this.connStrategy = connStrategy; - } - - public void setResponseFactory(final HttpResponseFactory responseFactory) { - if (responseFactory == null) { - throw new IllegalArgumentException("Response factory may not be null"); - } - this.responseFactory = responseFactory; - } - - public void setHandlerResolver(final HttpRequestHandlerResolver handlerResolver) { - this.handlerResolver = handlerResolver; - } - - public void setExpectationVerifier(final HttpExpectationVerifier expectationVerifier) { - this.expectationVerifier = expectationVerifier; - } - - public HttpParams getParams() { - return this.params; - } - - public void setParams(final HttpParams params) { - this.params = params; - } - - public void handleRequest( - final HttpServerConnection conn, - final HttpContext context) throws IOException, HttpException { - - context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); - - HttpResponse response = null; - - try { - - HttpRequest request = conn.receiveRequestHeader(); - request.setParams( - new DefaultedHttpParams(request.getParams(), this.params)); - - ProtocolVersion ver = - request.getRequestLine().getProtocolVersion(); - if (!ver.lessEquals(HttpVersion.HTTP_1_1)) { - // Downgrade protocol version if greater than HTTP/1.1 - ver = HttpVersion.HTTP_1_1; - } - - if (request instanceof HttpEntityEnclosingRequest) { - - if (((HttpEntityEnclosingRequest) request).expectContinue()) { - response = this.responseFactory.newHttpResponse(ver, - HttpStatus.SC_CONTINUE, context); - response.setParams( - new DefaultedHttpParams(response.getParams(), this.params)); - - if (this.expectationVerifier != null) { - try { - this.expectationVerifier.verify(request, response, context); - } catch (HttpException ex) { - response = this.responseFactory.newHttpResponse(HttpVersion.HTTP_1_0, - HttpStatus.SC_INTERNAL_SERVER_ERROR, context); - response.setParams( - new DefaultedHttpParams(response.getParams(), this.params)); - handleException(ex, response); - } - } - if (response.getStatusLine().getStatusCode() < 200) { - // Send 1xx response indicating the server expections - // have been met - conn.sendResponseHeader(response); - conn.flush(); - response = null; - conn.receiveRequestEntity((HttpEntityEnclosingRequest) request); - } - } else { - conn.receiveRequestEntity((HttpEntityEnclosingRequest) request); - } - } - - if (response == null) { - response = this.responseFactory.newHttpResponse(ver, HttpStatus.SC_OK, context); - response.setParams( - new DefaultedHttpParams(response.getParams(), this.params)); - - context.setAttribute(ExecutionContext.HTTP_REQUEST, request); - context.setAttribute(ExecutionContext.HTTP_RESPONSE, response); - - this.processor.process(request, context); - doService(request, response, context); - } - - // Make sure the request content is fully consumed - if (request instanceof HttpEntityEnclosingRequest) { - HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity(); - if (entity != null) { - entity.consumeContent(); - } - } - - } catch (HttpException ex) { - response = this.responseFactory.newHttpResponse - (HttpVersion.HTTP_1_0, HttpStatus.SC_INTERNAL_SERVER_ERROR, - context); - response.setParams( - new DefaultedHttpParams(response.getParams(), this.params)); - handleException(ex, response); - } - - this.processor.process(response, context); - conn.sendResponseHeader(response); - conn.sendResponseEntity(response); - conn.flush(); - - if (!this.connStrategy.keepAlive(response, context)) { - conn.close(); - } - } - - protected void handleException(final HttpException ex, final HttpResponse response) { - if (ex instanceof MethodNotSupportedException) { - response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED); - } else if (ex instanceof UnsupportedHttpVersionException) { - response.setStatusCode(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED); - } else if (ex instanceof ProtocolException) { - response.setStatusCode(HttpStatus.SC_BAD_REQUEST); - } else { - response.setStatusCode(HttpStatus.SC_INTERNAL_SERVER_ERROR); - } - byte[] msg = EncodingUtils.getAsciiBytes(ex.getMessage()); - ByteArrayEntity entity = new ByteArrayEntity(msg); - entity.setContentType("text/plain; charset=US-ASCII"); - response.setEntity(entity); - } - - protected void doService( - final HttpRequest request, - final HttpResponse response, - final HttpContext context) throws HttpException, IOException { - HttpRequestHandler handler = null; - if (this.handlerResolver != null) { - String requestURI = request.getRequestLine().getUri(); - handler = this.handlerResolver.lookup(requestURI); - } - if (handler != null) { - handler.handle(request, response, context); - } else { - response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED); - } - } - -} diff --git a/src/org/apache/http/protocol/RequestConnControl.java b/src/org/apache/http/protocol/RequestConnControl.java deleted file mode 100644 index 0a7088c..0000000 --- a/src/org/apache/http/protocol/RequestConnControl.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestConnControl.java $ - * $Revision: 496070 $ - * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; - -/** - * A request interceptor that suggests connection keep-alive to the server. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 496070 $ - * - * @since 4.0 - */ -public class RequestConnControl implements HttpRequestInterceptor { - - public RequestConnControl() { - super(); - } - - public void process(final HttpRequest request, final HttpContext context) - throws HttpException, IOException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (!request.containsHeader(HTTP.CONN_DIRECTIVE)) { - // Default policy is to keep connection alive - // whenever possible - request.addHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE); - } - } - -} diff --git a/src/org/apache/http/protocol/RequestContent.java b/src/org/apache/http/protocol/RequestContent.java deleted file mode 100644 index 745f604..0000000 --- a/src/org/apache/http/protocol/RequestContent.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestContent.java $ - * $Revision: 573864 $ - * $Date: 2007-09-08 08:53:25 -0700 (Sat, 08 Sep 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpEntityEnclosingRequest; -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpVersion; -import org.apache.http.ProtocolVersion; -import org.apache.http.ProtocolException; - -/** - * A request interceptor that decides about the transport encoding. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 573864 $ - * - * @since 4.0 - */ -public class RequestContent implements HttpRequestInterceptor { - - public RequestContent() { - super(); - } - - public void process(final HttpRequest request, final HttpContext context) - throws HttpException, IOException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (request instanceof HttpEntityEnclosingRequest) { - if (request.containsHeader(HTTP.TRANSFER_ENCODING)) { - throw new ProtocolException("Transfer-encoding header already present"); - } - if (request.containsHeader(HTTP.CONTENT_LEN)) { - throw new ProtocolException("Content-Length header already present"); - } - ProtocolVersion ver = request.getRequestLine().getProtocolVersion(); - HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity(); - if (entity == null) { - request.addHeader(HTTP.CONTENT_LEN, "0"); - return; - } - // Must specify a transfer encoding or a content length - if (entity.isChunked() || entity.getContentLength() < 0) { - if (ver.lessEquals(HttpVersion.HTTP_1_0)) { - throw new ProtocolException( - "Chunked transfer encoding not allowed for " + ver); - } - request.addHeader(HTTP.TRANSFER_ENCODING, HTTP.CHUNK_CODING); - } else { - request.addHeader(HTTP.CONTENT_LEN, Long.toString(entity.getContentLength())); - } - // Specify a content type if known - if (entity.getContentType() != null && !request.containsHeader( - HTTP.CONTENT_TYPE )) { - request.addHeader(entity.getContentType()); - } - // Specify a content encoding if known - if (entity.getContentEncoding() != null && !request.containsHeader( - HTTP.CONTENT_ENCODING)) { - request.addHeader(entity.getContentEncoding()); - } - } - } - -} diff --git a/src/org/apache/http/protocol/RequestDate.java b/src/org/apache/http/protocol/RequestDate.java deleted file mode 100644 index 6462906..0000000 --- a/src/org/apache/http/protocol/RequestDate.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestDate.java $ - * $Revision: 555989 $ - * $Date: 2007-07-13 06:33:39 -0700 (Fri, 13 Jul 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpEntityEnclosingRequest; -import org.apache.http.HttpRequestInterceptor; - -/** - * A request interceptor that adds a Date header. - * For use on the client side. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 555989 $ - * - * @since 4.0 - */ -public class RequestDate implements HttpRequestInterceptor { - - private static final HttpDateGenerator DATE_GENERATOR = new HttpDateGenerator(); - - public RequestDate() { - super(); - } - - public void process(final HttpRequest request, final HttpContext context) - throws HttpException, IOException { - if (request == null) { - throw new IllegalArgumentException - ("HTTP request may not be null."); - } - if ((request instanceof HttpEntityEnclosingRequest) && - !request.containsHeader(HTTP.DATE_HEADER)) { - String httpdate = DATE_GENERATOR.getCurrentDate(); - request.setHeader(HTTP.DATE_HEADER, httpdate); - } - } - -} diff --git a/src/org/apache/http/protocol/RequestExpectContinue.java b/src/org/apache/http/protocol/RequestExpectContinue.java deleted file mode 100644 index 0799849..0000000 --- a/src/org/apache/http/protocol/RequestExpectContinue.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestExpectContinue.java $ - * $Revision: 573864 $ - * $Date: 2007-09-08 08:53:25 -0700 (Sat, 08 Sep 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpEntityEnclosingRequest; -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpVersion; -import org.apache.http.ProtocolVersion; -import org.apache.http.params.HttpProtocolParams; - -/** - * A request interceptor that enables the expect-continue handshake. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 573864 $ - * - * @since 4.0 - */ -public class RequestExpectContinue implements HttpRequestInterceptor { - - public RequestExpectContinue() { - super(); - } - - public void process(final HttpRequest request, final HttpContext context) - throws HttpException, IOException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (request instanceof HttpEntityEnclosingRequest) { - HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity(); - // Do not send the expect header if request body is known to be empty - if (entity != null && entity.getContentLength() != 0) { - ProtocolVersion ver = request.getRequestLine().getProtocolVersion(); - if (HttpProtocolParams.useExpectContinue(request.getParams()) - && !ver.lessEquals(HttpVersion.HTTP_1_0)) { - request.addHeader(HTTP.EXPECT_DIRECTIVE, HTTP.EXPECT_CONTINUE); - } - } - } - } - -} diff --git a/src/org/apache/http/protocol/RequestTargetHost.java b/src/org/apache/http/protocol/RequestTargetHost.java deleted file mode 100644 index 9349a8a..0000000 --- a/src/org/apache/http/protocol/RequestTargetHost.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestTargetHost.java $ - * $Revision: 573864 $ - * $Date: 2007-09-08 08:53:25 -0700 (Sat, 08 Sep 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; -import java.net.InetAddress; - -import org.apache.http.HttpConnection; -import org.apache.http.HttpException; -import org.apache.http.HttpHost; -import org.apache.http.HttpInetConnection; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpVersion; -import org.apache.http.ProtocolVersion; -import org.apache.http.ProtocolException; - -/** - * A request interceptor that sets the Host header for HTTP/1.1 requests. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 573864 $ - * - * @since 4.0 - */ -public class RequestTargetHost implements HttpRequestInterceptor { - - public RequestTargetHost() { - super(); - } - - public void process(final HttpRequest request, final HttpContext context) - throws HttpException, IOException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (context == null) { - throw new IllegalArgumentException("HTTP context may not be null"); - } - if (!request.containsHeader(HTTP.TARGET_HOST)) { - HttpHost targethost = (HttpHost) context - .getAttribute(ExecutionContext.HTTP_TARGET_HOST); - if (targethost == null) { - HttpConnection conn = (HttpConnection) context - .getAttribute(ExecutionContext.HTTP_CONNECTION); - if (conn instanceof HttpInetConnection) { - // Populate the context with a default HTTP host based on the - // inet address of the target host - InetAddress address = ((HttpInetConnection) conn).getRemoteAddress(); - int port = ((HttpInetConnection) conn).getRemotePort(); - if (address != null) { - targethost = new HttpHost(address.getHostName(), port); - } - } - if (targethost == null) { - ProtocolVersion ver = request.getRequestLine().getProtocolVersion(); - if (ver.lessEquals(HttpVersion.HTTP_1_0)) { - return; - } else { - throw new ProtocolException("Target host missing"); - } - } - } - request.addHeader(HTTP.TARGET_HOST, targethost.toHostString()); - } - } - -} diff --git a/src/org/apache/http/protocol/RequestUserAgent.java b/src/org/apache/http/protocol/RequestUserAgent.java deleted file mode 100644 index 5a3145f..0000000 --- a/src/org/apache/http/protocol/RequestUserAgent.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/RequestUserAgent.java $ - * $Revision: 496070 $ - * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.params.HttpProtocolParams; - -/** - * A request interceptor that adds a User-Agent header. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 496070 $ - * - * @since 4.0 - */ -public class RequestUserAgent implements HttpRequestInterceptor { - - public RequestUserAgent() { - super(); - } - - public void process(final HttpRequest request, final HttpContext context) - throws HttpException, IOException { - if (request == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (!request.containsHeader(HTTP.USER_AGENT)) { - String useragent = HttpProtocolParams.getUserAgent(request.getParams()); - if (useragent != null) { - request.addHeader(HTTP.USER_AGENT, useragent); - } - } - } - -} diff --git a/src/org/apache/http/protocol/ResponseConnControl.java b/src/org/apache/http/protocol/ResponseConnControl.java deleted file mode 100644 index 2e535fe..0000000 --- a/src/org/apache/http/protocol/ResponseConnControl.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ResponseConnControl.java $ - * $Revision: 618017 $ - * $Date: 2008-02-03 08:42:22 -0800 (Sun, 03 Feb 2008) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.Header; -import org.apache.http.HttpEntity; -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; -import org.apache.http.HttpStatus; -import org.apache.http.HttpVersion; -import org.apache.http.ProtocolVersion; - -/** - * A response interceptor that suggests connection keep-alive to the client. - * For use on the server side. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 618017 $ - * - * @since 4.0 - */ -public class ResponseConnControl implements HttpResponseInterceptor { - - public ResponseConnControl() { - super(); - } - - public void process(final HttpResponse response, final HttpContext context) - throws HttpException, IOException { - if (response == null) { - throw new IllegalArgumentException("HTTP response may not be null"); - } - if (context == null) { - throw new IllegalArgumentException("HTTP context may not be null"); - } - // Always drop connection after certain type of responses - int status = response.getStatusLine().getStatusCode(); - if (status == HttpStatus.SC_BAD_REQUEST || - status == HttpStatus.SC_REQUEST_TIMEOUT || - status == HttpStatus.SC_LENGTH_REQUIRED || - status == HttpStatus.SC_REQUEST_TOO_LONG || - status == HttpStatus.SC_REQUEST_URI_TOO_LONG || - status == HttpStatus.SC_SERVICE_UNAVAILABLE || - status == HttpStatus.SC_NOT_IMPLEMENTED) { - response.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE); - return; - } - // Always drop connection for HTTP/1.0 responses and below - // if the content body cannot be correctly delimited - HttpEntity entity = response.getEntity(); - if (entity != null) { - ProtocolVersion ver = response.getStatusLine().getProtocolVersion(); - if (entity.getContentLength() < 0 && - (!entity.isChunked() || ver.lessEquals(HttpVersion.HTTP_1_0))) { - response.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE); - return; - } - } - // Drop connection if requested by the client - HttpRequest request = (HttpRequest) - context.getAttribute(ExecutionContext.HTTP_REQUEST); - if (request != null) { - Header header = request.getFirstHeader(HTTP.CONN_DIRECTIVE); - if (header != null) { - response.setHeader(HTTP.CONN_DIRECTIVE, header.getValue()); - } - } - } - -} diff --git a/src/org/apache/http/protocol/ResponseContent.java b/src/org/apache/http/protocol/ResponseContent.java deleted file mode 100644 index d1ac054..0000000 --- a/src/org/apache/http/protocol/ResponseContent.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ResponseContent.java $ - * $Revision: 573864 $ - * $Date: 2007-09-08 08:53:25 -0700 (Sat, 08 Sep 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpException; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; -import org.apache.http.HttpStatus; -import org.apache.http.HttpVersion; -import org.apache.http.ProtocolVersion; -import org.apache.http.ProtocolException; - -/** - * A response interceptor that sets up entity-related headers. - * For use on the server side. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 573864 $ - * - * @since 4.0 - */ -public class ResponseContent implements HttpResponseInterceptor { - - public ResponseContent() { - super(); - } - - public void process(final HttpResponse response, final HttpContext context) - throws HttpException, IOException { - if (response == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (response.containsHeader(HTTP.TRANSFER_ENCODING)) { - throw new ProtocolException("Transfer-encoding header already present"); - } - if (response.containsHeader(HTTP.CONTENT_LEN)) { - throw new ProtocolException("Content-Length header already present"); - } - ProtocolVersion ver = response.getStatusLine().getProtocolVersion(); - HttpEntity entity = response.getEntity(); - if (entity != null) { - long len = entity.getContentLength(); - if (entity.isChunked() && !ver.lessEquals(HttpVersion.HTTP_1_0)) { - response.addHeader(HTTP.TRANSFER_ENCODING, HTTP.CHUNK_CODING); - } else if (len >= 0) { - response.addHeader(HTTP.CONTENT_LEN, Long.toString(entity.getContentLength())); - } - // Specify a content type if known - if (entity.getContentType() != null && !response.containsHeader( - HTTP.CONTENT_TYPE )) { - response.addHeader(entity.getContentType()); - } - // Specify a content encoding if known - if (entity.getContentEncoding() != null && !response.containsHeader( - HTTP.CONTENT_ENCODING)) { - response.addHeader(entity.getContentEncoding()); - } - } else { - int status = response.getStatusLine().getStatusCode(); - if (status != HttpStatus.SC_NO_CONTENT - && status != HttpStatus.SC_NOT_MODIFIED - && status != HttpStatus.SC_RESET_CONTENT) { - response.addHeader(HTTP.CONTENT_LEN, "0"); - } - } - } - -} diff --git a/src/org/apache/http/protocol/ResponseDate.java b/src/org/apache/http/protocol/ResponseDate.java deleted file mode 100644 index 431dc19..0000000 --- a/src/org/apache/http/protocol/ResponseDate.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ResponseDate.java $ - * $Revision: 555989 $ - * $Date: 2007-07-13 06:33:39 -0700 (Fri, 13 Jul 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpException; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; -import org.apache.http.HttpStatus; - -/** - * A response interceptor that adds a Date header. - * For use on the server side. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 555989 $ - * - * @since 4.0 - */ -public class ResponseDate implements HttpResponseInterceptor { - - private static final HttpDateGenerator DATE_GENERATOR = new HttpDateGenerator(); - - public ResponseDate() { - super(); - } - - public void process(final HttpResponse response, final HttpContext context) - throws HttpException, IOException { - if (response == null) { - throw new IllegalArgumentException - ("HTTP response may not be null."); - } - int status = response.getStatusLine().getStatusCode(); - if ((status >= HttpStatus.SC_OK) && - !response.containsHeader(HTTP.DATE_HEADER)) { - String httpdate = DATE_GENERATOR.getCurrentDate(); - response.setHeader(HTTP.DATE_HEADER, httpdate); - } - } - -} diff --git a/src/org/apache/http/protocol/ResponseServer.java b/src/org/apache/http/protocol/ResponseServer.java deleted file mode 100644 index 44df593..0000000 --- a/src/org/apache/http/protocol/ResponseServer.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/ResponseServer.java $ - * $Revision: 576073 $ - * $Date: 2007-09-16 03:53:13 -0700 (Sun, 16 Sep 2007) $ - * - * ==================================================================== - * 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.protocol; - -import java.io.IOException; - -import org.apache.http.HttpException; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; -import org.apache.http.params.CoreProtocolPNames; - -/** - * A response interceptor that adds a Server header. - * For use on the server side. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 576073 $ - * - * @since 4.0 - */ -public class ResponseServer implements HttpResponseInterceptor { - - public ResponseServer() { - super(); - } - - public void process(final HttpResponse response, final HttpContext context) - throws HttpException, IOException { - if (response == null) { - throw new IllegalArgumentException("HTTP request may not be null"); - } - if (!response.containsHeader(HTTP.SERVER_HEADER)) { - String s = (String) response.getParams().getParameter( - CoreProtocolPNames.ORIGIN_SERVER); - if (s != null) { - response.addHeader(HTTP.SERVER_HEADER, s); - } - } - } - -} diff --git a/src/org/apache/http/protocol/SyncBasicHttpContext.java b/src/org/apache/http/protocol/SyncBasicHttpContext.java deleted file mode 100644 index b1a408b..0000000 --- a/src/org/apache/http/protocol/SyncBasicHttpContext.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/SyncBasicHttpContext.java $ - * $Revision: 613298 $ - * $Date: 2008-01-18 14:09:22 -0800 (Fri, 18 Jan 2008) $ - * - * ==================================================================== - * 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.protocol; - -/** - * Thread-safe extension of the {@link BasicHttpContext}. - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 613298 $ - * - * @since 4.0 - */ -public class SyncBasicHttpContext extends BasicHttpContext { - - public SyncBasicHttpContext(final HttpContext parentContext) { - super(parentContext); - } - - public synchronized Object getAttribute(final String id) { - return super.getAttribute(id); - } - - public synchronized void setAttribute(final String id, final Object obj) { - super.setAttribute(id, obj); - } - - public synchronized Object removeAttribute(final String id) { - return super.removeAttribute(id); - } - -} diff --git a/src/org/apache/http/protocol/UriPatternMatcher.java b/src/org/apache/http/protocol/UriPatternMatcher.java deleted file mode 100644 index 2870d99..0000000 --- a/src/org/apache/http/protocol/UriPatternMatcher.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/UriPatternMatcher.java $ - * $Revision: 630662 $ - * $Date: 2008-02-24 11:40:51 -0800 (Sun, 24 Feb 2008) $ - * - * ==================================================================== - * 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.protocol; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -/** - * Maintains a map of objects keyed by a request URI pattern. - * Instances can be looked up by request URI.<br/> - * Patterns may have three formats: - * <ul> - * <li><code>*</code></li> - * <li><code>*<uri></code></li> - * <li><code><uri>*</code></li> - * </ul> - * - * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> - * - * @version $Revision: 630662 $ - */ -public class UriPatternMatcher { - - private final Map handlerMap; - - public UriPatternMatcher() { - super(); - this.handlerMap = new HashMap(); - } - - public void register(final String pattern, final Object handler) { - if (pattern == null) { - throw new IllegalArgumentException("URI request pattern may not be null"); - } - if (handler == null) { - throw new IllegalArgumentException("HTTP request handelr may not be null"); - } - this.handlerMap.put(pattern, handler); - } - - public void unregister(final String pattern) { - if (pattern == null) { - return; - } - this.handlerMap.remove(pattern); - } - - public void setHandlers(final Map map) { - if (map == null) { - throw new IllegalArgumentException("Map of handlers may not be null"); - } - this.handlerMap.clear(); - this.handlerMap.putAll(map); - } - - public Object lookup(String requestURI) { - if (requestURI == null) { - throw new IllegalArgumentException("Request URI may not be null"); - } - //Strip away the query part part if found - int index = requestURI.indexOf("?"); - if (index != -1) { - requestURI = requestURI.substring(0, index); - } - - // direct match? - Object handler = this.handlerMap.get(requestURI); - if (handler == null) { - // pattern match? - String bestMatch = null; - for (Iterator it = this.handlerMap.keySet().iterator(); it.hasNext();) { - String pattern = (String) it.next(); - if (matchUriRequestPattern(pattern, requestURI)) { - // we have a match. is it any better? - if (bestMatch == null - || (bestMatch.length() < pattern.length()) - || (bestMatch.length() == pattern.length() && pattern.endsWith("*"))) { - handler = this.handlerMap.get(pattern); - bestMatch = pattern; - } - } - } - } - return handler; - } - - protected boolean matchUriRequestPattern(final String pattern, final String requestUri) { - if (pattern.equals("*")) { - return true; - } else { - return - (pattern.endsWith("*") && requestUri.startsWith(pattern.substring(0, pattern.length() - 1))) || - (pattern.startsWith("*") && requestUri.endsWith(pattern.substring(1, pattern.length()))); - } - } - -} diff --git a/src/org/apache/http/protocol/package.html b/src/org/apache/http/protocol/package.html deleted file mode 100644 index 5056bcc..0000000 --- a/src/org/apache/http/protocol/package.html +++ /dev/null @@ -1,112 +0,0 @@ -<html> -<head> -<!-- -/* - * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/package.html $ - * $Revision: 496070 $ - * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 2007) $ - * - * ==================================================================== - * 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/>. - * - */ ---> -</head> -<body> -HTTP protocol execution framework. - -Apart from simply sending and receiving messages, there are a lot -of things to consider when communicating with HTTP. Many details -such as transport encodings or connection management are handled -by setting up or interpreting -{@link org.apache.http.Header headers} in the messages. -In order to relieve applications from the responsibility of -implementing these nitty-gritty details of the protocol, -HTTP components provides an execution framework that sets up -some of the headers before sending a message, and interprets -headers when a message has been received. -<br/> -An HTTP {@link org.apache.http.protocol.HttpProcessor processor} -typically keeps lists of so-called interceptors that will be executed -before a message is sent and after it has been received. -An application should initialize a processor, set up the lists -with the required and desired processors, and then communicate -through that processor. There are four kinds of interceptors, -depending on whether they act on -{@link org.apache.http.HttpRequestInterceptor requests} or -{@link org.apache.http.HttpResponseInterceptor responses}, -on the client or server side: - -<table border="1" cellpadding="5"> -<tr><th></th> - <th>Client</th> - <th>Server</th> -</tr> -<tr><th>Request</th> - <td>prepares headers before a request is sent</td> - <td>interprets headers when a request is received</td> -</tr> -<tr><th>Response</th> - <td>interprets headers when a response is received</td> - <td>prepares headers before a response is sent</td> -</tr> -</table> - -<p> -{@link org.apache.http.protocol.HttpRequestExecutor HttpRequestExecutor} -is a processor for the client side, -{@link org.apache.http.protocol.HttpService HttpService} -for the server side. -On the client side, a {@link org.apache.http.protocol.HttpContext context} -is used to tie together a request, the response to it, and other data -that might be associated with the request execution. It is passed to -the request executor whenever needed. -</p> - -<p> -<font size="+1"> -<i> -Information about required and recommended interceptors for the -client side will be provided elsewhere. For the time being, please -refer to the comments in the example applications or ask on -one of the mailing lists. -</i> -</font> -</p> - -<p> -<b>Note:</b> -If you want to develop a server-side application, we recommend that -you implement your application as a servlet running in a servlet engine -like <a href="http://tomcat.apache.org/">Tomcat</a> or full-blown -JSEE container like <a href="http://geronimo.apache.org/">Geronimo</a>. -If you prefer to implement a server-side application based on our -{@link org.apache.http.protocol.HttpService HttpService}, we'll -assume that you know what you're doing and that you don't need -help in figuring out which interceptors need to be configured. -</p> - - -</body> -</html> |