Merge "Complete release notes for Gerrit 2.5" into stable-2.5
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/PublishDraft.java b/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/PublishDraft.java
index 29e5dbb..a71e12e 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/PublishDraft.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/PublishDraft.java
@@ -74,47 +74,29 @@
       result.addError(new ReviewResult.Error(
           ReviewResult.Error.Type.PUBLISH_NOT_PERMITTED));
     } else {
-      boolean published = false;
       final PatchSet updatedPatch = db.patchSets().atomicUpdate(patchSetId,
           new AtomicUpdate<PatchSet>() {
         @Override
         public PatchSet update(PatchSet patchset) {
-          if (patchset.isDraft()) {
-            patchset.setDraft(false);
-            return patchset;
-          }
-          return null;
+          patchset.setDraft(false);
+          return patchset;
         }
       });
 
-      if ((updatedPatch != null) && (!updatedPatch.isDraft())) {
-        published = true;
-      }
-
-      final Change change = db.changes().get(changeId);
-      if (change.getStatus() == Change.Status.DRAFT) {
-        final Change updatedChange = db.changes().atomicUpdate(changeId,
-            new AtomicUpdate<Change>() {
-          @Override
-          public Change update(Change change) {
-            if (change.getStatus() == Change.Status.DRAFT) {
-              change.setStatus(Change.Status.NEW);
-              ChangeUtil.updated(change);
-              return change;
-            } else {
-              return null;
-            }
+      final Change updatedChange = db.changes().atomicUpdate(changeId,
+          new AtomicUpdate<Change>() {
+        @Override
+        public Change update(Change change) {
+          if (change.getStatus() == Change.Status.DRAFT) {
+            change.setStatus(Change.Status.NEW);
+            ChangeUtil.updated(change);
           }
-        });
-
-        if ((updatedChange != null) &&
-            (updatedChange.getStatus() == Change.Status.NEW)) {
-          published = true;
+          return change;
         }
-      }
+      });
 
-      if (published) {
-        hooks.doDraftPublishedHook(change, patch, db);
+      if (!updatedPatch.isDraft() || updatedChange.getStatus() == Change.Status.NEW) {
+        hooks.doDraftPublishedHook(updatedChange, updatedPatch, db);
       }
     }
 
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/TestSubmitRule.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/TestSubmitRule.java
index 9a81140..c8544e4 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/TestSubmitRule.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/TestSubmitRule.java
@@ -51,6 +51,7 @@
 import org.kohsuke.args4j.Option;
 
 import java.io.InputStreamReader;
+import java.io.PushbackReader;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.LinkedList;
@@ -102,7 +103,7 @@
 
   @Override
   protected void run() throws UnloggedFailure {
-    InputStreamReader inReader = new InputStreamReader(in);
+    PushbackReader inReader = new PushbackReader(new InputStreamReader(in));
 
     try {
       PrologEnvironment pcl;