diff options
author | David Pursehouse <dpursehouse@collab.net> | 2020-02-04 23:13:32 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-02-04 23:13:32 +0000 |
commit | cd4e1d3fee6f7a8bf7a8fd11e406eafab9f1d1e0 (patch) | |
tree | dbf0eacd3fd22ea2b5343772a5d4dbefe9cbd1fa | |
parent | 903e586b1362a53700697b51ab2f6ef60fa71dd1 (diff) | |
parent | 5edf70ec116809366f401b11e6d2f595aafe55d3 (diff) |
Merge changes I6dd2035d,I6b6710d1,I43c5d7c6 into stable-2.16
* changes:
Fix method name to register custom event types in plugins
Don't send mails on publish change edits for WIP changes
PatchSetInserter: allow to set "sendEmail" bit
6 files changed, 28 insertions, 7 deletions
diff --git a/Documentation/dev-plugins.txt b/Documentation/dev-plugins.txt index 64cae2d5a6..a80b4b55f3 100644 --- a/Documentation/dev-plugins.txt +++ b/Documentation/dev-plugins.txt @@ -474,9 +474,9 @@ class MyPlugin { ---- Plugins which define new Events should register them via the -`com.google.gerrit.server.events.EventTypes.registerClass()` -method. This will make the EventType known to the system. -Deserializing events with the +`com.google.gerrit.server.events.EventTypes.register()` method. +This will make the EventType known to the system. Deserializing +events with the `com.google.gerrit.server.events.EventDeserializer` class requires that the event be registered in EventTypes. diff --git a/java/com/google/gerrit/server/change/PatchSetInserter.java b/java/com/google/gerrit/server/change/PatchSetInserter.java index 24c4237ae3..fc2167f08a 100644 --- a/java/com/google/gerrit/server/change/PatchSetInserter.java +++ b/java/com/google/gerrit/server/change/PatchSetInserter.java @@ -102,6 +102,7 @@ public class PatchSetInserter implements BatchUpdateOp { private ListMultimap<RecipientType, Account.Id> accountsToNotify = ImmutableListMultimap.of(); private boolean allowClosed; private boolean copyApprovals = true; + private boolean sendEmail = true; // Fields set during some phase of BatchUpdate.Op. private Change change; @@ -197,6 +198,11 @@ public class PatchSetInserter implements BatchUpdateOp { return this; } + public PatchSetInserter setSendEmail(boolean sendEmail) { + this.sendEmail = sendEmail; + return this; + } + public Change getChange() { checkState(change != null, "getChange() only valid after executing update"); return change; @@ -282,7 +288,7 @@ public class PatchSetInserter implements BatchUpdateOp { @Override public void postUpdate(Context ctx) throws OrmException { - if (notify != NotifyHandling.NONE || !accountsToNotify.isEmpty()) { + if (sendEmail && (notify != NotifyHandling.NONE || !accountsToNotify.isEmpty())) { try { ReplacePatchSetSender cm = replacePatchSetFactory.create(ctx.getProject(), change.getId()); cm.setFrom(ctx.getAccountId()); diff --git a/java/com/google/gerrit/server/change/RebaseChangeOp.java b/java/com/google/gerrit/server/change/RebaseChangeOp.java index 1f216f0a71..f48ea57d5d 100644 --- a/java/com/google/gerrit/server/change/RebaseChangeOp.java +++ b/java/com/google/gerrit/server/change/RebaseChangeOp.java @@ -72,6 +72,7 @@ public class RebaseChangeOp implements BatchUpdateOp { private boolean copyApprovals = true; private boolean detailedCommitMessage; private boolean postMessage = true; + private boolean sendEmail = true; private boolean matchAuthorToCommitterDate = false; private RevCommit rebasedCommit; @@ -141,6 +142,11 @@ public class RebaseChangeOp implements BatchUpdateOp { return this; } + public RebaseChangeOp setSendEmail(boolean sendEmail) { + this.sendEmail = sendEmail; + return this; + } + public RebaseChangeOp setMatchAuthorToCommitterDate(boolean matchAuthorToCommitterDate) { this.matchAuthorToCommitterDate = matchAuthorToCommitterDate; return this; @@ -189,7 +195,8 @@ public class RebaseChangeOp implements BatchUpdateOp { .setFireRevisionCreated(fireRevisionCreated) .setCopyApprovals(copyApprovals) .setCheckAddPatchSetPermission(checkAddPatchSetPermission) - .setValidate(validate); + .setValidate(validate) + .setSendEmail(sendEmail); if (postMessage) { patchSetInserter.setMessage( "Patch Set " diff --git a/java/com/google/gerrit/server/edit/ChangeEditUtil.java b/java/com/google/gerrit/server/edit/ChangeEditUtil.java index d5add76be1..39cf44f255 100644 --- a/java/com/google/gerrit/server/edit/ChangeEditUtil.java +++ b/java/com/google/gerrit/server/edit/ChangeEditUtil.java @@ -182,7 +182,8 @@ public class ChangeEditUtil { patchSetInserterFactory .create(notes, psId, squashed) .setNotify(notify) - .setAccountsToNotify(accountsToNotify); + .setAccountsToNotify(accountsToNotify) + .setSendEmail(!change.isWorkInProgress()); StringBuilder message = new StringBuilder("Patch Set ").append(inserter.getPatchSetId().get()).append(": "); diff --git a/java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java b/java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java index 1ec7ca853a..d59ce68c15 100644 --- a/java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java +++ b/java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java @@ -187,6 +187,7 @@ public class RebaseSubmitStrategy extends SubmitStrategy { // Do not post message after inserting new patchset because there // will be one about change being merged already. .setPostMessage(false) + .setSendEmail(false) .setMatchAuthorToCommitterDate( args.project.is(BooleanProjectConfig.MATCH_AUTHOR_TO_COMMITTER_DATE)); try { diff --git a/javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java b/javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java index 7573a09944..47f4a8f01b 100644 --- a/javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java +++ b/javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java @@ -156,8 +156,11 @@ public class ChangeEditIT extends AbstractDaemonTest { public void publishEdit() throws Exception { createArbitraryEditFor(changeId); + AddReviewerInput in = new AddReviewerInput(); + in.reviewer = user.email; + gApi.changes().id(changeId).addReviewer(in); + PublishChangeEditInput publishInput = new PublishChangeEditInput(); - publishInput.notify = NotifyHandling.NONE; gApi.changes().id(changeId).edit().publish(publishInput); assertThat(getEdit(changeId)).isAbsent(); @@ -174,8 +177,10 @@ public class ChangeEditIT extends AbstractDaemonTest { assertThat(info.messages).isNotEmpty(); assertThat(Iterables.getLast(info.messages).tag) .isEqualTo(ChangeMessagesUtil.TAG_UPLOADED_PATCH_SET); + assertThat(sender.getMessages()).isNotEmpty(); // Move the change to WIP, repeat, and verify. + sender.clear(); gApi.changes().id(changeId).setWorkInProgress(); createEmptyEditFor(changeId); gApi.changes().id(changeId).edit().modifyFile(FILE_NAME, RawInputUtil.create(CONTENT_NEW2)); @@ -184,6 +189,7 @@ public class ChangeEditIT extends AbstractDaemonTest { assertThat(info.messages).isNotEmpty(); assertThat(Iterables.getLast(info.messages).tag) .isEqualTo(ChangeMessagesUtil.TAG_UPLOADED_WIP_PATCH_SET); + assertThat(sender.getMessages()).isEmpty(); } @Test |