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);