1 /* 2 * (C)opyright 2010, Nikolaos Georgosopoulos 3 * 4 * This file is part of URLChecker. 5 6 URLChecker is free software: you can redistribute it and/or modify 7 it under the terms of the Lesser General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 URLChecker is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the Lesser General Public License 17 along with URLChecker. If not, see <http://www.gnu.org/licenses/>. 18 19 */ 20 package net.sf.urlchecker.commands; 21 22 import java.io.IOException; 23 24 import net.sf.urlchecker.communication.CommunicationFactory; 25 import net.sf.urlchecker.exception.handling.ExceptionHandler; 26 27 import org.apache.commons.httpclient.HttpMethod; 28 import org.apache.commons.httpclient.HttpMethodRetryHandler; 29 30 /** 31 * The RetryHandler Class that controls the old client's retry method. This 32 * class is control from the configuration for the maximum number of retries and 33 * the Exception handling. 34 * 35 * <p> 36 * <b> $Id: RetryHandler.java 181 2010-12-12 23:39:00Z georgosn $</b> 37 * </p> 38 * 39 * @author $LastChangedBy: georgosn $ 40 * @version $LastChangedRevision: 181 $ 41 */ 42 public class RetryHandler implements HttpMethodRetryHandler { 43 44 /* 45 * (non-Javadoc) 46 * 47 * @see 48 * org.apache.commons.httpclient.HttpMethodRetryHandler#retryMethod(org. 49 * apache.commons.httpclient.HttpMethod, java.io.IOException, int) 50 */ 51 /** {@inheritDoc} */ 52 public boolean retryMethod(final HttpMethod method, 53 final IOException exception, final int executionCount) { 54 if (executionCount >= CommunicationFactory.getInstance() 55 .getMaxretries()) { 56 // Do not retry if over max retry count 57 return false; 58 } 59 final ExceptionHandler handler = CommunicationFactory.getInstance() 60 .getExceptionHandlers().get(exception.getClass().getName()); 61 if (null != handler) { 62 return handler.handle(method, exception, executionCount); 63 } 64 if (!method.isRequestSent()) { 65 // Retry if the request has not been sent fully or 66 // if it's OK to retry methods that have been sent 67 return true; 68 } 69 // otherwise do not retry 70 return false; 71 72 } 73 }