More types less bugs
This commit is contained in:
parent
e9f92a87e6
commit
bc2b96d09b
@ -12,7 +12,7 @@ import java.util.Arrays;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import net.filebot.CachedResource2.Fetch;
|
||||
import net.filebot.CachedResource2.Source;
|
||||
import net.filebot.CachedResource2.Resource;
|
||||
import net.filebot.CachedResource2.Transform;
|
||||
import net.filebot.web.FloodLimit;
|
||||
import net.sf.ehcache.Element;
|
||||
@ -28,7 +28,7 @@ public class Cache {
|
||||
return CacheManager.getInstance().getCache(name.toLowerCase(), type);
|
||||
}
|
||||
|
||||
public <R> CachedResource2<String, R> resource(String key, Source<String> source, Fetch fetch, Transform<ByteBuffer, ? extends Object> parse, Transform<? super Object, R> cast, Duration expirationTime) {
|
||||
public <R> CachedResource2<String, R> resource(String key, Resource<String> source, Fetch fetch, Transform<ByteBuffer, ? extends Object> parse, Transform<? super Object, R> cast, Duration expirationTime) {
|
||||
return new CachedResource2<String, R>(key, source, fetch, parse, cast, expirationTime, this);
|
||||
}
|
||||
|
||||
@ -36,11 +36,11 @@ public class Cache {
|
||||
return new CachedResource2<String, String>(url, URL::new, withPermit(fetchIfModified(), r -> limit.acquirePermit() != null), getText(UTF_8), String.class::cast, expirationTime, this);
|
||||
}
|
||||
|
||||
public CachedResource2<String, Document> xml(String key, Source<String> source, Duration expirationTime) {
|
||||
public CachedResource2<String, Document> xml(String key, Resource<String> source, Duration expirationTime) {
|
||||
return new CachedResource2<String, Document>(key, source, fetchIfModified(), validateXml(getText(UTF_8)), getXml(String.class::cast), expirationTime, this);
|
||||
}
|
||||
|
||||
public CachedResource2<String, Object> json(String key, Source<String> source, Duration expirationTime) {
|
||||
public CachedResource2<String, Object> json(String key, Resource<String> source, Duration expirationTime) {
|
||||
return new CachedResource2<String, Object>(key, source, fetchIfModified(), validateJson(getText(UTF_8)), getJson(String.class::cast), expirationTime, this);
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ public class CachedResource2<K, R> {
|
||||
|
||||
private K key;
|
||||
|
||||
private Source<K> source;
|
||||
private Resource<K> source;
|
||||
private Fetch fetch;
|
||||
private Transform<ByteBuffer, ? extends Object> parse;
|
||||
private Transform<? super Object, R> cast;
|
||||
@ -30,15 +30,15 @@ public class CachedResource2<K, R> {
|
||||
private Duration expirationTime;
|
||||
|
||||
private int retryCountLimit;
|
||||
private long retryWaitTime;
|
||||
private Duration retryWaitTime;
|
||||
|
||||
private final Cache cache;
|
||||
|
||||
public CachedResource2(K key, Source<K> source, Fetch fetch, Transform<ByteBuffer, ? extends Object> parse, Transform<? super Object, R> cast, Duration expirationTime, Cache cache) {
|
||||
public CachedResource2(K key, Resource<K> source, Fetch fetch, Transform<ByteBuffer, ? extends Object> parse, Transform<? super Object, R> cast, Duration expirationTime, Cache cache) {
|
||||
this(key, source, fetch, parse, cast, DEFAULT_RETRY_LIMIT, DEFAULT_RETRY_DELAY, expirationTime, cache);
|
||||
}
|
||||
|
||||
public CachedResource2(K key, Source<K> source, Fetch fetch, Transform<ByteBuffer, ? extends Object> parse, Transform<? super Object, R> cast, int retryCountLimit, Duration retryWaitTime, Duration expirationTime, Cache cache) {
|
||||
public CachedResource2(K key, Resource<K> source, Fetch fetch, Transform<ByteBuffer, ? extends Object> parse, Transform<? super Object, R> cast, int retryCountLimit, Duration retryWaitTime, Duration expirationTime, Cache cache) {
|
||||
this.key = key;
|
||||
this.source = source;
|
||||
this.fetch = fetch;
|
||||
@ -46,7 +46,7 @@ public class CachedResource2<K, R> {
|
||||
this.cast = cast;
|
||||
this.expirationTime = expirationTime;
|
||||
this.retryCountLimit = retryCountLimit;
|
||||
this.retryWaitTime = retryWaitTime.toMillis();
|
||||
this.retryWaitTime = retryWaitTime;
|
||||
this.cache = cache;
|
||||
}
|
||||
|
||||
@ -80,7 +80,7 @@ public class CachedResource2<K, R> {
|
||||
return cast.transform(value);
|
||||
}
|
||||
|
||||
protected <T> T retry(Callable<T> callable, int retryCount, long retryWaitTime) throws Exception {
|
||||
protected <T> T retry(Callable<T> callable, int retryCount, Duration retryWaitTime) throws Exception {
|
||||
try {
|
||||
return callable.call();
|
||||
} catch (FileNotFoundException e) {
|
||||
@ -91,13 +91,13 @@ public class CachedResource2<K, R> {
|
||||
if (retryCount > 0) {
|
||||
throw e;
|
||||
}
|
||||
Thread.sleep(retryWaitTime);
|
||||
return retry(callable, retryCount - 1, retryWaitTime * 2);
|
||||
Thread.sleep(retryWaitTime.toMillis());
|
||||
return retry(callable, retryCount - 1, retryWaitTime.multipliedBy(2));
|
||||
}
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
public interface Source<K> {
|
||||
public interface Resource<K> {
|
||||
URL source(K key) throws Exception;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user