
com.github.t3t5u.common.http.AbstractInconvertibleInvoker Maven / Gradle / Ivy
The newest version!
package com.github.t3t5u.common.http;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.t3t5u.common.util.ConcurrentUtils;
public abstract class AbstractInconvertibleInvoker> extends AbstractInvoker, T, CONFIGURATION> {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractInconvertibleInvoker.class);
private final Method method;
private final String url;
private final String queryString;
private final Map> requestProperties;
private final CONFIGURATION configuration;
protected AbstractInconvertibleInvoker(final Method method, final String url, final String queryString, final Map> requestProperties, final CONFIGURATION configuration) {
this.method = method;
this.url = url;
this.queryString = queryString;
this.requestProperties = requestProperties;
this.configuration = configuration;
}
@Override
public Future> invoke(final Executor executor, final int retryCount, final long interval, final TimeUnit unit) {
return execute(executor, new Callable>() {
@Override
public Result call() throws Exception {
return AbstractInconvertibleInvoker.this.call(retryCount, interval, unit);
}
});
}
protected Result call(final int retryCount, final long interval, final TimeUnit unit) {
Result result = null;
int retry = 0;
do {
LOGGER.info("retry: " + retry);
result = perform();
} while (isRetry(result) && (++retry < retryCount) && !isCanceled() && ConcurrentUtils.sleepInterruptibly(interval, unit));
return result;
}
@Override
protected Method getMethod() {
return method;
}
@Override
protected String getUrl() {
return url;
}
@Override
protected String getQueryString() {
return queryString;
}
@Override
protected Map> getRequestProperties() {
return requestProperties;
}
@Override
protected CONFIGURATION getConfiguration() {
return configuration;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy