GitilesFilter: Factor out methods for setting default fields

Change-Id: Ie37249d6faf3e66a8e8b41adcc226ec0c6ea7f4a
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 dcde5f5..20212b6 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
@@ -293,25 +293,37 @@
   }
 
   private void setDefaultFields(FilterConfig filterConfig) throws ServletException {
-    Config config;
-    if (this.config != null) {
-      config = this.config;
-    } else {
+    setDefaultConfig(filterConfig);
+    setDefaultRenderer(filterConfig);
+    setDefaultUrls();
+    setDefaultAccess();
+    setDefaultVisbilityCache();
+    setDefaultTimeCache();
+    setDefaultGitwebRedirect();
+  }
+
+  private void setDefaultConfig(FilterConfig filterConfig) throws ServletException {
+    if (config == null) {
       try {
-        this.config = config = GitilesConfig.loadDefault(filterConfig);
+        config = GitilesConfig.loadDefault(filterConfig);
       } catch (IOException e) {
         throw new ServletException(e);
       } catch (ConfigInvalidException e) {
         throw new ServletException(e);
       }
     }
+  }
 
+  private void setDefaultRenderer(FilterConfig filterConfig) {
     if (renderer == null) {
       renderer = new DefaultRenderer(
           filterConfig.getServletContext().getContextPath() + STATIC_PREFIX,
           Renderer.toFileURL(config.getString("gitiles", null, "customTemplates")),
           Objects.firstNonNull(config.getString("gitiles", null, "siteTitle"), "Gitiles"));
     }
+  }
+
+  private void setDefaultUrls() throws ServletException {
     if (urls == null) {
       try {
         urls = new DefaultUrls(
@@ -322,6 +334,9 @@
         throw new ServletException(e);
       }
     }
+  }
+
+  private void setDefaultAccess() throws ServletException {
     if (accessFactory == null || resolver == null) {
       String basePath = config.getString("gitiles", null, "basePath");
       if (basePath == null) {
@@ -350,6 +365,9 @@
         }
       }
     }
+  }
+
+  private void setDefaultVisbilityCache() {
     if (visibilityCache == null) {
       if (config.getSubsections("cache").contains("visibility")) {
         visibilityCache =
@@ -358,6 +376,9 @@
         visibilityCache = new VisibilityCache(false);
       }
     }
+  }
+
+  private void setDefaultTimeCache() {
     if (timeCache == null) {
       if (config.getSubsections("cache").contains("tagTime")) {
         timeCache = new TimeCache(ConfigUtil.getCacheBuilder(config, "tagTime"));
@@ -365,6 +386,9 @@
         timeCache = new TimeCache();
       }
     }
+  }
+
+  private void setDefaultGitwebRedirect() {
     if (gitwebRedirect == null) {
       if (config.getBoolean("gitiles", null, "redirectGitweb", true)) {
         gitwebRedirect = new GitwebRedirectFilter();