package com.apollographql.apollo.cache.normalized.lru;
import com.apollographql.apollo.api.internal.Optional;
import com.apollographql.apollo.cache.normalized.NormalizedCacheFactory;
import com.apollographql.apollo.cache.normalized.RecordFieldAdapter;
import static com.apollographql.apollo.api.internal.Utils.checkNotNull;
public final class LruNormalizedCacheFactory implements NormalizedCacheFactory<LruNormalizedCache> {
private final EvictionPolicy evictionPolicy;
private final Optional<NormalizedCacheFactory> optionalSecondaryCache;
public LruNormalizedCacheFactory(EvictionPolicy evictionPolicy) {
this(evictionPolicy, null);
}
/**
* @param evictionPolicy The {@link EvictionPolicy} to manage the primary cache.
* @param secondaryCacheFactory A {@link NormalizedCacheFactory} to create a secondary cache.
*/
public LruNormalizedCacheFactory(EvictionPolicy evictionPolicy, NormalizedCacheFactory secondaryCacheFactory) {
this.evictionPolicy = checkNotNull(evictionPolicy, "evictionPolicy == null");
this.optionalSecondaryCache = Optional.fromNullable(secondaryCacheFactory);
}
@Override public LruNormalizedCache createNormalizedCache(RecordFieldAdapter fieldAdapter) {
return new LruNormalizedCache(fieldAdapter, evictionPolicy, optionalSecondaryCache);
}
}