summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2020-02-04 23:13:32 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2020-02-04 23:13:32 +0000
commitcd4e1d3fee6f7a8bf7a8fd11e406eafab9f1d1e0 (patch)
treedbf0eacd3fd22ea2b5343772a5d4dbefe9cbd1fa
parent903e586b1362a53700697b51ab2f6ef60fa71dd1 (diff)
parent5edf70ec116809366f401b11e6d2f595aafe55d3 (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
-rw-r--r--Documentation/dev-plugins.txt6
-rw-r--r--java/com/google/gerrit/server/change/PatchSetInserter.java8
-rw-r--r--java/com/google/gerrit/server/change/RebaseChangeOp.java9
-rw-r--r--java/com/google/gerrit/server/edit/ChangeEditUtil.java3
-rw-r--r--java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java1
-rw-r--r--javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java8
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