[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) {