From 7923a93f5b82d16e933ac0bdd67e502b7222a052 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Mon, 11 Jul 2016 16:23:02 +0900 Subject: [PATCH 1/2] ChangeEmail: Deprecate setChangeMessage(ChangeMessage) The ChangeEmail only needs a ChangeMessage so it can use the timestamp that the message was written to set the "Date" header in the email. Requiring a ChangeMessage will make it difficult to migrate to a new listener-based implementation of email notifications. Deprecate setChangeMessage(ChangeMessage) in favor of a new method setChangeMessage(String, Timestamp). Change-Id: I93d5260a53a36acc283745dc8adca93a956b0131 --- .../google/gerrit/server/change/Abandon.java | 2 +- .../gerrit/server/change/DeleteReviewer.java | 3 ++- .../gerrit/server/change/DeleteVote.java | 2 +- .../server/change/EmailReviewComments.java | 2 +- .../server/change/PatchSetInserter.java | 2 +- .../server/change/PublishDraftPatchSet.java | 2 +- .../google/gerrit/server/change/Restore.java | 2 +- .../google/gerrit/server/change/Revert.java | 2 +- .../google/gerrit/server/git/ReplaceOp.java | 2 +- .../gerrit/server/mail/ChangeEmail.java | 22 +++++++++++-------- 10 files changed, 23 insertions(+), 18 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java index df684113ca..177712482c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java @@ -166,7 +166,7 @@ public class Abandon implements RestModifyView, if (account != null) { cm.setFrom(account.getId()); } - cm.setChangeMessage(message); + cm.setChangeMessage(message.getMessage(), ctx.getWhen()); cm.send(); } catch (Exception e) { log.error("Cannot email update for change " + change.getId(), e); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java index 4117520fba..988b991879 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java @@ -241,7 +241,8 @@ public class DeleteReviewer implements RestModifyView { deleteReviewerSenderFactory.create(projectName, change.getId()); cm.setFrom(userId); cm.addReviewers(toMail); - cm.setChangeMessage(changeMessage); + cm.setChangeMessage(changeMessage.getMessage(), + changeMessage.getWrittenOn()); cm.send(); } catch (Exception err) { log.error("Cannot email update for change " + change.getId(), err); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteVote.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteVote.java index 533bd09c51..91e7e0f013 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteVote.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteVote.java @@ -207,7 +207,7 @@ public class DeleteVote ReplyToChangeSender cm = deleteVoteSenderFactory.create( ctx.getProject(), change.getId()); cm.setFrom(user.getAccountId()); - cm.setChangeMessage(changeMessage); + cm.setChangeMessage(changeMessage.getMessage(), ctx.getWhen()); cm.setNotify(input.notify); cm.send(); } catch (Exception e) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/EmailReviewComments.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/EmailReviewComments.java index 3f333af4c2..c677b692c0 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/EmailReviewComments.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/EmailReviewComments.java @@ -109,7 +109,7 @@ public class EmailReviewComments implements Runnable, RequestContext { cm.setFrom(user.getAccountId()); cm.setPatchSet(patchSet, patchSetInfoFactory.get(notes.getProjectName(), patchSet)); - cm.setChangeMessage(message); + cm.setChangeMessage(message.getMessage(), message.getWrittenOn()); cm.setPatchLineComments(comments); cm.setNotify(notify); cm.send(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java index bcde6336d7..8cbba5fe7e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java @@ -263,7 +263,7 @@ public class PatchSetInserter extends BatchUpdate.Op { ctx.getProject(), change.getId()); cm.setFrom(ctx.getUser().getAccountId()); cm.setPatchSet(patchSet, patchSetInfo); - cm.setChangeMessage(changeMessage); + cm.setChangeMessage(changeMessage.getMessage(), ctx.getWhen()); cm.addReviewers(oldReviewers.byState(REVIEWER)); cm.addExtraCC(oldReviewers.byState(CC)); cm.send(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishDraftPatchSet.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishDraftPatchSet.java index 32605bd31b..72fa4961d6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishDraftPatchSet.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishDraftPatchSet.java @@ -261,7 +261,7 @@ public class PublishDraftPatchSet implements RestModifyView, ReplyToChangeSender cm = restoredSenderFactory.create(ctx.getProject(), change.getId()); cm.setFrom(ctx.getUser().getAccountId()); - cm.setChangeMessage(message); + cm.setChangeMessage(message.getMessage(), ctx.getWhen()); cm.send(); } catch (Exception e) { log.error("Cannot email update for change " + change.getId(), e); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java index 8b2e6f34af..ce14212b09 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java @@ -246,7 +246,7 @@ public class Revert implements RestModifyView, RevertedSender cm = revertedSenderFactory.create(ctx.getProject(), changeId); cm.setFrom(ctx.getUser().getAccountId()); - cm.setChangeMessage(ins.getChangeMessage()); + cm.setChangeMessage(ins.getChangeMessage().getMessage(), ctx.getWhen()); cm.send(); } catch (Exception err) { log.error("Cannot send email for revert change " + changeId, err); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java index c0bfccb672..1a519e772f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java @@ -373,7 +373,7 @@ public class ReplaceOp extends BatchUpdate.Op { projectControl.getProject().getNameKey(), change.getId()); cm.setFrom(ctx.getUser().getAccountId()); cm.setPatchSet(newPatchSet, info); - cm.setChangeMessage(msg); + cm.setChangeMessage(msg.getMessage(), ctx.getWhen()); if (magicBranch != null && magicBranch.notify != null) { cm.setNotify(magicBranch.notify); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java index 0684d8fb33..5ea7075b41 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ChangeEmail.java @@ -50,6 +50,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.sql.Timestamp; import java.text.MessageFormat; import java.util.Collection; import java.util.Collections; @@ -72,7 +73,8 @@ public abstract class ChangeEmail extends NotificationEmail { protected final ChangeData changeData; protected PatchSet patchSet; protected PatchSetInfo patchSetInfo; - protected ChangeMessage changeMessage; + protected String changeMessage; + protected Timestamp timestamp; protected ProjectState projectState; protected Set authors; @@ -104,8 +106,14 @@ public abstract class ChangeEmail extends NotificationEmail { patchSetInfo = psi; } + @Deprecated public void setChangeMessage(final ChangeMessage cm) { + setChangeMessage(cm.getMessage(), cm.getWrittenOn()); + } + + public void setChangeMessage(String cm, Timestamp t) { changeMessage = cm; + timestamp = t; } /** Format the message body by calling {@link #appendText(String)}. */ @@ -166,9 +174,8 @@ public abstract class ChangeEmail extends NotificationEmail { authors = getAuthors(); super.init(); - - if (changeMessage != null && changeMessage.getWrittenOn() != null) { - setHeader("Date", new Date(changeMessage.getWrittenOn().getTime())); + if (timestamp != null) { + setHeader("Date", new Date(timestamp.getTime())); } setChangeSubjectHeader(); setHeader("X-Gerrit-Change-Id", "" + change.getKey().get()); @@ -220,13 +227,10 @@ public abstract class ChangeEmail extends NotificationEmail { } } - /** Get the text of the "cover letter", from {@link ChangeMessage}. */ + /** Get the text of the "cover letter". */ public String getCoverLetter() { if (changeMessage != null) { - final String txt = changeMessage.getMessage(); - if (txt != null) { - return txt.trim(); - } + return changeMessage.trim(); } return ""; } From ed3cba635e250aedd284fac23b49f838f2779b5e Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 12 Jul 2016 12:05:41 +0900 Subject: [PATCH 2/2] ChangeEvent: Add 'who' and 'when' fields and methods The 'when' field tells when the event occurred, and 'who' tells which account performed the action that triggered the event. Deprecate the existing events' get..() methods in favor of getWho(). Change-Id: I3fdae6c5b76eda8494bf3b5c95ea6bb077690d04 --- .../events/ChangeAbandonedListener.java | 1 + .../gerrit/extensions/events/ChangeEvent.java | 6 ++++- .../events/ChangeMergedListener.java | 1 + .../events/ChangeRestoredListener.java | 1 + .../events/CommentAddedListener.java | 1 + .../events/DraftPublishedListener.java | 1 + .../events/HashtagsEditedListener.java | 1 + .../events/RevisionCreatedListener.java | 1 + .../events/TopicEditedListener.java | 1 + .../google/gerrit/server/change/Abandon.java | 2 +- .../gerrit/server/change/ChangeInserter.java | 3 ++- .../gerrit/server/change/DeleteReviewer.java | 1 + .../server/change/PatchSetInserter.java | 3 ++- .../gerrit/server/change/PostReviewers.java | 4 ++- .../server/change/PublishDraftPatchSet.java | 3 ++- .../google/gerrit/server/change/PutTopic.java | 3 ++- .../google/gerrit/server/change/Restore.java | 3 ++- .../google/gerrit/server/change/Revert.java | 2 +- .../gerrit/server/change/SetHashtagsOp.java | 2 +- .../events/StreamEventsApiListener.java | 16 ++++++------ .../events/AbstractChangeEvent.java | 20 ++++++++++++++- .../events/AbstractRevisionEvent.java | 8 ++++-- .../extensions/events/ChangeAbandoned.java | 14 ++++++----- .../extensions/events/ChangeMerged.java | 13 +++++----- .../extensions/events/ChangeRestored.java | 14 ++++++----- .../extensions/events/ChangeReverted.java | 15 ++++++----- .../extensions/events/CommentAdded.java | 15 +++++------ .../extensions/events/DraftPublished.java | 16 +++++++----- .../extensions/events/HashtagsEdited.java | 19 ++++++++------ .../extensions/events/ReviewerAdded.java | 17 ++++++++----- .../extensions/events/ReviewerDeleted.java | 25 +++++++++++-------- .../extensions/events/RevisionCreated.java | 16 +++++++----- .../server/extensions/events/TopicEdited.java | 18 ++++++++----- .../gerrit/server/git/MergedByPushOp.java | 3 ++- .../google/gerrit/server/git/ReplaceOp.java | 3 ++- .../server/git/strategy/SubmitStrategyOp.java | 3 ++- plugins/hooks | 2 +- 37 files changed, 178 insertions(+), 99 deletions(-) diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeAbandonedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeAbandonedListener.java index 621c605315..40b84a3e71 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeAbandonedListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeAbandonedListener.java @@ -21,6 +21,7 @@ import com.google.gerrit.extensions.common.AccountInfo; @ExtensionPoint public interface ChangeAbandonedListener { interface Event extends RevisionEvent { + @Deprecated AccountInfo getAbandoner(); String getReason(); } diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeEvent.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeEvent.java index 05beb0fce3..f0127109cf 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeEvent.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeEvent.java @@ -14,10 +14,14 @@ package com.google.gerrit.extensions.events; +import com.google.gerrit.extensions.common.AccountInfo; import com.google.gerrit.extensions.common.ChangeInfo; +import java.sql.Timestamp; + /** Interface to be extended by Events with a Change. */ public interface ChangeEvent extends GerritEvent { ChangeInfo getChange(); + AccountInfo getWho(); + Timestamp getWhen(); } - diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeMergedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeMergedListener.java index 8b55af3f5b..d0ca6d6fc7 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeMergedListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeMergedListener.java @@ -21,6 +21,7 @@ import com.google.gerrit.extensions.common.AccountInfo; @ExtensionPoint public interface ChangeMergedListener { interface Event extends RevisionEvent { + @Deprecated AccountInfo getMerger(); /** * Represents the merged Revision when the submit strategy is cherry-pick or diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeRestoredListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeRestoredListener.java index 6e9e26b566..e5f3330715 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeRestoredListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/ChangeRestoredListener.java @@ -21,6 +21,7 @@ import com.google.gerrit.extensions.common.AccountInfo; @ExtensionPoint public interface ChangeRestoredListener { interface Event extends RevisionEvent { + @Deprecated AccountInfo getRestorer(); String getReason(); } diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/CommentAddedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/CommentAddedListener.java index 3e6a9c7e70..6c82034db0 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/CommentAddedListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/CommentAddedListener.java @@ -24,6 +24,7 @@ import java.util.Map; @ExtensionPoint public interface CommentAddedListener { interface Event extends RevisionEvent { + @Deprecated AccountInfo getAuthor(); String getComment(); Map getApprovals(); diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/DraftPublishedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/DraftPublishedListener.java index 82e81a5afc..3857468b96 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/DraftPublishedListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/DraftPublishedListener.java @@ -21,6 +21,7 @@ import com.google.gerrit.extensions.common.AccountInfo; @ExtensionPoint public interface DraftPublishedListener { interface Event extends RevisionEvent { + @Deprecated AccountInfo getPublisher(); } diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/HashtagsEditedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/HashtagsEditedListener.java index eba146fdfd..c49b0f3bfc 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/HashtagsEditedListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/HashtagsEditedListener.java @@ -23,6 +23,7 @@ import java.util.Collection; @ExtensionPoint public interface HashtagsEditedListener { interface Event extends ChangeEvent { + @Deprecated AccountInfo getEditor(); Collection getHashtags(); Collection getAddedHashtags(); diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/RevisionCreatedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/RevisionCreatedListener.java index e400b7e110..5e4e0959df 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/RevisionCreatedListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/RevisionCreatedListener.java @@ -21,6 +21,7 @@ import com.google.gerrit.extensions.common.AccountInfo; @ExtensionPoint public interface RevisionCreatedListener { interface Event extends RevisionEvent { + @Deprecated AccountInfo getUploader(); } diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/TopicEditedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/TopicEditedListener.java index ce210dc0e5..68ba22cc0a 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/TopicEditedListener.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/TopicEditedListener.java @@ -21,6 +21,7 @@ import com.google.gerrit.extensions.common.AccountInfo; @ExtensionPoint public interface TopicEditedListener { interface Event extends ChangeEvent { + @Deprecated AccountInfo getEditor(); String getOldTopic(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java index 177712482c..de14f0e8c3 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java @@ -171,7 +171,7 @@ public class Abandon implements RestModifyView, } catch (Exception e) { log.error("Cannot email update for change " + change.getId(), e); } - changeAbandoned.fire(change, patchSet, account, msgTxt); + changeAbandoned.fire(change, patchSet, account, msgTxt, ctx.getWhen()); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java index b73f44a4cc..8aec3e7a4e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java @@ -401,7 +401,8 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { * show a transition from an oldValue of 0 to the new value. */ if (fireRevisionCreated) { - revisionCreated.fire(change, patchSet, ctx.getUser().getAccountId()); + revisionCreated.fire(change, patchSet, ctx.getUser().getAccountId(), + ctx.getWhen()); if (approvals != null && !approvals.isEmpty()) { ChangeControl changeControl = changeControlFactory.controlFor( ctx.getDb(), change, ctx.getUser()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java index 988b991879..c25a6f29b4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java @@ -199,6 +199,7 @@ public class DeleteReviewer implements RestModifyView { emailReviewers(ctx.getProject(), currChange, del, changeMessage); reviewerDeleted.fire(currChange, currPs, reviewer, + ctx.getUser().asIdentifiedUser().getAccount(), changeMessage.getMessage(), newApprovals, oldApprovals, ctx.getWhen()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java index 8cbba5fe7e..432ae4db6f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java @@ -274,7 +274,8 @@ public class PatchSetInserter extends BatchUpdate.Op { } if (fireRevisionCreated) { - revisionCreated.fire(change, patchSet, ctx.getUser().getAccountId()); + revisionCreated.fire(change, patchSet, ctx.getUser().getAccountId(), + ctx.getWhen()); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java index e21cf54224..fabedd77ef 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java @@ -289,7 +289,9 @@ public class PostReviewers implements RestModifyView, if (change != null) { topicEdited.fire(change, ctx.getUser().asIdentifiedUser().getAccount(), - oldTopicName); + oldTopicName, + ctx.getWhen()); } } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java index 6efe7f4322..f571c1083d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java @@ -156,7 +156,8 @@ public class Restore implements RestModifyView, } changeRestored.fire(change, patchSet, ctx.getUser().asIdentifiedUser().getAccount(), - Strings.emptyToNull(input.message)); + Strings.emptyToNull(input.message), + ctx.getWhen()); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java index ce14212b09..ddd97d3762 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java @@ -240,7 +240,7 @@ public class Revert implements RestModifyView, @Override public void postUpdate(Context ctx) throws Exception { - changeReverted.fire(change, ins.getChange()); + changeReverted.fire(change, ins.getChange(), ctx.getWhen()); Change.Id changeId = ins.getChange().getId(); try { RevertedSender cm = diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java index b1be3ebb78..354163e183 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java @@ -167,7 +167,7 @@ public class SetHashtagsOp extends BatchUpdate.Op { public void postUpdate(Context ctx) throws OrmException { if (updated() && fireEvent) { hashtagsEdited.fire(change, ctx.getUser().getAccountId(), updatedHashtags, - toAdd, toRemove); + toAdd, toRemove, ctx.getWhen()); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/events/StreamEventsApiListener.java b/gerrit-server/src/main/java/com/google/gerrit/server/events/StreamEventsApiListener.java index b6c2e98b5c..1368bf3cc5 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/events/StreamEventsApiListener.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/events/StreamEventsApiListener.java @@ -272,7 +272,7 @@ public class StreamEventsApiListener implements TopicChangedEvent event = new TopicChangedEvent(change); event.change = changeAttributeSupplier(change); - event.changer = accountAttributeSupplier(ev.getEditor()); + event.changer = accountAttributeSupplier(ev.getWho()); event.oldTopic = ev.getOldTopic(); dispatcher.get().postEvent(change, event); @@ -291,7 +291,7 @@ public class StreamEventsApiListener implements event.change = changeAttributeSupplier(change); event.patchSet = patchSetAttributeSupplier(change, patchSet); - event.uploader = accountAttributeSupplier(ev.getUploader()); + event.uploader = accountAttributeSupplier(ev.getWho()); dispatcher.get().postEvent(change, event); } catch (OrmException e) { @@ -354,7 +354,7 @@ public class StreamEventsApiListener implements HashtagsChangedEvent event = new HashtagsChangedEvent(change); event.change = changeAttributeSupplier(change); - event.editor = accountAttributeSupplier(ev.getEditor()); + event.editor = accountAttributeSupplier(ev.getWho()); event.hashtags = hashtagArray(ev.getHashtags()); event.added = hashtagArray(ev.getAddedHashtags()); event.removed = hashtagArray(ev.getRemovedHashtags()); @@ -396,7 +396,7 @@ public class StreamEventsApiListener implements event.change = changeAttributeSupplier(change); event.patchSet = patchSetAttributeSupplier(change, ps); - event.uploader = accountAttributeSupplier(ev.getPublisher()); + event.uploader = accountAttributeSupplier(ev.getWho()); dispatcher.get().postEvent(change, event); } catch (OrmException e) { @@ -413,7 +413,7 @@ public class StreamEventsApiListener implements CommentAddedEvent event = new CommentAddedEvent(change); event.change = changeAttributeSupplier(change); - event.author = accountAttributeSupplier(ev.getAuthor()); + event.author = accountAttributeSupplier(ev.getWho()); event.patchSet = patchSetAttributeSupplier(change, ps); event.comment = ev.getComment(); event.approvals = approvalsAttributeSupplier( @@ -433,7 +433,7 @@ public class StreamEventsApiListener implements ChangeRestoredEvent event = new ChangeRestoredEvent(change); event.change = changeAttributeSupplier(change); - event.restorer = accountAttributeSupplier(ev.getRestorer()); + event.restorer = accountAttributeSupplier(ev.getWho()); event.patchSet = patchSetAttributeSupplier(change, psUtil.current(db.get(), notes)); event.reason = ev.getReason(); @@ -452,7 +452,7 @@ public class StreamEventsApiListener implements ChangeMergedEvent event = new ChangeMergedEvent(change); event.change = changeAttributeSupplier(change); - event.submitter = accountAttributeSupplier(ev.getMerger()); + event.submitter = accountAttributeSupplier(ev.getWho()); event.patchSet = patchSetAttributeSupplier(change, psUtil.current(db.get(), notes)); event.newRev = ev.getNewRevisionId(); @@ -471,7 +471,7 @@ public class StreamEventsApiListener implements ChangeAbandonedEvent event = new ChangeAbandonedEvent(change); event.change = changeAttributeSupplier(change); - event.abandoner = accountAttributeSupplier(ev.getAbandoner()); + event.abandoner = accountAttributeSupplier(ev.getWho()); event.patchSet = patchSetAttributeSupplier(change, psUtil.current(db.get(), notes)); event.reason = ev.getReason(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/AbstractChangeEvent.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/AbstractChangeEvent.java index d25046f3f9..b4858babe0 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/AbstractChangeEvent.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/AbstractChangeEvent.java @@ -14,18 +14,36 @@ package com.google.gerrit.server.extensions.events; +import com.google.gerrit.extensions.common.AccountInfo; import com.google.gerrit.extensions.common.ChangeInfo; import com.google.gerrit.extensions.events.ChangeEvent; +import java.sql.Timestamp; + public abstract class AbstractChangeEvent implements ChangeEvent { private final ChangeInfo changeInfo; + private final AccountInfo who; + private final Timestamp when; - protected AbstractChangeEvent(ChangeInfo change) { + protected AbstractChangeEvent(ChangeInfo change, AccountInfo who, + Timestamp when) { this.changeInfo = change; + this.who = who; + this.when = when; } @Override public ChangeInfo getChange() { return changeInfo; } + + @Override + public AccountInfo getWho() { + return who; + } + + @Override + public Timestamp getWhen() { + return when; + } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/AbstractRevisionEvent.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/AbstractRevisionEvent.java index 35ce9b4a4b..efc368c022 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/AbstractRevisionEvent.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/AbstractRevisionEvent.java @@ -14,17 +14,21 @@ package com.google.gerrit.server.extensions.events; +import com.google.gerrit.extensions.common.AccountInfo; import com.google.gerrit.extensions.common.ChangeInfo; import com.google.gerrit.extensions.common.RevisionInfo; import com.google.gerrit.extensions.events.RevisionEvent; +import java.sql.Timestamp; + public abstract class AbstractRevisionEvent extends AbstractChangeEvent implements RevisionEvent { private final RevisionInfo revisionInfo; - protected AbstractRevisionEvent(ChangeInfo change, RevisionInfo revision) { - super(change); + protected AbstractRevisionEvent(ChangeInfo change, RevisionInfo revision, + AccountInfo who, Timestamp when) { + super(change, who, when); revisionInfo = revision; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeAbandoned.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeAbandoned.java index 6c23f60ada..ec49042ccf 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeAbandoned.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeAbandoned.java @@ -31,6 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.sql.Timestamp; public class ChangeAbandoned { private static final Logger log = @@ -47,11 +48,11 @@ public class ChangeAbandoned { } public void fire(ChangeInfo change, RevisionInfo revision, - AccountInfo abandoner, String reason) { + AccountInfo abandoner, String reason, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, revision, abandoner, reason); + Event event = new Event(change, revision, abandoner, reason, when); for (ChangeAbandonedListener l : listeners) { try { l.onChangeAbandoned(event); @@ -61,7 +62,8 @@ public class ChangeAbandoned { } } - public void fire(Change change, PatchSet ps, Account abandoner, String reason) { + public void fire(Change change, PatchSet ps, Account abandoner, String reason, + Timestamp when) { if (!listeners.iterator().hasNext()) { return; } @@ -69,7 +71,7 @@ public class ChangeAbandoned { fire(util.changeInfo(change), util.revisionInfo(change.getProject(), ps), util.accountInfo(abandoner), - reason); + reason, when); } catch (PatchListNotAvailableException | GpgException | IOException | OrmException e) { log.error("Couldn't fire event", e); @@ -82,8 +84,8 @@ public class ChangeAbandoned { private final String reason; Event(ChangeInfo change, RevisionInfo revision, AccountInfo abandoner, - String reason) { - super(change, revision); + String reason, Timestamp when) { + super(change, revision, abandoner, when); this.abandoner = abandoner; this.reason = reason; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeMerged.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeMerged.java index 6a27275e34..6e69b588fb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeMerged.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeMerged.java @@ -31,6 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.sql.Timestamp; public class ChangeMerged { private static final Logger log = @@ -47,11 +48,11 @@ public class ChangeMerged { } public void fire(ChangeInfo change, RevisionInfo revision, - AccountInfo merger, String newRevisionId) { + AccountInfo merger, String newRevisionId, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, revision, merger, newRevisionId); + Event event = new Event(change, revision, merger, newRevisionId, when); for (ChangeMergedListener l : listeners) { try { l.onChangeMerged(event); @@ -62,7 +63,7 @@ public class ChangeMerged { } public void fire(Change change, PatchSet ps, Account merger, - String newRevisionId) { + String newRevisionId, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } @@ -70,7 +71,7 @@ public class ChangeMerged { fire(util.changeInfo(change), util.revisionInfo(change.getProject(), ps), util.accountInfo(merger), - newRevisionId); + newRevisionId, when); } catch (PatchListNotAvailableException | GpgException | IOException | OrmException e) { log.error("Couldn't fire event", e); @@ -83,8 +84,8 @@ public class ChangeMerged { private final String newRevisionId; Event(ChangeInfo change, RevisionInfo revision, AccountInfo merger, - String newRevisionId) { - super(change, revision); + String newRevisionId, Timestamp when) { + super(change, revision, merger, when); this.merger = merger; this.newRevisionId = newRevisionId; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeRestored.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeRestored.java index 99819025de..e4e4c6c668 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeRestored.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeRestored.java @@ -31,6 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.sql.Timestamp; public class ChangeRestored { private static final Logger log = @@ -47,11 +48,11 @@ public class ChangeRestored { } public void fire(ChangeInfo change, RevisionInfo revision, - AccountInfo restorer, String reason) { + AccountInfo restorer, String reason, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, revision, restorer, reason); + Event event = new Event(change, revision, restorer, reason, when); for (ChangeRestoredListener l : listeners) { try { l.onChangeRestored(event); @@ -61,7 +62,8 @@ public class ChangeRestored { } } - public void fire(Change change, PatchSet ps, Account restorer, String reason) { + public void fire(Change change, PatchSet ps, Account restorer, String reason, + Timestamp when) { if (!listeners.iterator().hasNext()) { return; } @@ -69,7 +71,7 @@ public class ChangeRestored { fire(util.changeInfo(change), util.revisionInfo(change.getProject(), ps), util.accountInfo(restorer), - reason); + reason, when); } catch (PatchListNotAvailableException | GpgException | IOException | OrmException e) { log.error("Couldn't fire event", e); @@ -83,8 +85,8 @@ public class ChangeRestored { private String reason; Event(ChangeInfo change, RevisionInfo revision, AccountInfo restorer, - String reason) { - super(change, revision); + String reason, Timestamp when) { + super(change, revision, restorer, when); this.restorer = restorer; this.reason = reason; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeReverted.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeReverted.java index efadb53d83..90103913e8 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeReverted.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ChangeReverted.java @@ -24,6 +24,8 @@ import com.google.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.sql.Timestamp; + public class ChangeReverted { private static final Logger log = LoggerFactory.getLogger(ChangeReverted.class); @@ -38,22 +40,23 @@ public class ChangeReverted { this.util = util; } - public void fire(Change change, Change revertChange) { + public void fire(Change change, Change revertChange, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } try { - fire(util.changeInfo(change), util.changeInfo(revertChange)); + fire(util.changeInfo(change), util.changeInfo(revertChange), when); } catch (OrmException e) { log.error("Couldn't fire event", e); } } - public void fire (ChangeInfo change, ChangeInfo revertChange) { + public void fire (ChangeInfo change, ChangeInfo revertChange, + Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, revertChange); + Event event = new Event(change, revertChange, when); for (ChangeRevertedListener l : listeners) { try { l.onChangeReverted(event); @@ -67,8 +70,8 @@ public class ChangeReverted { implements ChangeRevertedListener.Event { private final ChangeInfo revertChange; - Event(ChangeInfo change, ChangeInfo revertChange) { - super(change); + Event(ChangeInfo change, ChangeInfo revertChange, Timestamp when) { + super(change, revertChange.owner, when); this.revertChange = revertChange; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/CommentAdded.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/CommentAdded.java index 15f82b31ac..9983fd7121 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/CommentAdded.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/CommentAdded.java @@ -51,12 +51,12 @@ public class CommentAdded { public void fire(ChangeInfo change, RevisionInfo revision, AccountInfo author, String comment, Map approvals, - Map oldApprovals) { + Map oldApprovals, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } Event event = new Event( - change, revision, author, comment, approvals, oldApprovals); + change, revision, author, comment, approvals, oldApprovals, when); for (CommentAddedListener l : listeners) { try { l.onCommentAdded(event); @@ -68,7 +68,7 @@ public class CommentAdded { public void fire(Change change, PatchSet ps, Account author, String comment, Map approvals, - Map oldApprovals, Timestamp ts) { + Map oldApprovals, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } @@ -77,8 +77,9 @@ public class CommentAdded { util.revisionInfo(change.getProject(), ps), util.accountInfo(author), comment, - util.approvals(author, approvals, ts), - util.approvals(author, oldApprovals, ts)); + util.approvals(author, approvals, when), + util.approvals(author, oldApprovals, when), + when); } catch (PatchListNotAvailableException | GpgException | IOException | OrmException e) { log.error("Couldn't fire event", e); @@ -95,8 +96,8 @@ public class CommentAdded { Event(ChangeInfo change, RevisionInfo revision, AccountInfo author, String comment, Map approvals, - Map oldApprovals) { - super(change, revision); + Map oldApprovals, Timestamp when) { + super(change, revision, author, when); this.author = author; this.comment = comment; this.approvals = approvals; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/DraftPublished.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/DraftPublished.java index 433f717924..c9705c8447 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/DraftPublished.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/DraftPublished.java @@ -31,6 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.sql.Timestamp; public class DraftPublished { private static final Logger log = @@ -47,11 +48,11 @@ public class DraftPublished { } public void fire(ChangeInfo change, RevisionInfo revision, - AccountInfo publisher) { + AccountInfo publisher, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, revision, publisher); + Event event = new Event(change, revision, publisher, when); for (DraftPublishedListener l : listeners) { try { l.onDraftPublished(event); @@ -61,11 +62,13 @@ public class DraftPublished { } } - public void fire(Change change, PatchSet patchSet, Account.Id accountId) { + public void fire(Change change, PatchSet patchSet, Account.Id accountId, + Timestamp when) { try { fire(util.changeInfo(change), util.revisionInfo(change.getProject(), patchSet), - util.accountInfo(accountId)); + util.accountInfo(accountId), + when); } catch (PatchListNotAvailableException | GpgException | IOException | OrmException e) { log.error("Couldn't fire event", e); @@ -76,8 +79,9 @@ public class DraftPublished { implements DraftPublishedListener.Event { private final AccountInfo publisher; - Event(ChangeInfo change, RevisionInfo revision, AccountInfo publisher) { - super(change, revision); + Event(ChangeInfo change, RevisionInfo revision, AccountInfo publisher, + Timestamp when) { + super(change, revision, publisher, when); this.publisher = publisher; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/HashtagsEdited.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/HashtagsEdited.java index 692f9081f1..1aad14da73 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/HashtagsEdited.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/HashtagsEdited.java @@ -27,6 +27,7 @@ import com.google.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.sql.Timestamp; import java.util.Collection; import java.util.Set; @@ -44,12 +45,13 @@ public class HashtagsEdited { this.util = util; } - public void fire(ChangeInfo change, AccountInfo editor, Collection hashtags, - Collection added, Collection removed) { + public void fire(ChangeInfo change, AccountInfo editor, + Collection hashtags, Collection added, + Collection removed, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, editor, hashtags, added, removed); + Event event = new Event(change, editor, hashtags, added, removed, when); for (HashtagsEditedListener l : listeners) { try { l.onHashtagsEdited(event); @@ -60,15 +62,16 @@ public class HashtagsEdited { } public void fire(Change change, Id accountId, - ImmutableSortedSet updatedHashtags, Set toAdd, - Set toRemove) { + ImmutableSortedSet hashtags, Set added, + Set removed, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } try { fire(util.changeInfo(change), util.accountInfo(accountId), - updatedHashtags, toAdd, toRemove); + hashtags, added, removed, + when); } catch (OrmException e) { log.error("Couldn't fire event", e); } @@ -83,8 +86,8 @@ public class HashtagsEdited { private Collection removedHashtags; Event(ChangeInfo change, AccountInfo editor, Collection updated, - Collection added, Collection removed) { - super(change); + Collection added, Collection removed, Timestamp when) { + super(change, editor, when); this.editor = editor; this.updatedHashtags = updated; this.addedHashtags = added; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ReviewerAdded.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ReviewerAdded.java index ef7f01368f..ae475c6a2d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ReviewerAdded.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ReviewerAdded.java @@ -31,6 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.sql.Timestamp; public class ReviewerAdded { private static final Logger log = @@ -47,11 +48,11 @@ public class ReviewerAdded { } public void fire(ChangeInfo change, RevisionInfo revision, - AccountInfo reviewer) { + AccountInfo reviewer, AccountInfo adder, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, revision, reviewer); + Event event = new Event(change, revision, reviewer, adder, when); for (ReviewerAddedListener l : listeners) { try { l.onReviewerAdded(event); @@ -61,14 +62,17 @@ public class ReviewerAdded { } } - public void fire(Change change, PatchSet patchSet, Account account) { + public void fire(Change change, PatchSet patchSet, Account account, + Account adder, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } try { fire(util.changeInfo(change), util.revisionInfo(change.getProject(), patchSet), - util.accountInfo(account)); + util.accountInfo(account), + util.accountInfo(adder), + when); } catch (PatchListNotAvailableException | GpgException | IOException | OrmException e) { log.error("Couldn't fire event", e); @@ -79,8 +83,9 @@ public class ReviewerAdded { implements ReviewerAddedListener.Event { private final AccountInfo reviewer; - Event(ChangeInfo change, RevisionInfo revision, AccountInfo reviewer) { - super(change, revision); + Event(ChangeInfo change, RevisionInfo revision, AccountInfo reviewer, + AccountInfo adder, Timestamp when) { + super(change, revision, adder, when); this.reviewer = reviewer; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ReviewerDeleted.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ReviewerDeleted.java index 204f014052..5dfc037965 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ReviewerDeleted.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/ReviewerDeleted.java @@ -50,14 +50,14 @@ public class ReviewerDeleted { } public void fire(ChangeInfo change, RevisionInfo revision, - AccountInfo reviewer, String message, + AccountInfo reviewer, AccountInfo remover, String message, Map newApprovals, - Map oldApprovals) { + Map oldApprovals, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, revision, reviewer, message, - newApprovals, oldApprovals); + Event event = new Event(change, revision, reviewer, remover, message, + newApprovals, oldApprovals, when); for (ReviewerDeletedListener listener : listeners) { try { listener.onReviewerDeleted(event); @@ -68,9 +68,9 @@ public class ReviewerDeleted { } public void fire(Change change, PatchSet patchSet, Account reviewer, - String message, + Account remover, String message, Map newApprovals, - Map oldApprovals, Timestamp ts) { + Map oldApprovals, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } @@ -78,9 +78,11 @@ public class ReviewerDeleted { fire(util.changeInfo(change), util.revisionInfo(change.getProject(), patchSet), util.accountInfo(reviewer), + util.accountInfo(remover), message, - util.approvals(reviewer, newApprovals, ts), - util.approvals(reviewer, oldApprovals, ts)); + util.approvals(reviewer, newApprovals, when), + util.approvals(reviewer, oldApprovals, when), + when); } catch (PatchListNotAvailableException | GpgException | IOException | OrmException e) { log.error("Couldn't fire event", e); @@ -96,9 +98,10 @@ public class ReviewerDeleted { private final Map oldApprovals; Event(ChangeInfo change, RevisionInfo revision, AccountInfo reviewer, - String comment, Map newApprovals, - Map oldApprovals) { - super(change, revision); + AccountInfo remover, String comment, + Map newApprovals, + Map oldApprovals, Timestamp when) { + super(change, revision, remover, when); this.reviewer = reviewer; this.comment = comment; this.newApprovals = newApprovals; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/RevisionCreated.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/RevisionCreated.java index 6b2418d667..67e37c46bb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/RevisionCreated.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/RevisionCreated.java @@ -31,6 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.sql.Timestamp; public class RevisionCreated { private static final Logger log = @@ -47,11 +48,11 @@ public class RevisionCreated { } public void fire(ChangeInfo change, RevisionInfo revision, - AccountInfo uploader) { + AccountInfo uploader, Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, revision, uploader); + Event event = new Event(change, revision, uploader, when); for (RevisionCreatedListener l : listeners) { try { l.onRevisionCreated(event); @@ -61,14 +62,16 @@ public class RevisionCreated { } } - public void fire(Change change, PatchSet patchSet, Account.Id uploader) { + public void fire(Change change, PatchSet patchSet, Account.Id uploader, + Timestamp when) { if (!listeners.iterator().hasNext()) { return; } try { fire(util.changeInfo(change), util.revisionInfo(change.getProject(), patchSet), - util.accountInfo(uploader)); + util.accountInfo(uploader), + when); } catch ( PatchListNotAvailableException | GpgException | IOException | OrmException e) { log.error("Couldn't fire event", e); @@ -79,8 +82,9 @@ public class RevisionCreated { implements RevisionCreatedListener.Event { private final AccountInfo uploader; - Event(ChangeInfo change, RevisionInfo revision, AccountInfo uploader) { - super(change, revision); + Event(ChangeInfo change, RevisionInfo revision, AccountInfo uploader, + Timestamp when) { + super(change, revision, uploader, when); this.uploader = uploader; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/TopicEdited.java b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/TopicEdited.java index fc97d58622..9f6e2b8aae 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/TopicEdited.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/extensions/events/TopicEdited.java @@ -26,6 +26,8 @@ import com.google.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.sql.Timestamp; + public class TopicEdited { private static final Logger log = LoggerFactory.getLogger(TopicEdited.class); @@ -40,11 +42,12 @@ public class TopicEdited { this.util = util; } - public void fire(ChangeInfo change, AccountInfo editor, String oldTopic) { + public void fire(ChangeInfo change, AccountInfo editor, String oldTopic, + Timestamp when) { if (!listeners.iterator().hasNext()) { return; } - Event event = new Event(change, editor, oldTopic); + Event event = new Event(change, editor, oldTopic, when); for (TopicEditedListener l : listeners) { try { l.onTopicEdited(event); @@ -54,14 +57,16 @@ public class TopicEdited { } } - public void fire(Change change, Account account, String oldTopicName) { + public void fire(Change change, Account account, String oldTopicName, + Timestamp when) { if (!listeners.iterator().hasNext()) { return; } try { fire(util.changeInfo(change), util.accountInfo(account), - oldTopicName); + oldTopicName, + when); } catch (OrmException e) { log.error("Couldn't fire event", e); } @@ -72,8 +77,9 @@ public class TopicEdited { private final AccountInfo editor; private final String oldTopic; - Event(ChangeInfo change, AccountInfo editor, String oldTopic) { - super(change); + Event(ChangeInfo change, AccountInfo editor, String oldTopic, + Timestamp when) { + super(change, editor, when); this.editor = editor; this.oldTopic = oldTopic; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergedByPushOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergedByPushOp.java index 3ecc28a097..cb526e78bf 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergedByPushOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergedByPushOp.java @@ -196,7 +196,8 @@ public class MergedByPushOp extends BatchUpdate.Op { changeMerged.fire(change, patchSet, ctx.getUser().asIdentifiedUser().getAccount(), - patchSet.getRevision().get()); + patchSet.getRevision().get(), + ctx.getWhen()); } private PatchSetInfo getPatchSetInfo(ChangeContext ctx) throws IOException { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java index 1a519e772f..9af0f3e91b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java @@ -398,7 +398,8 @@ public class ReplaceOp extends BatchUpdate.Op { } } - revisionCreated.fire(change, newPatchSet, ctx.getUser().getAccountId()); + revisionCreated.fire(change, newPatchSet, ctx.getUser().getAccountId(), + ctx.getWhen()); try { fireCommentAddedEvent(ctx); } catch (Exception e) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/SubmitStrategyOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/SubmitStrategyOp.java index 37e236c89b..36f495ace9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/SubmitStrategyOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/SubmitStrategyOp.java @@ -527,7 +527,8 @@ abstract class SubmitStrategyOp extends BatchUpdate.Op { updatedChange, mergedPatchSet, args.accountCache.get(submitter.getAccountId()).getAccount(), - args.mergeTip.getCurrentTip().name()); + args.mergeTip.getCurrentTip().name(), + ctx.getWhen()); } } diff --git a/plugins/hooks b/plugins/hooks index ac06f40436..3acc14d10d 160000 --- a/plugins/hooks +++ b/plugins/hooks @@ -1 +1 @@ -Subproject commit ac06f404363a29d52ef06d607e29f4a553d1c455 +Subproject commit 3acc14d10d26678eae6489038fe0d4dad644a9b4