All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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