in jetcache-core/src/main/java/com/alicp/jetcache/CacheUtil.java [22:66]
public static <K, V> ProxyLoader<K, V> createProxyLoader(Cache<K, V> cache,
CacheLoader<K, V> loader,
Consumer<CacheEvent> eventConsumer) {
if (loader instanceof ProxyLoader) {
return (ProxyLoader<K, V>) loader;
}
return new ProxyLoader<K, V>() {
@Override
public V load(K key) throws Throwable {
long t = System.currentTimeMillis();
V v = null;
boolean success = false;
try {
v = loader.load(key);
success = true;
} finally {
t = System.currentTimeMillis() - t;
CacheLoadEvent event = new CacheLoadEvent(cache, t, key, v, success);
eventConsumer.accept(event);
}
return v;
}
@Override
public Map<K, V> loadAll(Set<K> keys) throws Throwable {
long t = System.currentTimeMillis();
boolean success = false;
Map<K, V> kvMap = null;
try {
kvMap = loader.loadAll(keys);
success = true;
} finally {
t = System.currentTimeMillis() - t;
CacheLoadAllEvent event = new CacheLoadAllEvent(cache, t, keys, kvMap, success);
eventConsumer.accept(event);
}
return kvMap;
}
@Override
public boolean vetoCacheUpdate() {
return loader.vetoCacheUpdate();
}
};
}