summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Pearce <sop@google.com>2013-08-12 11:57:16 -0700
committerShawn Pearce <sop@google.com>2013-08-12 11:57:16 -0700
commitc4a0f0c8f0a30ed30252000373bbb2a68d8481f6 (patch)
tree89ac8fbfe543d8b54d6bbe98a6824384b1130831
parent28d5fe0209b66683813c92b31312b716d551b7fc (diff)
parent09a35b97254f84624775f15283aa6bffaadcda70 (diff)
Merge branch 'stable-2.6' into stable-2.7
* stable-2.6: Fix Gerrit plugins under Tomcat by avoiding Guice static filter
-rw-r--r--gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java26
-rw-r--r--gerrit-war/src/main/webapp/WEB-INF/web.xml6
2 files changed, 22 insertions, 10 deletions
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 d0b8c3843a..945547fe0f 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.Key;
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.Logger;
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 @@ public class WebAppInitializer extends GuiceServletContextListener {
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 @@ public class WebAppInitializer extends GuiceServletContextListener {
.setHttpServletRequest(
webInjector.getProvider(HttpServletRequest.class));
+ filter = webInjector.getInstance(GuiceFilter.class);
manager = new LifecycleManager();
manager.add(dbInjector);
manager.add(cfgInjector);
@@ -286,18 +303,17 @@ public class WebAppInitializer extends GuiceServletContextListener {
}
@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 205341c35a..386eb07573 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>