Merge branch 'stable-2.6' into stable-2.7

* stable-2.6:
  Fix Gerrit plugins under Tomcat by avoiding Guice static filter
diff --git a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
index d0b8c38..945547f 100644
--- a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
+++ b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java
@@ -59,6 +59,7 @@
 import com.google.inject.Module;
 import com.google.inject.Provider;
 import com.google.inject.name.Names;
+import com.google.inject.servlet.GuiceFilter;
 import com.google.inject.servlet.GuiceServletContextListener;
 import com.google.inject.spi.Message;
 
@@ -67,16 +68,24 @@
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
 import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.sql.DataSource;
 
 /** Configures the web application environment for Gerrit Code Review. */
-public class WebAppInitializer extends GuiceServletContextListener {
+public class WebAppInitializer extends GuiceServletContextListener
+    implements Filter {
   private static final Logger log =
       LoggerFactory.getLogger(WebAppInitializer.class);
 
@@ -87,6 +96,13 @@
   private Injector webInjector;
   private Injector sshInjector;
   private LifecycleManager manager;
+  private GuiceFilter filter;
+
+  @Override
+  public void doFilter(ServletRequest req, ServletResponse res,
+      FilterChain chain) throws IOException, ServletException {
+    filter.doFilter(req, res, chain);
+  }
 
   private synchronized void init() {
     if (manager == null) {
@@ -139,6 +155,7 @@
           .setHttpServletRequest(
               webInjector.getProvider(HttpServletRequest.class));
 
+      filter = webInjector.getInstance(GuiceFilter.class);
       manager = new LifecycleManager();
       manager.add(dbInjector);
       manager.add(cfgInjector);
@@ -286,18 +303,17 @@
   }
 
   @Override
-  public void contextInitialized(final ServletContextEvent event) {
-    super.contextInitialized(event);
+  public void init(FilterConfig cfg) throws ServletException {
+    contextInitialized(new ServletContextEvent(cfg.getServletContext()));
     init();
     manager.start();
   }
 
   @Override
-  public void contextDestroyed(final ServletContextEvent event) {
+  public void destroy() {
     if (manager != null) {
       manager.stop();
       manager = null;
     }
-    super.contextDestroyed(event);
   }
 }
diff --git a/gerrit-war/src/main/webapp/WEB-INF/web.xml b/gerrit-war/src/main/webapp/WEB-INF/web.xml
index 205341c..386eb07 100644
--- a/gerrit-war/src/main/webapp/WEB-INF/web.xml
+++ b/gerrit-war/src/main/webapp/WEB-INF/web.xml
@@ -8,14 +8,10 @@
 
   <filter>
     <filter-name>guiceFilter</filter-name>
-    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
+    <filter-class>com.google.gerrit.httpd.WebAppInitializer</filter-class>
   </filter>
   <filter-mapping>
     <filter-name>guiceFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
-
-  <listener>
-    <listener-class>com.google.gerrit.httpd.WebAppInitializer</listener-class>
-  </listener>
 </web-app>