diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
index 4eadcc6..005d565 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
@@ -75,24 +75,20 @@
   @Override
   public WebLinkInfo getPatchSetWebLink(
       String projectName, String commit, String commitMessage, String branchName) {
-    return new WebLinkInfo(
-        name, null, String.format("%s/%s/+/%s", baseUrl, projectName, commit));
+    return new WebLinkInfo(name, null, String.format("%s/%s/+/%s", baseUrl, projectName, commit));
   }
 
   @Override
   public WebLinkInfo getParentWebLink(
       String projectName, String commit, String commitMessage, String branchName) {
-    return new WebLinkInfo(
-        name, null, String.format("%s/%s/+/%s", baseUrl, projectName, commit));
+    return new WebLinkInfo(name, null, String.format("%s/%s/+/%s", baseUrl, projectName, commit));
   }
 
   @Override
   public WebLinkInfo getFileWebLink(
       String projectName, String revision, String hash, String fileName) {
     return new WebLinkInfo(
-        name,
-        null,
-        String.format("%s/%s/+/%s/%s", baseUrl, projectName, revision, fileName));
+        name, null, String.format("%s/%s/+/%s/%s", baseUrl, projectName, revision, fileName));
   }
 
   @Override
@@ -103,15 +99,12 @@
 
   @Override
   public WebLinkInfo getTagWebLink(String projectName, String tagName) {
-    return new WebLinkInfo(
-        name, null, String.format("%s/%s/+/%s", baseUrl, projectName, tagName));
+    return new WebLinkInfo(name, null, String.format("%s/%s/+/%s", baseUrl, projectName, tagName));
   }
 
   @Override
   public WebLinkInfo getFileHistoryWebLink(String projectName, String revision, String fileName) {
     return new WebLinkInfo(
-        name,
-        null,
-        String.format("%s/%s/+log/%s/%s", baseUrl, projectName, revision, fileName));
+        name, null, String.format("%s/%s/+log/%s/%s", baseUrl, projectName, revision, fileName));
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/HttpModule.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/HttpModule.java
index 567c05a..3d8d8da 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/HttpModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/HttpModule.java
@@ -110,16 +110,7 @@
       GitilesAccess.Factory accessFactory,
       RepositoryResolver<HttpServletRequest> resolver) {
     return new GitilesServlet(
-        cfg,
-        null,
-        urls,
-        accessFactory,
-        resolver,
-        null,
-        null,
-        null,
-        null,
-        new BranchRedirect());
+        cfg, null, urls, accessFactory, resolver, null, null, null, null, new BranchRedirect());
   }
 
   @Provides
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/Resolver.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/Resolver.java
index 71f604c..825cc60 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/Resolver.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/Resolver.java
@@ -48,7 +48,8 @@
 
   @Override
   public Repository open(HttpServletRequest req, String name)
-      throws RepositoryNotFoundException, ServiceMayNotContinueException,
+      throws RepositoryNotFoundException,
+          ServiceMayNotContinueException,
           ServiceNotAuthorizedException {
     Project.NameKey oldName = getNameKey(req);
     checkState(
diff --git a/src/test/java/com/googlesource/gerrit/plugins/gitiles/ListProjectsAccessTest.java b/src/test/java/com/googlesource/gerrit/plugins/gitiles/ListProjectsAccessTest.java
index 1dd4d2b..391f146 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/gitiles/ListProjectsAccessTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/gitiles/ListProjectsAccessTest.java
@@ -90,7 +90,8 @@
             access()
                 .listRepositories(
                     null, ImmutableSet.of("refs/heads/visible", "refs/heads/invisible"))
-                .values().stream()
+                .values()
+                .stream()
                 .map(r -> r.branches.keySet())
                 .collect(Collectors.toList()))
         .containsExactly(ImmutableSet.of("refs/heads/visible"));
