Move archiveFormat into BaseServlet

Change-Id: I9dbbfd9fcf6e6342f71324d89b959d1fc7e6429f
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java
index b0ab8fb..defaadb 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java
@@ -42,7 +42,7 @@
   private final Map<String, ArchiveFormat> byExt;
 
   public ArchiveServlet(Config cfg) {
-    super(null);
+    super(cfg, null);
     byExt = ArchiveFormat.byExtension(cfg);
   }
 
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
index 986689c..2969987 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
@@ -14,15 +14,25 @@
 
 package com.google.gitiles;
 
+import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.gitiles.FormatType.DEFAULT;
 import static com.google.gitiles.FormatType.HTML;
 import static com.google.gitiles.FormatType.JSON;
 import static com.google.gitiles.FormatType.TEXT;
-
 import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
 import static javax.servlet.http.HttpServletResponse.SC_OK;
 
+import com.google.common.base.Charsets;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+import com.google.common.net.HttpHeaders;
+import com.google.gson.FieldNamingPolicy;
+import com.google.gson.GsonBuilder;
+
+import org.eclipse.jgit.lib.Config;
+import org.joda.time.Instant;
+
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.lang.reflect.Type;
@@ -33,15 +43,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.joda.time.Instant;
-
-import com.google.common.base.Charsets;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-import com.google.common.net.HttpHeaders;
-import com.google.gson.FieldNamingPolicy;
-import com.google.gson.GsonBuilder;
-
 /** Base servlet class for Gitiles servlets that serve Soy templates. */
 public abstract class BaseServlet extends HttpServlet {
   private static final long serialVersionUID = 1L;
@@ -55,7 +56,7 @@
   }
 
   public static BaseServlet notFoundServlet() {
-    return new BaseServlet(null) {
+    return new BaseServlet(new Config(), null) {
       private static final long serialVersionUID = 1L;
       @Override
       public void service(HttpServletRequest req, HttpServletResponse res) {
@@ -165,9 +166,11 @@
   }
 
   protected final Renderer renderer;
+  protected final ArchiveFormat archiveFormat;
 
-  protected BaseServlet(Renderer renderer) {
+  protected BaseServlet(Config cfg, Renderer renderer) {
     this.renderer = renderer;
+    this.archiveFormat = ArchiveFormat.getDefault(checkNotNull(cfg, "cfg"));
   }
 
   /**
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DescribeServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/DescribeServlet.java
index 7b49f63..96e3cf9 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DescribeServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DescribeServlet.java
@@ -17,13 +17,9 @@
 import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
 
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableMap;
+import com.google.gson.reflect.TypeToken;
 
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.NameRevCommand;
@@ -31,13 +27,18 @@
 import org.eclipse.jgit.errors.AmbiguousObjectException;
 import org.eclipse.jgit.errors.RevisionSyntaxException;
 import org.eclipse.jgit.http.server.ServletUtils;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.Repository;
 
-import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableMap;
-import com.google.gson.reflect.TypeToken;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /** Serves an API result describing an object. */
 public class DescribeServlet extends BaseServlet {
@@ -53,8 +54,8 @@
         && (values.get(0).equals("") || values.get(0).equals("1"));
   }
 
-  protected DescribeServlet() {
-    super(null);
+  protected DescribeServlet(Config cfg) {
+    super(cfg, null);
   }
 
   @Override
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
index 565086c..e5fad23 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
@@ -48,12 +48,10 @@
   private static final String PLACEHOLDER = "id=\"DIFF_OUTPUT_BLOCK\"";
 
   private final Linkifier linkifier;
-  private final ArchiveFormat archiveFormat;
 
   public DiffServlet(Config cfg, Renderer renderer, Linkifier linkifier) {
-    super(renderer);
+    super(cfg, renderer);
     this.linkifier = checkNotNull(linkifier, "linkifier");
-    this.archiveFormat = ArchiveFormat.getDefault(checkNotNull(cfg, "cfg"));
   }
 
   @Override
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
index 6f4468d..55826b9 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
@@ -227,21 +227,21 @@
     checkNotInitialized();
     switch (view) {
       case HOST_INDEX:
-        return new HostIndexServlet(renderer, urls, accessFactory);
+        return new HostIndexServlet(config, renderer, urls, accessFactory);
       case REPOSITORY_INDEX:
-        return new RepositoryIndexServlet(renderer, accessFactory, timeCache);
+        return new RepositoryIndexServlet(config, renderer, accessFactory, timeCache);
       case REFS:
-        return new RefServlet(renderer, timeCache);
+        return new RefServlet(config, renderer, timeCache);
       case REVISION:
         return new RevisionServlet(config, renderer, linkifier());
       case PATH:
-        return new PathServlet(renderer, urls);
+        return new PathServlet(config, renderer, urls);
       case DIFF:
         return new DiffServlet(config, renderer, linkifier());
       case LOG:
-        return new LogServlet(renderer, linkifier());
+        return new LogServlet(config, renderer, linkifier());
       case DESCRIBE:
-        return new DescribeServlet();
+        return new DescribeServlet(config);
       case ARCHIVE:
         return new ArchiveServlet(config);
       default:
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java
index db563ff..e713c7b 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java
@@ -28,6 +28,7 @@
 import com.google.template.soy.data.SoyMapData;
 
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.transport.ServiceMayNotContinueException;
 import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
 import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
@@ -51,9 +52,9 @@
   protected final GitilesUrls urls;
   private final GitilesAccess.Factory accessFactory;
 
-  public HostIndexServlet(Renderer renderer, GitilesUrls urls,
+  public HostIndexServlet(Config cfg, Renderer renderer, GitilesUrls urls,
       GitilesAccess.Factory accessFactory) {
-    super(renderer);
+    super(cfg, renderer);
     this.urls = checkNotNull(urls, "urls");
     this.accessFactory = checkNotNull(accessFactory, "accessFactory");
   }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
index fbb2c90..53cb426 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -15,7 +15,6 @@
 package com.google.gitiles;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-
 import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
 
@@ -33,6 +32,7 @@
 import org.eclipse.jgit.errors.RevWalkException;
 import org.eclipse.jgit.http.server.ServletUtils;
 import org.eclipse.jgit.lib.AbbreviatedObjectId;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectReader;
@@ -66,8 +66,8 @@
 
   private final Linkifier linkifier;
 
-  public LogServlet(Renderer renderer, Linkifier linkifier) {
-    super(renderer);
+  public LogServlet(Config cfg, Renderer renderer, Linkifier linkifier) {
+    super(cfg, renderer);
     this.linkifier = checkNotNull(linkifier, "linkifier");
   }
 
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
index 8f060f6..da212aa 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
@@ -16,10 +16,8 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.gitiles.TreeSoyData.resolveTargetUrl;
-
 import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-
 import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
 import static org.eclipse.jgit.lib.Constants.OBJ_COMMIT;
 import static org.eclipse.jgit.lib.Constants.OBJ_TREE;
@@ -37,6 +35,7 @@
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.errors.StopWalkException;
 import org.eclipse.jgit.http.server.ServletUtils;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.FileMode;
 import org.eclipse.jgit.lib.ObjectId;
@@ -108,8 +107,8 @@
 
   private final GitilesUrls urls;
 
-  public PathServlet(Renderer renderer, GitilesUrls urls) {
-    super(renderer);
+  public PathServlet(Config cfg, Renderer renderer, GitilesUrls urls) {
+    super(cfg, renderer);
     this.urls = checkNotNull(urls, "urls");
   }
 
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
index 8d259a8..e499266 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -26,6 +26,7 @@
 
 import org.eclipse.jgit.http.server.ServletUtils;
 import org.eclipse.jgit.lib.AnyObjectId;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.lib.RefComparator;
@@ -49,8 +50,8 @@
 
   private final TimeCache timeCache;
 
-  protected RefServlet(Renderer renderer, TimeCache timeCache) {
-    super(renderer);
+  protected RefServlet(Config cfg, Renderer renderer, TimeCache timeCache) {
+    super(cfg, renderer);
     this.timeCache = checkNotNull(timeCache, "timeCache");
   }
 
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
index a07a649..18614a1 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -22,6 +22,7 @@
 import com.google.common.collect.Maps;
 
 import org.eclipse.jgit.http.server.ServletUtils;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.Repository;
@@ -46,9 +47,9 @@
   private final GitilesAccess.Factory accessFactory;
   private final TimeCache timeCache;
 
-  public RepositoryIndexServlet(Renderer renderer, GitilesAccess.Factory accessFactory,
+  public RepositoryIndexServlet(Config cfg, Renderer renderer, GitilesAccess.Factory accessFactory,
       TimeCache timeCache) {
-    super(renderer);
+    super(cfg, renderer);
     this.accessFactory = checkNotNull(accessFactory, "accessFactory");
     this.timeCache = checkNotNull(timeCache, "timeCache");
   }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
index c22d627..f79df15 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
@@ -15,9 +15,7 @@
 package com.google.gitiles;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-
 import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
 import static org.eclipse.jgit.lib.Constants.OBJ_COMMIT;
 import static org.eclipse.jgit.lib.Constants.OBJ_TAG;
@@ -54,12 +52,10 @@
   private static final Logger log = LoggerFactory.getLogger(RevisionServlet.class);
 
   private final Linkifier linkifier;
-  private final ArchiveFormat archiveFormat;
 
   public RevisionServlet(Config cfg, Renderer renderer, Linkifier linkifier) {
-    super(renderer);
+    super(cfg, renderer);
     this.linkifier = checkNotNull(linkifier, "linkifier");
-    this.archiveFormat = ArchiveFormat.getDefault(checkNotNull(cfg, "cfg"));
   }
 
   @Override
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/RepositoryIndexServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/RepositoryIndexServletTest.java
index 2045dc6..876390b 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/RepositoryIndexServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/RepositoryIndexServletTest.java
@@ -16,10 +16,8 @@
 
 import static com.google.gitiles.TestGitilesUrls.URLS;
 
-import java.io.IOException;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 
 import junit.framework.TestCase;
 
@@ -27,9 +25,12 @@
 import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
 import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
 import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.lib.Config;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
+import java.io.IOException;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
 
 /** Tests for {@link RepositoryIndexServlet}. */
 public class RepositoryIndexServletTest extends TestCase {
@@ -41,6 +42,7 @@
     repo = new TestRepository<DfsRepository>(
         new InMemoryRepository(new DfsRepositoryDescription("test")));
     servlet = new RepositoryIndexServlet(
+        new Config(),
         new DefaultRenderer(),
         new TestGitilesAccess(repo.getRepository()),
         new TimeCache());