Merge change I574b992d

* changes:
  Adding support to list merged and abandoned changes for a project.
diff --git a/Documentation/install.txt b/Documentation/install.txt
index f4b7bb6..af11447 100644
--- a/Documentation/install.txt
+++ b/Documentation/install.txt
@@ -86,7 +86,7 @@
 password, create a database, and give the user full rights:
 
 ====
-  CREATE USER gerrit2 IDENTIFIED BY 'secret';
+  CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret';
   CREATE DATABASE reviewdb;
   GRANT ALL ON reviewdb.* TO 'gerrit2'@'localhost';
   FLUSH PRIVILEGES;
@@ -225,10 +225,10 @@
 Download and unzip a release version of Jetty.  From here on we
 call the unpacked directory `$JETTY_HOME`.
 
-* link:http://dist.codehaus.org/jetty/[Jetty Downloads]
+* link:http://www.eclipse.org/jetty/downloads.php[Jetty Downloads]
 
 Install the required JDBC drivers by copying them into the
-`'$JETTY_HOME'/lib/plus` directory.  Drivers can be obtained from
+`'$JETTY_HOME'/lib/ext` directory.  Drivers can be obtained from
 their source projects:
 
 * link:http://jdbc.postgresql.org/download.html[PostgreSQL JDBC Driver]
@@ -236,7 +236,7 @@
 * link:http://commons.apache.org/dbcp/download_dbcp.cgi[Commons DBCP]
 
 Consider installing Bouncy Castle Cypto APIs into the
-`'$JETTY_HOME'/lib/plus` directory.  Some of the Bouncy Castle
+`'$JETTY_HOME'/lib/ext` directory.  Some of the Bouncy Castle
 implementations are faster than then ones that come in the JRE,
 and they may support additional encryption algorithms:
 
@@ -244,46 +244,32 @@
 
 Copy Gerrit into the deployment:
 ====
-  java -jar gerrit.war --cat extra/jetty_gerrit.xml >$JETTY_HOME/contexts/gerrit.xml
-  cp gerrit.war $JETTY_HOME/webapps/gerrit.war
-
-  rm -f $JETTY_HOME/contexts/test.xml
+  cd $JETTY_HOME
+  cp ~/gerrit.war webapps/gerrit.war
+  java -jar webapps/gerrit.war --cat extra/jetty7/gerrit.xml >contexts/gerrit.xml
+  rm -f contexts/test.xml
 ====
 
 Edit `'$JETTY_HOME'/contexts/gerrit.xml` to correctly configure
 the database and outgoing SMTP connections, especially the user
 and password fields.
 
-If OpenID authentication is being used, you may need to increase
-the header buffer size parameter, due to very long header lines.
+If OpenID authentication (or certain enterprise single-sign-on
+solutions) is being used, you may need to increase the
+header buffer size parameter, due to very long header lines.
 Add the following to `'$JETTY_HOME'/etc/jetty.xml` under
-`org.mortbay.jetty.nio.SelectChannelConnector`:
+`org.eclipse.jetty.server.nio.SelectChannelConnector`:
 
 ====
   <Set name="headerBufferSize">16384</Set>
 ====
 
-To start automatically when the system boots, consider a start
-script such as the following in `/etc/init.d/gerrit2-jetty`
+To start automatically when the system boots, create a start
+script and modify it for your configuration:
 
 ====
-  #!/bin/sh
-  
-  export JETTY_HOST=127.0.0.1
-  export JETTY_PORT=8081
-  export JETTY_USER=gerrit2
-  export JETTY_PID=/var/run/jetty$JETTY_PORT.pid
-  export JETTY_HOME=/home/$JETTY_USER/jetty
-  export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07/jre
-  
-  JAVA_OPTIONS=""
-  JAVA_OPTIONS="$JAVA_OPTIONS -Djetty.host=$JETTY_HOST"
-  export JAVA_OPTIONS
-
-  C="jetty-logging jetty"
-  [ -f "$JETTY_HOME/etc/jetty_sslproxy.xml" ] && C="$C jetty_sslproxy"
-  
-  exec $JETTY_HOME/bin/jetty.sh "$@" $C
+  java -jar gerrit.war --cat extra/jetty7/gerrit-jetty.sh >/etc/init.d/gerrit-jetty.sh
+  vi /etc/init.d/gerrit-jetty.sh
 ====
 
 [TIP]
