Merge submittable review when its topic is removed
No e2e test added because topics cannot be changed via Gerrit SSH API:
https://bugs.chromium.org/p/gerrit/issues/detail?id=778
Change-Id: I4fbc5cc27edd8fe616f77284212edb36e07ef597
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 113b8e9..efe90c1 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -27,6 +27,7 @@
import com.google.gerrit.server.change.Submit;
import com.google.gerrit.server.data.AccountAttribute;
import com.google.gerrit.server.data.ChangeAttribute;
+import com.google.gerrit.server.events.ChangeEvent;
import com.google.gerrit.server.events.CommentAddedEvent;
import com.google.gerrit.server.events.Event;
import com.google.gerrit.server.events.PatchSetCreatedEvent;
@@ -87,11 +88,10 @@
@Override
synchronized public void onEvent(final Event event) {
- if (event instanceof TopicChangedEvent) {
- onTopicChanged((TopicChangedEvent)event);
- }
- else if (event instanceof PatchSetCreatedEvent) {
- onPatchSetCreated((PatchSetCreatedEvent)event);
+ if (event instanceof TopicChangedEvent ||
+ event instanceof PatchSetCreatedEvent) {
+ Change change = Change.from(((ChangeEvent)event).change.get());
+ onNewOrChangedPatchSet(change);
}
else if (event instanceof CommentAddedEvent) {
onCommentAdded((CommentAddedEvent)event);
@@ -103,21 +103,10 @@
}
}
-
- private void onTopicChanged(final TopicChangedEvent event) {
- Change change = Change.from(event.change.get());
- if (!atomicityHelper.isAtomicReview(change)) {
- return;
- }
- processNewAtomicPatchSet(change);
- }
-
- private void onPatchSetCreated(final PatchSetCreatedEvent event) {
- Change change = Change.from(event.change.get());
+ private void onNewOrChangedPatchSet(Change change) {
if (atomicityHelper.isAtomicReview(change)) {
processNewAtomicPatchSet(change);
}
-
try {
autoSubmitIfMergeable(change);
} catch (OrmException | RestApiException | IOException | UpdateException e) {