SubmitRuleEvaluator: Fix NPE when patch set is not set

cannotSubmitDraft() failed with a NullPointerException when patchSet
was null. It was initialising the patch set, but too late and patchSet
was already deferenced once. Since evaluate() is the only caller of
cannotSubmitDraft() and it needs to initialize the patch set before
invoking cannotSubmitDraft() anyway, the call to initialize the patch
set in cannotSubmitDraft() can be removed.

This was e.g. causing 500 Internal Server Error when an anonymous user
was accessing a change with a draft. The request that failed was for
the submitted_together REST endpoint.

Bug: Issue 4796
Change-Id: I1fab717ad985e486409fdf4a5d8845aaefcb40f2
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
index 9a5b61f..48cd7ee 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
@@ -221,16 +221,13 @@
       return Collections.singletonList(rec);
     }
     if (!opts.allowDraft()) {
-      if (c.getStatus() == Change.Status.DRAFT) {
-        return cannotSubmitDraft();
-      }
       try {
         initPatchSet();
       } catch (OrmException e) {
         return ruleError("Error looking up patch set "
             + control.getChange().currentPatchSetId(), e);
       }
-      if (patchSet.isDraft()) {
+      if (c.getStatus() == Change.Status.DRAFT || patchSet.isDraft()) {
         return cannotSubmitDraft();
       }
     }
@@ -262,7 +259,6 @@
       if (!control.isDraftVisible(cd.db(), cd)) {
         return createRuleError("Patch set " + patchSet.getId() + " not found");
       }
-      initPatchSet();
       if (patchSet.isDraft()) {
         return createRuleError("Cannot submit draft patch sets");
       }