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