summaryrefslogtreecommitdiffstats
path: root/src/org/apache/http/impl/client/AbstractHttpClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/http/impl/client/AbstractHttpClient.java')
-rw-r--r--src/org/apache/http/impl/client/AbstractHttpClient.java697
1 files changed, 0 insertions, 697 deletions
diff --git a/src/org/apache/http/impl/client/AbstractHttpClient.java b/src/org/apache/http/impl/client/AbstractHttpClient.java
deleted file mode 100644
index 3a1b838..0000000
--- a/src/org/apache/http/impl/client/AbstractHttpClient.java
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/AbstractHttpClient.java $
- * $Revision: 677250 $
- * $Date: 2008-07-16 04:45:47 -0700 (Wed, 16 Jul 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.impl.client;
-
-import java.io.IOException;
-import java.net.URI;
-import java.lang.reflect.UndeclaredThrowableException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.http.ConnectionReuseStrategy;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.HttpEntity;
-import org.apache.http.auth.AuthSchemeRegistry;
-import org.apache.http.client.AuthenticationHandler;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.RequestDirector;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.CookieStore;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.HttpRequestRetryHandler;
-import org.apache.http.client.RedirectHandler;
-import org.apache.http.client.UserTokenHandler;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.ConnectionKeepAliveStrategy;
-import org.apache.http.conn.routing.HttpRoutePlanner;
-import org.apache.http.cookie.CookieSpecRegistry;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.BasicHttpProcessor;
-import org.apache.http.protocol.DefaultedHttpContext;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpProcessor;
-import org.apache.http.protocol.HttpRequestExecutor;
-
-/**
- * Convenience base class for HTTP client implementations.
- *
- * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
- * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
- *
- * <!-- empty lines to avoid svn diff problems -->
- * @version $Revision: 677250 $
- *
- * @since 4.0
- */
-public abstract class AbstractHttpClient implements HttpClient {
-
- private final Log log = LogFactory.getLog(getClass());
-
- /** The parameters. */
- private HttpParams defaultParams;
-
- /** The request executor. */
- private HttpRequestExecutor requestExec;
-
- /** The connection manager. */
- private ClientConnectionManager connManager;
-
- /** The connection re-use strategy. */
- private ConnectionReuseStrategy reuseStrategy;
-
- /** The connection keep-alive strategy. */
- private ConnectionKeepAliveStrategy keepAliveStrategy;
-
- /** The cookie spec registry. */
- private CookieSpecRegistry supportedCookieSpecs;
-
- /** The authentication scheme registry. */
- private AuthSchemeRegistry supportedAuthSchemes;
-
- /** The HTTP processor. */
- private BasicHttpProcessor httpProcessor;
-
- /** The request retry handler. */
- private HttpRequestRetryHandler retryHandler;
-
- /** The redirect handler. */
- private RedirectHandler redirectHandler;
-
- /** The target authentication handler. */
- private AuthenticationHandler targetAuthHandler;
-
- /** The proxy authentication handler. */
- private AuthenticationHandler proxyAuthHandler;
-
- /** The cookie store. */
- private CookieStore cookieStore;
-
- /** The credentials provider. */
- private CredentialsProvider credsProvider;
-
- /** The route planner. */
- private HttpRoutePlanner routePlanner;
-
- /** The user token handler. */
- private UserTokenHandler userTokenHandler;
-
-
- /**
- * Creates a new HTTP client.
- *
- * @param conman the connection manager
- * @param params the parameters
- */
- protected AbstractHttpClient(
- final ClientConnectionManager conman,
- final HttpParams params) {
- defaultParams = params;
- connManager = conman;
- } // constructor
-
- protected abstract HttpParams createHttpParams();
-
-
- protected abstract HttpContext createHttpContext();
-
-
- protected abstract HttpRequestExecutor createRequestExecutor();
-
-
- protected abstract ClientConnectionManager createClientConnectionManager();
-
-
- protected abstract AuthSchemeRegistry createAuthSchemeRegistry();
-
-
- protected abstract CookieSpecRegistry createCookieSpecRegistry();
-
-
- protected abstract ConnectionReuseStrategy createConnectionReuseStrategy();
-
-
- protected abstract ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy();
-
-
- protected abstract BasicHttpProcessor createHttpProcessor();
-
-
- protected abstract HttpRequestRetryHandler createHttpRequestRetryHandler();
-
-
- protected abstract RedirectHandler createRedirectHandler();
-
-
- protected abstract AuthenticationHandler createTargetAuthenticationHandler();
-
-
- protected abstract AuthenticationHandler createProxyAuthenticationHandler();
-
-
- protected abstract CookieStore createCookieStore();
-
-
- protected abstract CredentialsProvider createCredentialsProvider();
-
-
- protected abstract HttpRoutePlanner createHttpRoutePlanner();
-
-
- protected abstract UserTokenHandler createUserTokenHandler();
-
-
- // non-javadoc, see interface HttpClient
- public synchronized final HttpParams getParams() {
- if (defaultParams == null) {
- defaultParams = createHttpParams();
- }
- return defaultParams;
- }
-
-
- /**
- * Replaces the parameters.
- * The implementation here does not update parameters of dependent objects.
- *
- * @param params the new default parameters
- */
- public synchronized void setParams(HttpParams params) {
- defaultParams = params;
- }
-
-
- public synchronized final ClientConnectionManager getConnectionManager() {
- if (connManager == null) {
- connManager = createClientConnectionManager();
- }
- return connManager;
- }
-
-
- public synchronized final HttpRequestExecutor getRequestExecutor() {
- if (requestExec == null) {
- requestExec = createRequestExecutor();
- }
- return requestExec;
- }
-
-
- public synchronized final AuthSchemeRegistry getAuthSchemes() {
- if (supportedAuthSchemes == null) {
- supportedAuthSchemes = createAuthSchemeRegistry();
- }
- return supportedAuthSchemes;
- }
-
-
- public synchronized void setAuthSchemes(final AuthSchemeRegistry authSchemeRegistry) {
- supportedAuthSchemes = authSchemeRegistry;
- }
-
-
- public synchronized final CookieSpecRegistry getCookieSpecs() {
- if (supportedCookieSpecs == null) {
- supportedCookieSpecs = createCookieSpecRegistry();
- }
- return supportedCookieSpecs;
- }
-
-
- public synchronized void setCookieSpecs(final CookieSpecRegistry cookieSpecRegistry) {
- supportedCookieSpecs = cookieSpecRegistry;
- }
-
-
- public synchronized final ConnectionReuseStrategy getConnectionReuseStrategy() {
- if (reuseStrategy == null) {
- reuseStrategy = createConnectionReuseStrategy();
- }
- return reuseStrategy;
- }
-
-
- public synchronized void setReuseStrategy(final ConnectionReuseStrategy reuseStrategy) {
- this.reuseStrategy = reuseStrategy;
- }
-
-
- public synchronized final ConnectionKeepAliveStrategy getConnectionKeepAliveStrategy() {
- if (keepAliveStrategy == null) {
- keepAliveStrategy = createConnectionKeepAliveStrategy();
- }
- return keepAliveStrategy;
- }
-
-
- public synchronized void setKeepAliveStrategy(final ConnectionKeepAliveStrategy keepAliveStrategy) {
- this.keepAliveStrategy = keepAliveStrategy;
- }
-
-
- public synchronized final HttpRequestRetryHandler getHttpRequestRetryHandler() {
- if (retryHandler == null) {
- retryHandler = createHttpRequestRetryHandler();
- }
- return retryHandler;
- }
-
-
- public synchronized void setHttpRequestRetryHandler(final HttpRequestRetryHandler retryHandler) {
- this.retryHandler = retryHandler;
- }
-
-
- public synchronized final RedirectHandler getRedirectHandler() {
- if (redirectHandler == null) {
- redirectHandler = createRedirectHandler();
- }
- return redirectHandler;
- }
-
-
- public synchronized void setRedirectHandler(final RedirectHandler redirectHandler) {
- this.redirectHandler = redirectHandler;
- }
-
-
- public synchronized final AuthenticationHandler getTargetAuthenticationHandler() {
- if (targetAuthHandler == null) {
- targetAuthHandler = createTargetAuthenticationHandler();
- }
- return targetAuthHandler;
- }
-
-
- public synchronized void setTargetAuthenticationHandler(
- final AuthenticationHandler targetAuthHandler) {
- this.targetAuthHandler = targetAuthHandler;
- }
-
-
- public synchronized final AuthenticationHandler getProxyAuthenticationHandler() {
- if (proxyAuthHandler == null) {
- proxyAuthHandler = createProxyAuthenticationHandler();
- }
- return proxyAuthHandler;
- }
-
-
- public synchronized void setProxyAuthenticationHandler(
- final AuthenticationHandler proxyAuthHandler) {
- this.proxyAuthHandler = proxyAuthHandler;
- }
-
-
- public synchronized final CookieStore getCookieStore() {
- if (cookieStore == null) {
- cookieStore = createCookieStore();
- }
- return cookieStore;
- }
-
-
- public synchronized void setCookieStore(final CookieStore cookieStore) {
- this.cookieStore = cookieStore;
- }
-
-
- public synchronized final CredentialsProvider getCredentialsProvider() {
- if (credsProvider == null) {
- credsProvider = createCredentialsProvider();
- }
- return credsProvider;
- }
-
-
- public synchronized void setCredentialsProvider(final CredentialsProvider credsProvider) {
- this.credsProvider = credsProvider;
- }
-
-
- public synchronized final HttpRoutePlanner getRoutePlanner() {
- if (this.routePlanner == null) {
- this.routePlanner = createHttpRoutePlanner();
- }
- return this.routePlanner;
- }
-
-
- public synchronized void setRoutePlanner(final HttpRoutePlanner routePlanner) {
- this.routePlanner = routePlanner;
- }
-
-
- public synchronized final UserTokenHandler getUserTokenHandler() {
- if (this.userTokenHandler == null) {
- this.userTokenHandler = createUserTokenHandler();
- }
- return this.userTokenHandler;
- }
-
-
- public synchronized void setUserTokenHandler(final UserTokenHandler userTokenHandler) {
- this.userTokenHandler = userTokenHandler;
- }
-
-
- protected synchronized final BasicHttpProcessor getHttpProcessor() {
- if (httpProcessor == null) {
- httpProcessor = createHttpProcessor();
- }
- return httpProcessor;
- }
-
-
- public synchronized void addResponseInterceptor(final HttpResponseInterceptor itcp) {
- getHttpProcessor().addInterceptor(itcp);
- }
-
-
- public synchronized void addResponseInterceptor(final HttpResponseInterceptor itcp, int index) {
- getHttpProcessor().addInterceptor(itcp, index);
- }
-
-
- public synchronized HttpResponseInterceptor getResponseInterceptor(int index) {
- return getHttpProcessor().getResponseInterceptor(index);
- }
-
-
- public synchronized int getResponseInterceptorCount() {
- return getHttpProcessor().getResponseInterceptorCount();
- }
-
-
- public synchronized void clearResponseInterceptors() {
- getHttpProcessor().clearResponseInterceptors();
- }
-
-
- public void removeResponseInterceptorByClass(Class<? extends HttpResponseInterceptor> clazz) {
- getHttpProcessor().removeResponseInterceptorByClass(clazz);
- }
-
-
- public synchronized void addRequestInterceptor(final HttpRequestInterceptor itcp) {
- getHttpProcessor().addInterceptor(itcp);
- }
-
-
- public synchronized void addRequestInterceptor(final HttpRequestInterceptor itcp, int index) {
- getHttpProcessor().addInterceptor(itcp, index);
- }
-
-
- public synchronized HttpRequestInterceptor getRequestInterceptor(int index) {
- return getHttpProcessor().getRequestInterceptor(index);
- }
-
-
- public synchronized int getRequestInterceptorCount() {
- return getHttpProcessor().getRequestInterceptorCount();
- }
-
-
- public synchronized void clearRequestInterceptors() {
- getHttpProcessor().clearRequestInterceptors();
- }
-
-
- public void removeRequestInterceptorByClass(Class<? extends HttpRequestInterceptor> clazz) {
- getHttpProcessor().removeRequestInterceptorByClass(clazz);
- }
-
-
- // non-javadoc, see interface HttpClient
- public final HttpResponse execute(HttpUriRequest request)
- throws IOException, ClientProtocolException {
-
- return execute(request, (HttpContext) null);
- }
-
-
- /**
- * Maps to {@link HttpClient#execute(HttpHost,HttpRequest,HttpContext)
- * execute(target, request, context)}.
- * The target is determined from the URI of the request.
- *
- * @param request the request to execute
- * @param context the request-specific execution context,
- * or <code>null</code> to use a default context
- */
- public final HttpResponse execute(HttpUriRequest request,
- HttpContext context)
- throws IOException, ClientProtocolException {
-
- if (request == null) {
- throw new IllegalArgumentException
- ("Request must not be null.");
- }
-
- return execute(determineTarget(request), request, context);
- }
-
- private HttpHost determineTarget(HttpUriRequest request) {
- // A null target may be acceptable if there is a default target.
- // Otherwise, the null target is detected in the director.
- HttpHost target = null;
-
- URI requestURI = request.getURI();
- if (requestURI.isAbsolute()) {
- target = new HttpHost(
- requestURI.getHost(),
- requestURI.getPort(),
- requestURI.getScheme());
- }
- return target;
- }
-
- // non-javadoc, see interface HttpClient
- public final HttpResponse execute(HttpHost target, HttpRequest request)
- throws IOException, ClientProtocolException {
-
- return execute(target, request, (HttpContext) null);
- }
-
-
- // non-javadoc, see interface HttpClient
- public final HttpResponse execute(HttpHost target, HttpRequest request,
- HttpContext context)
- throws IOException, ClientProtocolException {
-
- if (request == null) {
- throw new IllegalArgumentException
- ("Request must not be null.");
- }
- // a null target may be acceptable, this depends on the route planner
- // a null context is acceptable, default context created below
-
- HttpContext execContext = null;
- RequestDirector director = null;
-
- // Initialize the request execution context making copies of
- // all shared objects that are potentially threading unsafe.
- synchronized (this) {
-
- HttpContext defaultContext = createHttpContext();
- if (context == null) {
- execContext = defaultContext;
- } else {
- execContext = new DefaultedHttpContext(context, defaultContext);
- }
- // Create a director for this request
- director = createClientRequestDirector(
- getRequestExecutor(),
- getConnectionManager(),
- getConnectionReuseStrategy(),
- getConnectionKeepAliveStrategy(),
- getRoutePlanner(),
- getHttpProcessor().copy(),
- getHttpRequestRetryHandler(),
- getRedirectHandler(),
- getTargetAuthenticationHandler(),
- getProxyAuthenticationHandler(),
- getUserTokenHandler(),
- determineParams(request));
- }
-
- try {
- return director.execute(target, request, execContext);
- } catch(HttpException httpException) {
- throw new ClientProtocolException(httpException);
- }
- } // execute
-
-
- protected RequestDirector createClientRequestDirector(
- final HttpRequestExecutor requestExec,
- final ClientConnectionManager conman,
- final ConnectionReuseStrategy reustrat,
- final ConnectionKeepAliveStrategy kastrat,
- final HttpRoutePlanner rouplan,
- final HttpProcessor httpProcessor,
- final HttpRequestRetryHandler retryHandler,
- final RedirectHandler redirectHandler,
- final AuthenticationHandler targetAuthHandler,
- final AuthenticationHandler proxyAuthHandler,
- final UserTokenHandler stateHandler,
- final HttpParams params) {
- return new DefaultRequestDirector(
- requestExec,
- conman,
- reustrat,
- kastrat,
- rouplan,
- httpProcessor,
- retryHandler,
- redirectHandler,
- targetAuthHandler,
- proxyAuthHandler,
- stateHandler,
- params);
- }
-
- /**
- * Obtains parameters for executing a request.
- * The default implementation in this class creates a new
- * {@link ClientParamsStack} from the request parameters
- * and the client parameters.
- * <br/>
- * This method is called by the default implementation of
- * {@link #execute(HttpHost,HttpRequest,HttpContext)}
- * to obtain the parameters for the
- * {@link DefaultRequestDirector}.
- *
- * @param req the request that will be executed
- *
- * @return the parameters to use
- */
- protected HttpParams determineParams(HttpRequest req) {
- return new ClientParamsStack
- (null, getParams(), req.getParams(), null);
- }
-
-
- // non-javadoc, see interface HttpClient
- public <T> T execute(
- final HttpUriRequest request,
- final ResponseHandler<? extends T> responseHandler)
- throws IOException, ClientProtocolException {
- return execute(request, responseHandler, null);
- }
-
-
- // non-javadoc, see interface HttpClient
- public <T> T execute(
- final HttpUriRequest request,
- final ResponseHandler<? extends T> responseHandler,
- final HttpContext context)
- throws IOException, ClientProtocolException {
- HttpHost target = determineTarget(request);
- return execute(target, request, responseHandler, context);
- }
-
-
- // non-javadoc, see interface HttpClient
- public <T> T execute(
- final HttpHost target,
- final HttpRequest request,
- final ResponseHandler<? extends T> responseHandler)
- throws IOException, ClientProtocolException {
- return execute(target, request, responseHandler, null);
- }
-
-
- // non-javadoc, see interface HttpClient
- public <T> T execute(
- final HttpHost target,
- final HttpRequest request,
- final ResponseHandler<? extends T> responseHandler,
- final HttpContext context)
- throws IOException, ClientProtocolException {
- if (responseHandler == null) {
- throw new IllegalArgumentException
- ("Response handler must not be null.");
- }
-
- HttpResponse response = execute(target, request, context);
-
- T result;
- try {
- result = responseHandler.handleResponse(response);
- } catch (Throwable t) {
- HttpEntity entity = response.getEntity();
- if (entity != null) {
- try {
- entity.consumeContent();
- } catch (Throwable t2) {
- // Log this exception. The original exception is more
- // important and will be thrown to the caller.
- this.log.warn("Error consuming content after an exception.", t2);
- }
- }
-
- if (t instanceof Error) {
- throw (Error) t;
- }
-
- if (t instanceof RuntimeException) {
- throw (RuntimeException) t;
- }
-
- if (t instanceof IOException) {
- throw (IOException) t;
- }
-
- throw new UndeclaredThrowableException(t);
- }
-
- // Handling the response was successful. Ensure that the content has
- // been fully consumed.
- HttpEntity entity = response.getEntity();
- if (entity != null) {
- // Let this exception go to the caller.
- entity.consumeContent();
- }
-
- return result;
- }
-
-
-} // class AbstractHttpClient