[Refactoring] extract merge of a review
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
index a2f7d33..78d6a81 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
@@ -1,6 +1,9 @@
package com.criteo.gerrit.plugins.automerge;
import com.google.gerrit.common.data.SubmitRecord;
+import com.google.gerrit.extensions.api.changes.SubmitInput;
+import com.google.gerrit.extensions.common.ChangeInfo;
+import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -119,4 +122,25 @@
log.debug(String.format("Change %d is submitable", change));
return true;
}
+
+ /**
+ * Merge a review.
+ *
+ * @param info
+ * @throws RestApiException
+ * @throws NoSuchChangeException
+ * @throws OrmException
+ * @throws IOException
+ */
+ public void mergeReview(ChangeInfo info) throws RestApiException, NoSuchChangeException, OrmException, IOException {
+ final SubmitInput input = new SubmitInput();
+ input.waitForMerge = true;
+ final Set<Account.Id> ids = byEmailCache.get(config.getBotEmail());
+ final IdentifiedUser bot = factory.create(ids.iterator().next());
+ final ChangeControl ctl = changeFactory.controlFor(new Change.Id(info._number), bot);
+ final ChangeData changeData = changeDataFactory.create(db.get(), new Change.Id(info._number));
+ final RevisionResource r = new RevisionResource(collection.parse(ctl), changeData.currentPatchSet());
+
+ submitter.apply(r, input);
+ }
}
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
index f05fd4f..0d0cefd 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -166,15 +166,7 @@
if (mergeable) {
log.debug(String.format("Change %d is mergeable", reviewNumber));
for (final ChangeInfo info : related) {
- final SubmitInput input = new SubmitInput();
- input.waitForMerge = true;
- final Set<Account.Id> ids = byEmailCache.get(config.getBotEmail());
- final IdentifiedUser bot = factory.create(ids.iterator().next());
- final ChangeControl ctl = changeFactory.controlFor(new Change.Id(info._number), bot);
- final ChangeData changeData = changeDataFactory.create(db.get(), new Change.Id(info._number));
-
- final RevisionResource r = new RevisionResource(collection.parse(ctl), changeData.currentPatchSet());
- submitter.apply(r, input);
+ atomicityHelper.mergeReview(info);
}
} else {
if (approvedButNotMergeable) {