diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
index 93d3dfa..e39e612 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
@@ -65,9 +65,7 @@
 
   @Inject
   public GitBlitServletModule(
-      @PluginName final String name,
-      @GerritServerConfig final Config gerritConfig,
-      final SitePaths sitePaths) {
+      @PluginName String name, @GerritServerConfig Config gerritConfig, SitePaths sitePaths) {
     log.info("Create GitBlitModule with name='" + name);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
index e0e488d..c882d1f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
@@ -70,7 +70,7 @@
   }
 
   public boolean doFilter(
-      final DynamicItem<WebSession> webSession,
+      DynamicItem<WebSession> webSession,
       ServletRequest request,
       ServletResponse response,
       FilterChain chain)
@@ -87,8 +87,7 @@
     }
   }
 
-  public boolean filterSessionAuth(
-      final DynamicItem<WebSession> webSession, HttpServletRequest request) {
+  public boolean filterSessionAuth(DynamicItem<WebSession> webSession, HttpServletRequest request) {
     request.setAttribute("gerrit-username", webSession.get().getUser().getUserName());
     request.setAttribute("gerrit-token", webSession.get().getSessionId());
     return true;
@@ -103,7 +102,7 @@
       return false;
     }
 
-    final byte[] decoded = new Base64().decode(hdr.substring(LIT_BASIC.length()).getBytes());
+    byte[] decoded = new Base64().decode(hdr.substring(LIT_BASIC.length()).getBytes());
     String usernamePassword =
         new String(decoded, MoreObjects.firstNonNull(request.getCharacterEncoding(), "UTF-8"));
     int splitPos = usernamePassword.indexOf(':');
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
index 6dc9a5a..7cd83ac 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
@@ -54,15 +54,14 @@
     this(username, null);
   }
 
-  public GerritToGitBlitUserModel(
-      String username, final ProjectControl.Factory projectControlFactory) {
+  public GerritToGitBlitUserModel(String username, ProjectControl.Factory projectControlFactory) {
     super(username);
     this.username = username;
     this.isAuthenticated = true;
     this.projectControlFactory = projectControlFactory;
   }
 
-  public GerritToGitBlitUserModel(final ProjectControl.Factory projectControlFactory) {
+  public GerritToGitBlitUserModel(ProjectControl.Factory projectControlFactory) {
     super(ANONYMOUS_USER);
     this.projectControlFactory = projectControlFactory;
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
index 35a5138..5cc3afa 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
@@ -53,9 +53,9 @@
 
   @Inject
   public GerritToGitBlitUserService(
-      final ProjectControl.Factory projectControl,
+      ProjectControl.Factory projectControl,
       AccountManager accountManager,
-      final DynamicItem<WebSession> webSession) {
+      DynamicItem<WebSession> webSession) {
     this.projectControl = projectControl;
     this.accountManager = accountManager;
     this.webSession = webSession;
