Merge changes Ic1448e3a,Ic78e5421,I036ceb11,I087fa26a,I4721065f, ...
* changes:
AttentionSetEmail: Get Account.Id directly from IdentifiedUser
AttentionSetEmail: Preserve pre-existing request context
AttentionSetEmail: Fix toString method
AttentionSetEmail: Make fields final
Fix messageId for RemoveFromAttentionSetSender
AttentionSetSender: Add missing newline after license header
Document that Rebase Change may set contains_git_conflicts in ChangeInfo
diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt
index 05e7341..da15775 100644
--- a/Documentation/rest-api-changes.txt
+++ b/Documentation/rest-api-changes.txt
@@ -6641,7 +6641,8 @@
by one of the following REST endpoints: link:#create-change[Create
Change], link:#create-merge-patch-set-for-change[Create Merge Patch Set
For Change], link:#cherry-pick[Cherry Pick Revision],
-link:rest-api-project.html#cherry-pick-commit[Cherry Pick Commit]
+link:rest-api-project.html#cherry-pick-commit[Cherry Pick Commit],
+link:#rebase-change[Rebase Change]
|==================================
[[change-input]]
diff --git a/java/com/google/gerrit/server/mail/send/AddToAttentionSetSender.java b/java/com/google/gerrit/server/mail/send/AddToAttentionSetSender.java
index b13bcf6..f9ef199 100644
--- a/java/com/google/gerrit/server/mail/send/AddToAttentionSetSender.java
+++ b/java/com/google/gerrit/server/mail/send/AddToAttentionSetSender.java
@@ -30,7 +30,7 @@
@Inject
public AddToAttentionSetSender(
EmailArguments args, @Assisted Project.NameKey project, @Assisted Change.Id changeId) {
- super(args, project, changeId);
+ super(args, "addToAttentionSet", project, changeId);
}
@Override
diff --git a/java/com/google/gerrit/server/mail/send/AttentionSetSender.java b/java/com/google/gerrit/server/mail/send/AttentionSetSender.java
index 8f898a8..f5af783 100644
--- a/java/com/google/gerrit/server/mail/send/AttentionSetSender.java
+++ b/java/com/google/gerrit/server/mail/send/AttentionSetSender.java
@@ -11,6 +11,7 @@
// 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;
@@ -23,8 +24,9 @@
private Account.Id attentionSetUser;
private String reason;
- public AttentionSetSender(EmailArguments args, Project.NameKey project, Change.Id changeId) {
- super(args, "addToAttentionSet", ChangeEmail.newChangeData(args, project, changeId));
+ public AttentionSetSender(
+ EmailArguments args, String messageClass, Project.NameKey project, Change.Id changeId) {
+ super(args, messageClass, ChangeEmail.newChangeData(args, project, changeId));
}
@Override
diff --git a/java/com/google/gerrit/server/mail/send/RemoveFromAttentionSetSender.java b/java/com/google/gerrit/server/mail/send/RemoveFromAttentionSetSender.java
index 6762b7d..5242bfb 100644
--- a/java/com/google/gerrit/server/mail/send/RemoveFromAttentionSetSender.java
+++ b/java/com/google/gerrit/server/mail/send/RemoveFromAttentionSetSender.java
@@ -30,7 +30,7 @@
@Inject
public RemoveFromAttentionSetSender(
EmailArguments args, @Assisted Project.NameKey project, @Assisted Change.Id changeId) {
- super(args, project, changeId);
+ super(args, "removeFromAttentionSet", project, changeId);
}
@Override
diff --git a/java/com/google/gerrit/server/util/AttentionSetEmail.java b/java/com/google/gerrit/server/util/AttentionSetEmail.java
index 48ddd31..22ab62a 100644
--- a/java/com/google/gerrit/server/util/AttentionSetEmail.java
+++ b/java/com/google/gerrit/server/util/AttentionSetEmail.java
@@ -18,7 +18,6 @@
import com.google.gerrit.entities.Account;
import com.google.gerrit.entities.Change;
import com.google.gerrit.server.CurrentUser;
-import com.google.gerrit.server.account.AccountState;
import com.google.gerrit.server.config.SendEmailExecutor;
import com.google.gerrit.server.mail.send.AddToAttentionSetSender;
import com.google.gerrit.server.mail.send.AttentionSetSender;
@@ -27,6 +26,7 @@
import com.google.gerrit.server.update.Context;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
+import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
@@ -55,19 +55,20 @@
Account.Id attentionUserId);
}
- private ExecutorService sendEmailsExecutor;
- private AccountTemplateUtil accountTemplateUtil;
- private AttentionSetSender sender;
- private Context ctx;
- private Change change;
- private String reason;
-
- private MessageIdGenerator.MessageId messageId;
- private Account.Id attentionUserId;
+ private final ExecutorService sendEmailsExecutor;
+ private final ThreadLocalRequestContext requestContext;
+ private final AccountTemplateUtil accountTemplateUtil;
+ private final AttentionSetSender sender;
+ private final Context ctx;
+ private final Change change;
+ private final String reason;
+ private final MessageIdGenerator.MessageId messageId;
+ private final Account.Id attentionUserId;
@Inject
AttentionSetEmail(
@SendEmailExecutor ExecutorService executor,
+ ThreadLocalRequestContext requestContext,
AccountTemplateUtil accountTemplateUtil,
@Assisted AttentionSetSender sender,
@Assisted Context ctx,
@@ -76,6 +77,7 @@
@Assisted MessageIdGenerator.MessageId messageId,
@Assisted Account.Id attentionUserId) {
this.sendEmailsExecutor = executor;
+ this.requestContext = requestContext;
this.accountTemplateUtil = accountTemplateUtil;
this.sender = sender;
this.ctx = ctx;
@@ -92,11 +94,14 @@
@Override
public void run() {
+ RequestContext old = requestContext.setContext(this);
try {
- AccountState accountState =
- ctx.getUser().isIdentifiedUser() ? ctx.getUser().asIdentifiedUser().state() : null;
- if (accountState != null) {
- sender.setFrom(accountState.account().id());
+ Optional<Account.Id> accountId =
+ ctx.getUser().isIdentifiedUser()
+ ? Optional.of(ctx.getUser().asIdentifiedUser().getAccountId())
+ : Optional.empty();
+ if (accountId.isPresent()) {
+ sender.setFrom(accountId.get());
}
sender.setNotify(ctx.getNotify(change.getId()));
sender.setAttentionSetUser(attentionUserId);
@@ -105,12 +110,14 @@
sender.send();
} catch (Exception e) {
logger.atSevere().withCause(e).log("Cannot email update for change %s", change.getId());
+ } finally {
+ requestContext.setContext(old);
}
}
@Override
public String toString() {
- return "send-email comments";
+ return "send-email attention-set-update";
}
@Override