Allow submission with a FORCED status

Change-Id: I021661b59e36d1b76b0cf258e535dc5ef6aba564
diff --git a/java/com/google/gerrit/common/data/SubmitRecord.java b/java/com/google/gerrit/common/data/SubmitRecord.java
index ae8b2bb..8638d6d 100644
--- a/java/com/google/gerrit/common/data/SubmitRecord.java
+++ b/java/com/google/gerrit/common/data/SubmitRecord.java
@@ -32,7 +32,7 @@
     }
 
     // The change can be submitted, unless at least one plugin prevents it.
-    return in.stream().noneMatch(r -> r.status != Status.OK);
+    return in.stream().map(SubmitRecord::status).allMatch(SubmitRecord.Status::allowsSubmission);
   }
 
   public enum Status {
@@ -56,7 +56,11 @@
      *
      * <p>Additional detail may be available in {@link SubmitRecord#errorMessage}.
      */
-    RULE_ERROR
+    RULE_ERROR;
+
+    private boolean allowsSubmission() {
+      return this == OK || this == FORCED;
+    }
   }
 
   public Status status;
@@ -178,4 +182,8 @@
   public int hashCode() {
     return Objects.hash(status, labels, errorMessage, requirements);
   }
+
+  private Status status() {
+    return status;
+  }
 }
diff --git a/javatests/com/google/gerrit/common/data/SubmitRecordTest.java b/javatests/com/google/gerrit/common/data/SubmitRecordTest.java
index 6a90f45..54fab66 100644
--- a/javatests/com/google/gerrit/common/data/SubmitRecordTest.java
+++ b/javatests/com/google/gerrit/common/data/SubmitRecordTest.java
@@ -21,14 +21,17 @@
 import org.junit.Test;
 
 public class SubmitRecordTest {
-
   private static SubmitRecord OK_RECORD;
+  private static SubmitRecord FORCED_RECORD;
   private static SubmitRecord NOT_READY_RECORD;
 
   static {
     OK_RECORD = new SubmitRecord();
     OK_RECORD.status = SubmitRecord.Status.OK;
 
+    FORCED_RECORD = new SubmitRecord();
+    FORCED_RECORD.status = SubmitRecord.Status.FORCED;
+
     NOT_READY_RECORD = new SubmitRecord();
     NOT_READY_RECORD.status = SubmitRecord.Status.NOT_READY;
   }
@@ -49,6 +52,14 @@
   }
 
   @Test
+  public void okWhenForced() {
+    Collection<SubmitRecord> submitRecords = new ArrayList<>();
+    submitRecords.add(FORCED_RECORD);
+
+    assertThat(SubmitRecord.allRecordsOK(submitRecords)).isTrue();
+  }
+
+  @Test
   public void emptyResultIfInvalid() {
     Collection<SubmitRecord> submitRecords = new ArrayList<>();
     submitRecords.add(NOT_READY_RECORD);