
com.mercateo.reflection.proxy.ProxyCache Maven / Gradle / Ivy
package com.mercateo.reflection.proxy;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.cache2k.Cache;
import org.cache2k.Cache2kBuilder;
import org.cache2k.integration.CacheLoader;
public class ProxyCache {
private final AtomicInteger counter = new AtomicInteger();
private final Cache cache;
public ProxyCache() {
cache = new Cache2kBuilder() {
}.name("proxyCache_" + counter.incrementAndGet()).loader(new CacheLoader() {
@Override
public Object load(Class aClass) {
return ProxyFactory.createProxy(aClass);
}
}).expireAfterWrite(1, TimeUnit.HOURS).entryCapacity(1000).build();
}
public T createProxy(Class clazz) {
// noinspection unchecked
return (T) cache.get(clazz);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy