diff --git a/src/main/java/com/googlesource/gerrit/plugins/serverconfig/ServerConfigServlet.java b/src/main/java/com/googlesource/gerrit/plugins/serverconfig/ServerConfigServlet.java
index fd254cf..7e0e937 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serverconfig/ServerConfigServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serverconfig/ServerConfigServlet.java
@@ -108,7 +108,7 @@
 
   private void writeFileAndFireAuditEvent(HttpServletRequest req,
       HttpServletResponse res) throws IOException {
-    File oldFile = configFile(req);
+    File oldFile = resolveFile(req);
     File dir = oldFile.getParentFile();
     File newFile = File.createTempFile(oldFile.getName(), ".new", dir);
     streamRequestToFile(req, newFile);
@@ -173,19 +173,19 @@
   }
 
   private boolean isGerritConfig(HttpServletRequest req) throws IOException {
-    File f = configFile(req);
+    File f = resolveFile(req);
     return gerrit_config_path.equals(f.getCanonicalPath());
   }
 
   private boolean isValidFile(HttpServletRequest req) throws IOException {
-    File f = configFile(req);
+    File f = resolveFile(req);
     if (!f.isFile()) {
       return false;
     }
     return isParent(etc_dir, f) || isParent(static_dir, f);
   }
 
-  private File configFile(HttpServletRequest req) {
+  private File resolveFile(HttpServletRequest req) {
     return new File(site_path, req.getServletPath() + req.getPathInfo());
   }
 
@@ -205,7 +205,7 @@
 
   private void streamFile(HttpServletRequest req, HttpServletResponse res)
       throws IOException {
-    File f = configFile(req);
+    File f = resolveFile(req);
     res.setStatus(HttpServletResponse.SC_OK);
     res.setContentType("application/octet-stream");
     res.setContentLength((int) f.length());
@@ -218,7 +218,7 @@
   private void writeFile(HttpServletRequest req, HttpServletResponse res)
       throws IOException {
     res.setStatus(HttpServletResponse.SC_NO_CONTENT);
-    streamRequestToFile(req, configFile(req));
+    streamRequestToFile(req, resolveFile(req));
   }
 
   private void streamRequestToFile(HttpServletRequest req, File file)
