Stop sending emails about assignee.
This is part of removal of assignee functionality. Assignee has been
superseded by attention set and is no longer supported in the Web UI.
Google-Bug-Id: b/267456422
Release-Notes: skip
Change-Id: Ie971ece88041073acd0ff46c8bf496275fca22ba
diff --git a/Documentation/config-mail.txt b/Documentation/config-mail.txt
index 8bd5dc7..4f11ca8 100644
--- a/Documentation/config-mail.txt
+++ b/Documentation/config-mail.txt
@@ -139,12 +139,6 @@
change being reverted. It is a `ChangeEmail`: see `ChangeSubject.soy` and
ChangeFooter.
-=== SetAssignee.soy and SetAssigneeHtml.soy
-
-The SetAssignee templates will determine the contents of the email related to a
-user being assigned to a change. It is a `ChangeEmail`: see `ChangeSubject.soy`
-and ChangeFooter.
-
== Mail Variables and Methods
diff --git a/Documentation/user-notify.txt b/Documentation/user-notify.txt
index 24c35f0..d2a22a7 100644
--- a/Documentation/user-notify.txt
+++ b/Documentation/user-notify.txt
@@ -181,7 +181,6 @@
* newpatchset
* restore
* revert
-* setassignee
[[Gerrit-Change-Id]]Gerrit-Change-Id::
diff --git a/java/com/google/gerrit/mail/MailHeader.java b/java/com/google/gerrit/mail/MailHeader.java
index 2700f81..6933140 100644
--- a/java/com/google/gerrit/mail/MailHeader.java
+++ b/java/com/google/gerrit/mail/MailHeader.java
@@ -17,7 +17,6 @@
/** Variables used by emails to hold data */
public enum MailHeader {
// Gerrit metadata holders
- ASSIGNEE("Gerrit-Assignee"),
ATTENTION("Gerrit-Attention"),
BRANCH("Gerrit-Branch"),
CC("Gerrit-CC"),
diff --git a/java/com/google/gerrit/pgm/init/SitePathInitializer.java b/java/com/google/gerrit/pgm/init/SitePathInitializer.java
index 236d185..a057e66 100644
--- a/java/com/google/gerrit/pgm/init/SitePathInitializer.java
+++ b/java/com/google/gerrit/pgm/init/SitePathInitializer.java
@@ -144,8 +144,6 @@
extractMailExample("RestoredHtml.soy");
extractMailExample("Reverted.soy");
extractMailExample("RevertedHtml.soy");
- extractMailExample("SetAssignee.soy");
- extractMailExample("SetAssigneeHtml.soy");
if (!ui.isBatch()) {
System.err.println();
diff --git a/java/com/google/gerrit/server/change/SetAssigneeOp.java b/java/com/google/gerrit/server/change/SetAssigneeOp.java
index fd3e972..5d19c28 100644
--- a/java/com/google/gerrit/server/change/SetAssigneeOp.java
+++ b/java/com/google/gerrit/server/change/SetAssigneeOp.java
@@ -16,15 +16,12 @@
import static java.util.Objects.requireNonNull;
-import com.google.common.flogger.FluentLogger;
import com.google.gerrit.entities.Change;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.extensions.events.AssigneeChanged;
-import com.google.gerrit.server.mail.send.MessageIdGenerator;
-import com.google.gerrit.server.mail.send.SetAssigneeSender;
import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.gerrit.server.update.BatchUpdateOp;
@@ -34,12 +31,9 @@
import com.google.gerrit.server.validators.AssigneeValidationListener;
import com.google.gerrit.server.validators.ValidationException;
import com.google.inject.Inject;
-import com.google.inject.Provider;
import com.google.inject.assistedinject.Assisted;
public class SetAssigneeOp implements BatchUpdateOp {
- private static final FluentLogger logger = FluentLogger.forEnclosingClass();
-
public interface Factory {
SetAssigneeOp create(IdentifiedUser assignee);
}
@@ -48,10 +42,7 @@
private final PluginSetContext<AssigneeValidationListener> validationListeners;
private final IdentifiedUser newAssignee;
private final AssigneeChanged assigneeChanged;
- private final SetAssigneeSender.Factory setAssigneeSenderFactory;
- private final Provider<IdentifiedUser> user;
private final IdentifiedUser.GenericFactory userFactory;
- private final MessageIdGenerator messageIdGenerator;
private Change change;
private IdentifiedUser oldAssignee;
@@ -61,18 +52,12 @@
ChangeMessagesUtil cmUtil,
PluginSetContext<AssigneeValidationListener> validationListeners,
AssigneeChanged assigneeChanged,
- SetAssigneeSender.Factory setAssigneeSenderFactory,
- Provider<IdentifiedUser> user,
IdentifiedUser.GenericFactory userFactory,
- MessageIdGenerator messageIdGenerator,
@Assisted IdentifiedUser newAssignee) {
this.cmUtil = cmUtil;
this.validationListeners = validationListeners;
this.assigneeChanged = assigneeChanged;
- this.setAssigneeSenderFactory = setAssigneeSenderFactory;
- this.user = user;
this.userFactory = userFactory;
- this.messageIdGenerator = messageIdGenerator;
this.newAssignee = requireNonNull(newAssignee, "assignee");
}
@@ -119,18 +104,6 @@
@Override
public void postUpdate(PostUpdateContext ctx) {
- try {
- SetAssigneeSender emailSender =
- setAssigneeSenderFactory.create(
- change.getProject(), change.getId(), newAssignee.getAccountId());
- emailSender.setFrom(user.get().getAccountId());
- emailSender.setMessageId(
- messageIdGenerator.fromChangeUpdate(ctx.getRepoView(), change.currentPatchSetId()));
- emailSender.send();
- } catch (Exception err) {
- logger.atSevere().withCause(err).log(
- "Cannot send email to new assignee of change %s", change.getId());
- }
assigneeChanged.fire(
ctx.getChangeData(change),
ctx.getAccount(),
diff --git a/java/com/google/gerrit/server/mail/EmailModule.java b/java/com/google/gerrit/server/mail/EmailModule.java
index c659b5f..50f26bb 100644
--- a/java/com/google/gerrit/server/mail/EmailModule.java
+++ b/java/com/google/gerrit/server/mail/EmailModule.java
@@ -31,7 +31,6 @@
import com.google.gerrit.server.mail.send.ReplacePatchSetSender;
import com.google.gerrit.server.mail.send.RestoredSender;
import com.google.gerrit.server.mail.send.RevertedSender;
-import com.google.gerrit.server.mail.send.SetAssigneeSender;
public class EmailModule extends FactoryModule {
@Override
@@ -50,7 +49,6 @@
factory(ReplacePatchSetSender.Factory.class);
factory(RestoredSender.Factory.class);
factory(RevertedSender.Factory.class);
- factory(SetAssigneeSender.Factory.class);
factory(AddToAttentionSetSender.Factory.class);
factory(RemoveFromAttentionSetSender.Factory.class);
}
diff --git a/java/com/google/gerrit/server/mail/send/ChangeEmail.java b/java/com/google/gerrit/server/mail/send/ChangeEmail.java
index 2a683ba..7bbee2a 100644
--- a/java/com/google/gerrit/server/mail/send/ChangeEmail.java
+++ b/java/com/google/gerrit/server/mail/send/ChangeEmail.java
@@ -546,9 +546,6 @@
footers.add(MailHeader.CHANGE_NUMBER.withDelimiter() + change.getChangeId());
footers.add(MailHeader.PATCH_SET.withDelimiter() + patchSet.number());
footers.add(MailHeader.OWNER.withDelimiter() + getNameEmailFor(change.getOwner()));
- if (change.getAssignee() != null) {
- footers.add(MailHeader.ASSIGNEE.withDelimiter() + getNameEmailFor(change.getAssignee()));
- }
for (String reviewer : getEmailsByState(ReviewerStateInternal.REVIEWER)) {
footers.add(MailHeader.REVIEWER.withDelimiter() + reviewer);
}
diff --git a/java/com/google/gerrit/server/mail/send/MailSoySauceLoader.java b/java/com/google/gerrit/server/mail/send/MailSoySauceLoader.java
index 9d75abd..ce54708 100644
--- a/java/com/google/gerrit/server/mail/send/MailSoySauceLoader.java
+++ b/java/com/google/gerrit/server/mail/send/MailSoySauceLoader.java
@@ -88,8 +88,6 @@
"RestoredHtml.soy",
"Reverted.soy",
"RevertedHtml.soy",
- "SetAssignee.soy",
- "SetAssigneeHtml.soy",
};
private static final SoySauce DEFAULT = getDefault().build().compileTemplates();
diff --git a/java/com/google/gerrit/server/mail/send/SetAssigneeSender.java b/java/com/google/gerrit/server/mail/send/SetAssigneeSender.java
deleted file mode 100644
index 29f4c69..0000000
--- a/java/com/google/gerrit/server/mail/send/SetAssigneeSender.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (C) 2016 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.gerrit.server.mail.send;
-
-import com.google.gerrit.entities.Account;
-import com.google.gerrit.entities.Change;
-import com.google.gerrit.entities.Project;
-import com.google.gerrit.exceptions.EmailException;
-import com.google.gerrit.extensions.api.changes.RecipientType;
-import com.google.inject.Inject;
-import com.google.inject.assistedinject.Assisted;
-
-/**
- * Sender that informs a user by email that they were set as assignee on a change.
- *
- * <p>In contrast to other change emails this email is not sent to the change authors (owner, patch
- * set uploader, author). This is why this class extends {@link ChangeEmail} directly, instead of
- * extending {@link ReplyToChangeSender}.
- */
-public class SetAssigneeSender extends ChangeEmail {
- public interface Factory {
- SetAssigneeSender create(Project.NameKey project, Change.Id changeId, Account.Id assignee);
- }
-
- private final Account.Id assignee;
-
- @Inject
- public SetAssigneeSender(
- EmailArguments args,
- @Assisted Project.NameKey project,
- @Assisted Change.Id changeId,
- @Assisted Account.Id assignee) {
- super(args, "setassignee", newChangeData(args, project, changeId));
- this.assignee = assignee;
- }
-
- @Override
- protected void init() throws EmailException {
- super.init();
-
- add(RecipientType.TO, assignee);
- }
-
- @Override
- protected void formatChange() throws EmailException {
- appendText(textTemplate("SetAssignee"));
- if (useHtml()) {
- appendHtml(soyHtmlTemplate("SetAssigneeHtml"));
- }
- }
-
- @Override
- protected void setupSoyContext() {
- super.setupSoyContext();
- soyContextEmailData.put("assigneeName", getNameFor(assignee));
- }
-}
diff --git a/javatests/com/google/gerrit/acceptance/server/mail/ChangeNotificationsIT.java b/javatests/com/google/gerrit/acceptance/server/mail/ChangeNotificationsIT.java
index b68afc5..e44bfcf 100644
--- a/javatests/com/google/gerrit/acceptance/server/mail/ChangeNotificationsIT.java
+++ b/javatests/com/google/gerrit/acceptance/server/mail/ChangeNotificationsIT.java
@@ -45,7 +45,6 @@
import com.google.gerrit.entities.Permission;
import com.google.gerrit.entities.Project;
import com.google.gerrit.extensions.api.changes.AbandonInput;
-import com.google.gerrit.extensions.api.changes.AssigneeInput;
import com.google.gerrit.extensions.api.changes.DeleteReviewerInput;
import com.google.gerrit.extensions.api.changes.DeleteVoteInput;
import com.google.gerrit.extensions.api.changes.NotifyHandling;
@@ -2452,154 +2451,6 @@
}
/*
- * SetAssigneeSender tests.
- */
-
- @Test
- public void setAssigneeOnReviewableChange() throws Exception {
- StagedChange sc = stageReviewableChange();
- assign(sc, sc.owner, sc.assignee);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .to(sc.assignee)
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- @Test
- public void setAssigneeOnReviewableChangeByOwnerCcingSelf() throws Exception {
- StagedChange sc = stageReviewableChange();
- assign(sc, sc.owner, sc.assignee, CC_ON_OWN_COMMENTS);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(sc.owner)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .to(sc.assignee)
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- @Test
- public void setAssigneeOnReviewableChangeByAdmin() throws Exception {
- StagedChange sc = stageReviewableChange();
- assign(sc, admin, sc.assignee);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .to(sc.assignee)
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- @Test
- public void setAssigneeOnReviewableChangeByAdminCcingSelf() throws Exception {
- StagedChange sc = stageReviewableChange();
- assign(sc, admin, sc.assignee, CC_ON_OWN_COMMENTS);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(admin)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .to(sc.assignee)
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- @Test
- public void setAssigneeToSelfOnReviewableChange() throws Exception {
- StagedChange sc = stageReviewableChange();
- assign(sc, sc.owner, sc.owner);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- @Test
- public void changeAssigneeOnReviewableChange() throws Exception {
- StagedChange sc = stageReviewableChange();
- TestAccount other = accountCreator.create("other", "other@example.com", "other", null);
- assign(sc, sc.owner, other);
- sender.clear();
- assign(sc, sc.owner, sc.assignee);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .to(sc.assignee)
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- @Test
- public void changeAssigneeToSelfOnReviewableChange() throws Exception {
- StagedChange sc = stageReviewableChange();
- assign(sc, sc.owner, sc.assignee);
- sender.clear();
- assign(sc, sc.owner, sc.owner);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- @Test
- public void setAssigneeOnReviewableWipChange() throws Exception {
- StagedChange sc = stageReviewableWipChange();
- assign(sc, sc.owner, sc.assignee);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .to(sc.assignee)
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- @Test
- public void setAssigneeOnWipChange() throws Exception {
- StagedChange sc = stageWipChange();
- assign(sc, sc.owner, sc.assignee);
- assertThat(sender)
- .sent("setassignee", sc)
- .cc(
- StagedUsers.REVIEWER_BY_EMAIL,
- StagedUsers.CC_BY_EMAIL) // TODO(logan): This is probably not intended!
- .to(sc.assignee)
- .noOneElse();
- assertThat(sender).didNotSend();
- }
-
- private void assign(StagedChange sc, TestAccount by, TestAccount to) throws Exception {
- assign(sc, by, to, ENABLED);
- }
-
- private void assign(StagedChange sc, TestAccount by, TestAccount to, EmailStrategy emailStrategy)
- throws Exception {
- setEmailStrategy(by, emailStrategy);
- requestScopeOperations.setApiUser(by.id());
- AssigneeInput in = new AssigneeInput();
- in.assignee = to.email();
- gApi.changes().id(sc.changeId).setAssignee(in);
- }
-
- /*
* Start review and WIP tests.
*/
diff --git a/resources/com/google/gerrit/server/mail/SetAssignee.soy b/resources/com/google/gerrit/server/mail/SetAssignee.soy
deleted file mode 100644
index 83aa580..0000000
--- a/resources/com/google/gerrit/server/mail/SetAssignee.soy
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-{namespace com.google.gerrit.server.mail.template.SetAssignee}
-
-/**
- * The .SetAssignee template will determine the contents of the email related
- * to a user being assigned to a change.
- */
-{template SetAssignee kind="text"}
- {@param change: ?}
- {@param email: ?}
- {@param fromName: ?}
- {@param patchSet: ?}
- {@param projectName: ?}
- Hello{sp}
- {$email.assigneeName},
-
- {\n}
- {\n}
-
- {$fromName} has assigned a change to you.
-
- {sp}Please visit
-
- {\n}
- {\n}
-
- {sp}{sp}{sp}{sp}{$email.changeUrl}
-
- {\n}
- {\n}
-
- to view the change.
-
- {\n}
- {\n}
-
- Change subject: {$change.subject}{\n}
- ......................................................................{\n}
-
- {\n}
-
- {$email.changeDetail}{\n}
-
- {if $email.sshHost}
- {\n}
- {sp}{sp}git pull ssh:{print '//'}{$email.sshHost}/{$projectName}
- {sp}{$patchSet.refName}
- {\n}
- {/if}
-
- {if $email.includeDiff}
- {\n}
- {$email.unifiedDiff}
- {\n}
- {/if}
-{/template}
diff --git a/resources/com/google/gerrit/server/mail/SetAssigneeHtml.soy b/resources/com/google/gerrit/server/mail/SetAssigneeHtml.soy
deleted file mode 100644
index 5435cab..0000000
--- a/resources/com/google/gerrit/server/mail/SetAssigneeHtml.soy
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-{namespace com.google.gerrit.server.mail.template.SetAssigneeHtml}
-
-import * as mailTemplate from 'com/google/gerrit/server/mail/Private.soy';
-
-{template SetAssigneeHtml}
- {@param diffLines: ?}
- {@param email: ?}
- {@param fromName: ?}
- {@param patchSet: ?}
- {@param projectName: ?}
- <p>
- {$fromName} has <strong>assigned</strong> a change to{sp}
- {$email.assigneeName}.{sp}
- </p>
-
- {if $email.changeUrl}
- <p>
- {call mailTemplate.ViewChangeButton data="all" /}
- </p>
- {/if}
-
- {call mailTemplate.Pre}
- {param content: $email.changeDetail /}
- {/call}
-
- {if $email.sshHost}
- {call mailTemplate.Pre}
- {param content kind="html"}
- git pull ssh:{print '//'}{$email.sshHost}/{$projectName}
- {sp}{$patchSet.refName}
- {/param}
- {/call}
- {/if}
-
- {if $email.includeDiff}
- {call mailTemplate.UnifiedDiff}
- {param diffLines: $diffLines /}
- {/call}
- {/if}
-{/template}