Renderer: Use lambda instead of named Function subclass

Change-Id: I74336bdc9cdec3bc3716901fecafc9676f5e8907
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DebugRenderer.java b/gitiles-servlet/src/main/java/com/google/gitiles/DebugRenderer.java
index 5a54cea..5ec22f2 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DebugRenderer.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DebugRenderer.java
@@ -33,10 +33,10 @@
       final String soyTemplatesRoot,
       String siteTitle) {
     super(
-        new FileUrlMapper(soyTemplatesRoot + File.separator),
+        fileUrlMapper(soyTemplatesRoot + File.separator),
         ImmutableMap.<String, String>of(),
         staticPrefix,
-        FluentIterable.from(customTemplatesFilenames).transform(new FileUrlMapper()),
+        FluentIterable.from(customTemplatesFilenames).transform(fileUrlMapper()),
         siteTitle);
   }
 
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 3820521..3e8867d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
@@ -18,6 +18,7 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.gitiles.GitilesServlet.STATIC_PREFIX;
+import static com.google.gitiles.Renderer.fileUrlMapper;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.FluentIterable;
@@ -25,7 +26,6 @@
 import com.google.common.collect.LinkedListMultimap;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Maps;
-import com.google.gitiles.Renderer.FileUrlMapper;
 import com.google.gitiles.blame.BlameCache;
 import com.google.gitiles.blame.BlameCacheImpl;
 import com.google.gitiles.blame.BlameServlet;
@@ -319,7 +319,7 @@
               filterConfig.getServletContext().getContextPath() + STATIC_PREFIX,
               FluentIterable.from(
                       Arrays.asList(config.getStringList("gitiles", null, "customTemplates")))
-                  .transform(new FileUrlMapper()),
+                  .transform(fileUrlMapper()),
               firstNonNull(config.getString("gitiles", null, "siteTitle"), "Gitiles"));
     }
   }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java b/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
index 7030694..73718fb 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
@@ -73,19 +73,13 @@
           "gitiles.DOC_CSS_URL", "doc.css",
           "gitiles.PRETTIFY_CSS_URL", "prettify/prettify.css");
 
-  protected static class FileUrlMapper implements Function<String, URL> {
-    private final String prefix;
+  protected static Function<String, URL> fileUrlMapper() {
+    return fileUrlMapper("");
+  }
 
-    protected FileUrlMapper() {
-      this("");
-    }
-
-    protected FileUrlMapper(String prefix) {
-      this.prefix = checkNotNull(prefix, "prefix");
-    }
-
-    @Override
-    public URL apply(String filename) {
+  protected static Function<String, URL> fileUrlMapper(String prefix) {
+    checkNotNull(prefix);
+    return filename -> {
       if (filename == null) {
         return null;
       }
@@ -94,7 +88,7 @@
       } catch (MalformedURLException e) {
         throw new IllegalArgumentException(e);
       }
-    }
+    };
   }
 
   protected ImmutableMap<String, URL> templates;