package org.gcube.data.spd.utils; import org.gcube.data.spd.exception.MaxRetriesReachedException; import org.gcube.data.spd.model.exceptions.ExternalRepositoryException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public abstract class RetryCall{ Logger logger = LoggerFactory.getLogger(RetryCall.class); private int retries; private long waitTimeInMillis; protected RetryCall(int retries, long waitTimeInMillis) { super(); this.retries = retries; this.waitTimeInMillis = waitTimeInMillis; } public RetryCall() { super(); } public T call() throws MaxRetriesReachedException, E { int retry = 0; do { try{ return execute(); }catch (ExternalRepositoryException e) { logger.warn("error on external repository, "+(retry