diff options
Diffstat (limited to 'mobile/android/thirdparty/ch/boye/httpclientandroidlib/impl/execchain/RetryExec.java')
-rw-r--r-- | mobile/android/thirdparty/ch/boye/httpclientandroidlib/impl/execchain/RetryExec.java | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/mobile/android/thirdparty/ch/boye/httpclientandroidlib/impl/execchain/RetryExec.java b/mobile/android/thirdparty/ch/boye/httpclientandroidlib/impl/execchain/RetryExec.java deleted file mode 100644 index ab78e3a83..000000000 --- a/mobile/android/thirdparty/ch/boye/httpclientandroidlib/impl/execchain/RetryExec.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * ==================================================================== - * 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 ch.boye.httpclientandroidlib.impl.execchain; - -import java.io.IOException; - -import ch.boye.httpclientandroidlib.androidextra.HttpClientAndroidLog; -/* LogFactory removed by HttpClient for Android script. */ -import ch.boye.httpclientandroidlib.Header; -import ch.boye.httpclientandroidlib.HttpException; -import ch.boye.httpclientandroidlib.NoHttpResponseException; -import ch.boye.httpclientandroidlib.annotation.Immutable; -import ch.boye.httpclientandroidlib.client.HttpRequestRetryHandler; -import ch.boye.httpclientandroidlib.client.NonRepeatableRequestException; -import ch.boye.httpclientandroidlib.client.methods.CloseableHttpResponse; -import ch.boye.httpclientandroidlib.client.methods.HttpExecutionAware; -import ch.boye.httpclientandroidlib.client.methods.HttpRequestWrapper; -import ch.boye.httpclientandroidlib.client.protocol.HttpClientContext; -import ch.boye.httpclientandroidlib.conn.routing.HttpRoute; -import ch.boye.httpclientandroidlib.util.Args; - -/** - * Request executor in the request execution chain that is responsible - * for making a decision whether a request failed due to an I/O error - * should be re-executed. - * <p/> - * Further responsibilities such as communication with the opposite - * endpoint is delegated to the next executor in the request execution - * chain. - * - * @since 4.3 - */ -@Immutable -public class RetryExec implements ClientExecChain { - - public HttpClientAndroidLog log = new HttpClientAndroidLog(getClass()); - - private final ClientExecChain requestExecutor; - private final HttpRequestRetryHandler retryHandler; - - public RetryExec( - final ClientExecChain requestExecutor, - final HttpRequestRetryHandler retryHandler) { - Args.notNull(requestExecutor, "HTTP request executor"); - Args.notNull(retryHandler, "HTTP request retry handler"); - this.requestExecutor = requestExecutor; - this.retryHandler = retryHandler; - } - - public CloseableHttpResponse execute( - final HttpRoute route, - final HttpRequestWrapper request, - final HttpClientContext context, - final HttpExecutionAware execAware) throws IOException, HttpException { - Args.notNull(route, "HTTP route"); - Args.notNull(request, "HTTP request"); - Args.notNull(context, "HTTP context"); - final Header[] origheaders = request.getAllHeaders(); - for (int execCount = 1;; execCount++) { - try { - return this.requestExecutor.execute(route, request, context, execAware); - } catch (final IOException ex) { - if (execAware != null && execAware.isAborted()) { - this.log.debug("Request has been aborted"); - throw ex; - } - if (retryHandler.retryRequest(ex, execCount, context)) { - if (this.log.isInfoEnabled()) { - this.log.info("I/O exception ("+ ex.getClass().getName() + - ") caught when processing request to " - + route + - ": " - + ex.getMessage()); - } - if (this.log.isDebugEnabled()) { - this.log.debug(ex.getMessage(), ex); - } - if (!RequestEntityProxy.isRepeatable(request)) { - this.log.debug("Cannot retry non-repeatable request"); - throw new NonRepeatableRequestException("Cannot retry request " + - "with a non-repeatable request entity", ex); - } - request.setHeaders(origheaders); - if (this.log.isInfoEnabled()) { - this.log.info("Retrying request to " + route); - } - } else { - if (ex instanceof NoHttpResponseException) { - final NoHttpResponseException updatedex = new NoHttpResponseException( - route.getTargetHost().toHostString() + " failed to respond"); - updatedex.setStackTrace(ex.getStackTrace()); - throw updatedex; - } else { - throw ex; - } - } - } - } - } - -} |