Upgrade embedded Jetty to 8.1.7.v20120910

Bug: issue 1619
Change-Id: Ica04d0c19306da9afcadf3919581632f7df93483
diff --git a/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java b/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java
index 9cca559..b3d1cd5 100644
--- a/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java
+++ b/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java
@@ -248,7 +248,7 @@
     move(jars, "javax.inject-1.jar", extapi);
     move(jars, "aopalliance-1.0.jar", extapi);
     move(jars, "guice-servlet-", extapi);
-    move(jars, "servlet-api-", extapi);
+    move(jars, "tomcat-servlet-api-", extapi);
 
     ClassLoader parent = ClassLoader.getSystemClassLoader();
     if (!extapi.isEmpty()) {
diff --git a/gerrit-pgm/pom.xml b/gerrit-pgm/pom.xml
index 5e25350..f73a2b0 100644
--- a/gerrit-pgm/pom.xml
+++ b/gerrit-pgm/pom.xml
@@ -65,6 +65,12 @@
       <groupId>com.google.gerrit</groupId>
       <artifactId>gerrit-server</artifactId>
       <version>${project.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>servlet-api</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
 
     <dependency>
@@ -92,7 +98,7 @@
 
     <dependency>
       <groupId>org.apache.tomcat</groupId>
-      <artifactId>servlet-api</artifactId>
+      <artifactId>tomcat-servlet-api</artifactId>
     </dependency>
 
     <dependency>
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/JettyServer.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/JettyServer.java
index dded71b..3a7a874 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/JettyServer.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/JettyServer.java
@@ -42,10 +42,10 @@
 import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
 import org.eclipse.jetty.servlet.DefaultServlet;
 import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.FilterMapping;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.util.resource.Resource;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.eclipse.jetty.util.thread.QueuedThreadPool;
 import org.eclipse.jetty.util.thread.ThreadPool;
 import org.eclipse.jgit.lib.Config;
@@ -60,6 +60,7 @@
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.EnumSet;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.List;
@@ -67,6 +68,8 @@
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
+import javax.servlet.DispatcherType;
+
 @Singleton
 public class JettyServer {
   static class Lifecycle implements LifecycleListener {
@@ -161,23 +164,23 @@
         defaultPort = 80;
         c = new SelectChannelConnector();
       } else if ("https".equals(u.getScheme())) {
-        final SslSelectChannelConnector ssl = new SslSelectChannelConnector();
+        SslContextFactory ssl = new SslContextFactory();
         final File keystore = getFile(cfg, "sslkeystore", "etc/keystore");
         String password = cfg.getString("httpd", null, "sslkeypassword");
         if (password == null) {
           password = "gerrit";
         }
-        ssl.setKeystore(keystore.getAbsolutePath());
-        ssl.setTruststore(keystore.getAbsolutePath());
-        ssl.setKeyPassword(password);
-        ssl.setTrustPassword(password);
+        ssl.setKeyStorePath(keystore.getAbsolutePath());
+        ssl.setTrustStore(keystore.getAbsolutePath());
+        ssl.setKeyStorePassword(password);
+        ssl.setTrustStorePassword(password);
 
         if (AuthType.CLIENT_SSL_CERT_LDAP.equals(authType)) {
           ssl.setNeedClientAuth(true);
         }
 
         defaultPort = 443;
-        c = ssl;
+        c = new SslSelectChannelConnector(ssl);
 
       } else if ("proxy-http".equals(u.getScheme())) {
         defaultPort = 8080;
@@ -336,7 +339,9 @@
     // already have built.
     //
     GuiceFilter filter = env.webInjector.getInstance(GuiceFilter.class);
-    app.addFilter(new FilterHolder(filter), "/*", FilterMapping.DEFAULT);
+    app.addFilter(new FilterHolder(filter), "/*", EnumSet.of(
+        DispatcherType.REQUEST,
+        DispatcherType.ASYNC));
     app.addEventListener(new GuiceServletContextListener() {
       @Override
       protected Injector getInjector() {
diff --git a/gerrit-war/pom.xml b/gerrit-war/pom.xml
index ed473c6..3becf84 100644
--- a/gerrit-war/pom.xml
+++ b/gerrit-war/pom.xml
@@ -37,8 +37,7 @@
     <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>servlet-api</artifactId>
-      <!-- compile, not provided. our embedded Jetty needs this -->
-      <scope>compile</scope>
+      <scope>provided</scope>
     </dependency>
 
     <dependency>
diff --git a/pom.xml b/pom.xml
index da02e83..f79e1a6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
     <bouncyCastleVersion>140</bouncyCastleVersion>
     <slf4jVersion>1.6.1</slf4jVersion>
     <guiceVersion>3.0</guiceVersion>
-    <jettyVersion>7.2.1.v20101111</jettyVersion>
+    <jettyVersion>8.1.7.v20120910</jettyVersion>
 
     <gwt.compileReport>false</gwt.compileReport>
 
@@ -786,8 +786,8 @@
         <exclusions>
           <exclusion>
             <!-- use Apache javax.servlet not CDDL -->
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
+            <groupId>org.eclipse.jetty.orbit</groupId>
+            <artifactId>javax.servlet</artifactId>
           </exclusion>
         </exclusions>
       </dependency>
@@ -805,6 +805,12 @@
       </dependency>
 
       <dependency>
+        <groupId>org.apache.tomcat</groupId>
+        <artifactId>tomcat-servlet-api</artifactId>
+        <version>7.0.32</version>
+      </dependency>
+
+      <dependency>
         <groupId>com.google.gwt</groupId>
         <artifactId>gwt-servlet</artifactId>
         <version>${gwtVersion}</version>