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