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

net.java.ao.schema.info.CachingEntityInfoResolver Maven / Gradle / Ivy

Go to download

This is the core library for Active Objects. It is generic and can be embedded in any environment. As such it is generic and won't contain all connection pooling, etc.

There is a newer version: 6.1.1
Show newest version
package net.java.ao.schema.info;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import net.java.ao.RawEntity;

/**
 * A {@code EntityInfoResolver} which caches the computed {@link EntityInfo} for any type it is given
 */
public class CachingEntityInfoResolver extends EntityInfoResolverWrapper implements EntityInfoResolver {

    private final LoadingCache>, EntityInfo> cache;

    public CachingEntityInfoResolver(EntityInfoResolver delegate) {
        super(delegate);
        cache = CacheBuilder.newBuilder().build(new CacheLoader>, EntityInfo>() {
            @SuppressWarnings("unchecked")
            @Override
            public EntityInfo load(Class type) throws Exception {
                return CachingEntityInfoResolver.super.resolve(type);
            }
        });
    }

    @SuppressWarnings("unchecked")
    @Override
    public , K> EntityInfo resolve(Class type) {
        return cache.getUnchecked(type);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy