[Refactoring] mutualize check of review existence
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 0d0cefd..55fbc74 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -137,14 +137,14 @@
final ChangeAttribute change = newComment.change;
final int reviewNumber = Integer.parseInt(change.number);
try {
- api.changes().id(reviewNumber).get(EnumSet.of(ListChangesOption.CURRENT_REVISION));
+ checkReviewExists(reviewNumber);
if (newComment.author.email == config.getBotEmail()) {
return;
}
- final String topic = change.topic;
if (atomicityHelper.isSubmittable(Integer.parseInt(newComment.change.number))) {
log.info(String.format("Change %d is submittable. Will try to merge all related changes.", reviewNumber));
final List<ChangeInfo> related = Lists.newArrayList();
+ final String topic = change.topic;
if (topic != null) {
related.addAll(api.changes().query("status: open AND topic: " + topic)
.withOption(ListChangesOption.CURRENT_REVISION).get());
@@ -183,11 +183,7 @@
private void processNewAtomicPatchSet(final ChangeAttribute change) {
final int reviewNumber = Integer.parseInt(change.number);
try {
- api.changes().id(reviewNumber).get(EnumSet.of(ListChangesOption.CURRENT_REVISION));
- } catch (final RestApiException e1) {
- throw new RuntimeException(e1);
- }
- try {
+ checkReviewExists(reviewNumber);
if (atomicityHelper.hasDependentReview(reviewNumber)) {
log.info(String.format("Setting -2 on change %d, other atomic changes exists on the same repository.",
reviewNumber));
@@ -196,12 +192,15 @@
log.info(String.format("Detected atomic review on change %d.", reviewNumber));
reviewUpdater.commentOnReview(reviewNumber, AutomergeConfig.ATOMIC_REVIEW_DETECTED_FILE);
}
- } catch (AuthException | BadRequestException | UnprocessableEntityException | IOException | NoSuchChangeException
- | OrmException e) {
+ } catch (RestApiException | IOException | NoSuchChangeException | OrmException e) {
throw new RuntimeException(e);
}
}
+ private void checkReviewExists(int reviewNumber) throws RestApiException {
+ api.changes().id(reviewNumber).get(EnumSet.of(ListChangesOption.CURRENT_REVISION));
+ }
+
@Override
public void start() {
log.info("Starting automatic merger plugin.");
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/ReviewUpdater.java b/src/main/java/com/criteo/gerrit/plugins/automerge/ReviewUpdater.java
index 01923de..18e0b89 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/ReviewUpdater.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/ReviewUpdater.java
@@ -5,6 +5,7 @@
import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.extensions.restapi.BadRequestException;
+import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Change;
@@ -55,8 +56,7 @@
@Inject
Provider<PostReview> reviewer;
- public void commentOnReview(final int number, final String commentTemplate) throws NoSuchChangeException,
- OrmException, AuthException, BadRequestException, UnprocessableEntityException, IOException {
+ public void commentOnReview(final int number, final String commentTemplate) throws RestApiException, OrmException, IOException, NoSuchChangeException {
final ReviewInput message = new ReviewInput();
message.message = getCommentFromFile(commentTemplate);
final Set<Account.Id> ids = byEmailCache.get(config.getBotEmail());
@@ -80,8 +80,7 @@
}
}
- public void setMinusTwo(final int number, final String commentTemplate) throws NoSuchChangeException, OrmException,
- AuthException, BadRequestException, UnprocessableEntityException, IOException {
+ public void setMinusTwo(final int number, final String commentTemplate) throws RestApiException, OrmException, IOException, NoSuchChangeException {
final ReviewInput message = new ReviewInput();
message.message = getCommentFromFile(commentTemplate);
message.label("Code-Review", -2);