@@ -304,7 +290,8 @@
 To deploy on port 443 with SSL enabled, unpack the SSL proxy handling
 rule into `'$JETTY_HOME'/etc`:
 ====
-  java -jar gerrit.war --cat extra/jetty_sslproxy.xml >$JETTY_HOME/etc/jetty_sslproxy.xml
+  cd $JETTY_HOME
+  java -jar webapps/gerrit.war --cat extra/jetty7/jetty_sslproxy.xml >etc/jetty_sslproxy.xml
 ====
 
 Create a start script like the one above, configuring Jetty to
diff --git a/src/main/java/com/google/gerrit/server/mail/NewChangeSender.java b/src/main/java/com/google/gerrit/server/mail/NewChangeSender.java
index 55783397..9a0f41e 100644
--- a/src/main/java/com/google/gerrit/server/mail/NewChangeSender.java
+++ b/src/main/java/com/google/gerrit/server/mail/NewChangeSender.java
@@ -59,18 +59,19 @@
   protected void format() {
     formatSalutation();
     formatChangeDetail();
+
+    appendText("\n");
+    appendText("  " + getPullUrl() + "\n");
   }
 
   private void formatSalutation() {
     final String changeUrl = getChangeUrl();
-    final String pullUrl = getPullUrl();
 
     if (reviewers.isEmpty()) {
       formatDest();
       if (changeUrl != null) {
         appendText("\n");
         appendText("    " + changeUrl + "\n");
-        appendText("    " + pullUrl + "\n");
         appendText("\n");
       }
       appendText("\n");
@@ -90,14 +91,6 @@
         appendText("  Please visit\n");
         appendText("\n");
         appendText("    " + changeUrl + "\n");
-        appendText("    " + pullUrl + "\n");
-        appendText("\n");
-        appendText("to review the following change:\n");
-
-      } else {
-        appendText("  Please execute\n");
-        appendText("\n");
-        appendText("    " + pullUrl + "\n");
         appendText("\n");
         appendText("to review the following change:\n");
       }
diff --git a/src/main/java/com/google/gerrit/server/mail/ReplacePatchSetSender.java b/src/main/java/com/google/gerrit/server/mail/ReplacePatchSetSender.java
index fe6bcad..2430ff7 100644
--- a/src/main/java/com/google/gerrit/server/mail/ReplacePatchSetSender.java
+++ b/src/main/java/com/google/gerrit/server/mail/ReplacePatchSetSender.java
@@ -68,20 +68,19 @@
   protected void format() {
     formatSalutation();
     formatChangeDetail();
+
+    appendText("\n");
+    appendText("  " + getPullUrl() + "\n");
   }
 
   private void formatSalutation() {
     final String changeUrl = getChangeUrl();
-    final String pullUrl = getPullUrl();
 
     if (reviewers.isEmpty()) {
       formatDest();
-      if (changeUrl != null || pullUrl != null) {
+      if (changeUrl != null) {
         appendText("\n");
-        if (changeUrl != null) {
-          appendText("    " + changeUrl + "\n");
-        }
-        appendText("    " + pullUrl + "\n");
+        appendText("    " + changeUrl + "\n");
         appendText("\n");
       }
       appendText("\n");
@@ -102,15 +101,6 @@
         appendText("  Please visit\n");
         appendText("\n");
         appendText("    " + changeUrl + "\n");
-        appendText("    " + pullUrl + "\n");
-        appendText("\n");
-        appendText("to look at patch set " + patchSet.getPatchSetId());
-        appendText(":\n");
-
-      } else {
-        appendText("  Please execute\n");
-        appendText("\n");
-        appendText("    " + pullUrl + "\n");
         appendText("\n");
         appendText("to look at patch set " + patchSet.getPatchSetId());
         appendText(":\n");
diff --git a/src/main/webapp/WEB-INF/extra/jetty6/gerrit-jetty.sh b/src/main/webapp/WEB-INF/extra/jetty6/gerrit-jetty.sh
new file mode 100644
index 0000000..f8e22d9
--- /dev/null
+++ b/src/main/webapp/WEB-INF/extra/jetty6/gerrit-jetty.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+export JETTY_HOST=127.0.0.1
+export JETTY_PORT=8081
+export JETTY_USER=gerrit2
+export JETTY_PID=/var/run/jetty$JETTY_PORT.pid
+export JETTY_HOME=/home/$JETTY_USER/jetty
+export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07/jre
+
+JAVA_OPTIONS=""
+JAVA_OPTIONS="$JAVA_OPTIONS -Djetty.host=$JETTY_HOST"
+export JAVA_OPTIONS
+
+C="jetty-logging jetty"
+[ -f "$JETTY_HOME/etc/jetty_sslproxy.xml" ] && C="$C jetty_sslproxy"
+
+exec $JETTY_HOME/bin/jetty.sh "$@" $C
diff --git a/src/main/webapp/WEB-INF/extra/jetty_gerrit.xml b/src/main/webapp/WEB-INF/extra/jetty6/gerrit.xml
similarity index 100%
rename from src/main/webapp/WEB-INF/extra/jetty_gerrit.xml
rename to src/main/webapp/WEB-INF/extra/jetty6/gerrit.xml
diff --git a/src/main/webapp/WEB-INF/extra/jetty_sslproxy.xml b/src/main/webapp/WEB-INF/extra/jetty6/jetty_sslproxy.xml
similarity index 100%
rename from src/main/webapp/WEB-INF/extra/jetty_sslproxy.xml
rename to src/main/webapp/WEB-INF/extra/jetty6/jetty_sslproxy.xml
diff --git a/src/main/webapp/WEB-INF/extra/jetty7/gerrit-jetty.sh b/src/main/webapp/WEB-INF/extra/jetty7/gerrit-jetty.sh
new file mode 100644
index 0000000..1342d804
--- /dev/null
+++ b/src/main/webapp/WEB-INF/extra/jetty7/gerrit-jetty.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+export JETTY_HOST=127.0.0.1
+export JETTY_PORT=8081
+export JETTY_USER=gerrit2
+export JETTY_PID=/var/run/jetty$JETTY_PORT.pid
+export JETTY_HOME=/home/$JETTY_USER/jetty
+export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07/jre
+
+JAVA_OPTIONS=""
+JAVA_OPTIONS="$JAVA_OPTIONS -Djetty.host=$JETTY_HOST"
+export JAVA_OPTIONS
+
+JETTY_ARGS=""
+JETTY_ARGS="$JETTY_ARGS OPTIONS=Server,plus,ext,rewrite"
+export JETTY_ARGS
+
+C="jetty-logging jetty"
+[ -f "$JETTY_HOME/etc/jetty_sslproxy.xml" ] && C="$C jetty_sslproxy"
+
+exec $JETTY_HOME/bin/jetty.sh "$@" $C
diff --git a/src/main/webapp/WEB-INF/extra/jetty7/gerrit.xml b/src/main/webapp/WEB-INF/extra/jetty7/gerrit.xml
new file mode 100644
index 0000000..56b7af0
--- /dev/null
+++ b/src/main/webapp/WEB-INF/extra/jetty7/gerrit.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.eclipse.org/configure.dtd">
+<!--
+
+  Jetty configuration to place "gerrit.war" into the root context,
+  so it answers to simple URLs like "/$changeid" and "/mine".
+
+  * Copy this file to $JETTY_HOME/contexts/gerrit.xml
+  * Edit url, username, password as necessary below for database.
+
+  * Copy commons-dbcp-*.jar     to $JETTY_HOME/lib/ext/
+  * Copy commons-pool-*.jar     to $JETTY_HOME/lib/ext/
+  * Copy JDBC driver            to $JETTY_HOME/lib/ext/
+  * Copy www/gerrit-*.war       to $JETTY_HOME/webapps/gerrit.war
+
+  * Make sure you remove $JETTY_HOME/context/test.xml
+
+-->
+<Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext">
+  <Set name="contextPath">/</Set>
+  <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/gerrit.war</Set>
+
+  <Set name="extractWAR">true</Set>
+  <Set name="copyWebDir">true</Set>
+  <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
+
+  <Set name="ConfigurationClasses">
+    <Array type="java.lang.String">
+      <Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item>
+      <Item>org.eclipse.jetty.webapp.WebXmlConfiguration</Item>
+      <Item>org.eclipse.jetty.plus.webapp.EnvConfiguration</Item>
+      <Item>org.eclipse.jetty.plus.webapp.Configuration</Item>
+      <Item>org.eclipse.jetty.webapp.JettyWebXmlConfiguration</Item>
+    </Array>
+  </Set>
+
+  <New id="ReviewDb" class="org.eclipse.jetty.plus.jndi.Resource">
+    <Arg></Arg>
+    <Arg>jdbc/ReviewDb</Arg>
+    <Arg>
+      <New class="org.apache.commons.dbcp.BasicDataSource">
+<!--  PostgreSQL
+        <Set name="driverClassName">org.postgresql.Driver</Set>
+        <Set name="url">jdbc:postgresql:reviewdb</Set>
+        <Set name="username">gerrit2</Set>
+        <Set name="password">secretkey</Set>
+-->
+<!--  MySQL 
+        <Set name="driverClassName">com.mysql.jdbc.Driver</Set>
+        <Set name="url">jdbc:mysql://localhost/reviewdb?user=gerrit2&amp;password=secretkey</Set>
+-->
+<!--  H2
+        <Set name="driverClassName">org.h2.Driver</Set>
+        <Set name="url">jdbc:h2:file:ReviewDb</Set>
+-->
+        <Set name="initialSize">4</Set>
+        <Set name="maxActive">8</Set>
+        <Set name="minIdle">4</Set>
+        <Set name="maxIdle">4</Set>
+        <Set name="maxWait">30000</Set>
+      </New>
+    </Arg>
+  </New>
+</Configure>
diff --git a/src/main/webapp/WEB-INF/extra/jetty7/jetty_sslproxy.xml b/src/main/webapp/WEB-INF/extra/jetty7/jetty_sslproxy.xml
new file mode 100644
index 0000000..652acad
--- /dev/null
+++ b/src/main/webapp/WEB-INF/extra/jetty7/jetty_sslproxy.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.eclipse.org/configure.dtd">
+<!--
+
+  Jetty configuration to correctly handle SSL/HTTPS traffic when
+  Apache is handling the SSL and proxying over plain HTTP to us.
+
+  Requires Jetty 7.0.0.RC6 (or later).
+
+  * Copy this file to $JETTY_HOME/etc/jetty_sslproxy.xml
+  * Add jetty_sslproxy to your start line:
+
+      $JETTY_HOME/bin/jetty.sh start jetty-logging jetty jetty_sslproxy
+
+  * Configure Apache to set X-Forwarded-Scheme on requests:
+
+      RequestHeader set X-Forwarded-Scheme https
+
+-->
+<Configure id="Server" class="org.eclipse.jetty.server.Server">
+  <Get id="oldHandler" name="handler"/>
+  <Set name="handler">
+    <New class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
+      <Set name="handler"><Ref id="oldHandler"/></Set>
+      <Set name="rules">
+        <Array type="org.eclipse.jetty.rewrite.handler.Rule">
+          <Item>
+            <New class="org.eclipse.jetty.rewrite.handler.ForwardedSchemeHeaderRule">
+              <Set name="header">X-Forwarded-Scheme</Set>
+              <Set name="headerValue">https</Set>
+              <Set name="scheme">https</Set>
+            </New>
+          </Item>
+        </Array>
+      </Set>
+    </New>
+  </Set>
+</Configure>
diff --git a/to_jetty.sh b/to_jetty.sh
index 0f976e4..5e5c61c 100755
--- a/to_jetty.sh
+++ b/to_jetty.sh
@@ -25,7 +25,7 @@
 	touch "$ctx"
 else
 	rm -f "$jetty/contexts/test.xml" &&
-	java -jar $war --cat extra/jetty_gerrit.xml >"$ctx" &&
+	java -jar $war --cat extra/jetty6/gerrit.xml >"$ctx" &&
 
 	echo >&2
 	echo >&2 "You need to copy JDBC drivers to $jetty/lib/plus"