BlameCacheImpl: initialize weigher in newBuilder() The weigher implementation should not change. Since we can now merge a partially-initialized builder with the options from a config, we can push the weigher setup into newBuilder(). (The loader still may only be initialized from the constructor since it is passed to build().) Change-Id: I9c15e4876dd8fcd517cae513099aa239dc82112c
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BlameCacheImpl.java b/gitiles-servlet/src/main/java/com/google/gitiles/BlameCacheImpl.java index d997938..1fa870b 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/BlameCacheImpl.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/BlameCacheImpl.java
@@ -34,8 +34,13 @@ /** Guava implementation of BlameCache, weighted by number of blame regions. */ public class BlameCacheImpl implements BlameCache { - public static CacheBuilder<Object, Object> newBuilder() { - return CacheBuilder.newBuilder().maximumWeight(10 << 10); + public static CacheBuilder<Key, List<Region>> newBuilder() { + return CacheBuilder.newBuilder().weigher(new Weigher<Key, List<BlameCache.Region>>() { + @Override + public int weigh(Key key, List<BlameCache.Region> value) { + return value.size(); + } + }).maximumWeight(10 << 10); } public static class Key { @@ -73,23 +78,18 @@ } } - private final LoadingCache<Key, List<BlameCache.Region>> cache; + private final LoadingCache<Key, List<Region>> cache; public BlameCacheImpl() { this(newBuilder()); } - public LoadingCache<?, ?> getCache() { + public LoadingCache<Key, List<Region>> getCache() { return cache; } - public BlameCacheImpl(CacheBuilder<Object, Object> builder) { - this.cache = builder.weigher(new Weigher<Key, List<BlameCache.Region>>() { - @Override - public int weigh(Key key, List<BlameCache.Region> value) { - return value.size(); - } - }).build(new CacheLoader<Key, List<BlameCache.Region>>() { + public BlameCacheImpl(CacheBuilder<Key, List<Region>> builder) { + this.cache = builder.build(new CacheLoader<Key, List<BlameCache.Region>>() { @Override public List<BlameCache.Region> load(Key key) throws IOException { return loadBlame(key);