Merge "Get project,ref,changekey without calling supplier"

This commit is contained in:
David Pursehouse 2016-01-14 09:51:43 +00:00 committed by Gerrit Code Review
commit 8afc549ada
21 changed files with 105 additions and 72 deletions

View File

@ -394,7 +394,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
@Override
public void doPatchsetCreatedHook(Change change,
PatchSet patchSet, ReviewDb db) throws OrmException {
PatchSetCreatedEvent event = new PatchSetCreatedEvent();
PatchSetCreatedEvent event = new PatchSetCreatedEvent(change);
Supplier<AccountState> uploader =
getAccountSupplier(patchSet.getUploader());
Supplier<AccountState> owner = getAccountSupplier(change.getOwner());
@ -431,7 +431,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
@Override
public void doDraftPublishedHook(Change change, PatchSet patchSet,
ReviewDb db) throws OrmException {
DraftPublishedEvent event = new DraftPublishedEvent();
DraftPublishedEvent event = new DraftPublishedEvent(change);
Supplier<AccountState> uploader =
getAccountSupplier(patchSet.getUploader());
Supplier<AccountState> owner = getAccountSupplier(change.getOwner());
@ -467,7 +467,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
public void doCommentAddedHook(final Change change, Account account,
PatchSet patchSet, String comment, final Map<String, Short> approvals,
ReviewDb db) throws OrmException {
CommentAddedEvent event = new CommentAddedEvent();
CommentAddedEvent event = new CommentAddedEvent(change);
Supplier<AccountState> owner = getAccountSupplier(change.getOwner());
event.change = changeAttributeSupplier(change);
@ -528,7 +528,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
public void doChangeMergedHook(Change change, Account account,
PatchSet patchSet, ReviewDb db, String mergeResultRev)
throws OrmException {
ChangeMergedEvent event = new ChangeMergedEvent();
ChangeMergedEvent event = new ChangeMergedEvent(change);
Supplier<AccountState> owner = getAccountSupplier(change.getOwner());
event.change = changeAttributeSupplier(change);
@ -563,7 +563,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
public void doMergeFailedHook(Change change, Account account,
PatchSet patchSet, String reason,
ReviewDb db) throws OrmException {
MergeFailedEvent event = new MergeFailedEvent();
MergeFailedEvent event = new MergeFailedEvent(change);
Supplier<AccountState> owner = getAccountSupplier(change.getOwner());
event.change = changeAttributeSupplier(change);
@ -598,7 +598,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
public void doChangeAbandonedHook(Change change, Account account,
PatchSet patchSet, String reason, ReviewDb db)
throws OrmException {
ChangeAbandonedEvent event = new ChangeAbandonedEvent();
ChangeAbandonedEvent event = new ChangeAbandonedEvent(change);
AccountState owner = accountCache.get(change.getOwner());
event.change = changeAttributeSupplier(change);
@ -633,7 +633,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
public void doChangeRestoredHook(Change change, Account account,
PatchSet patchSet, String reason, ReviewDb db)
throws OrmException {
ChangeRestoredEvent event = new ChangeRestoredEvent();
ChangeRestoredEvent event = new ChangeRestoredEvent(change);
AccountState owner = accountCache.get(change.getOwner());
event.change = changeAttributeSupplier(change);
@ -709,7 +709,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
@Override
public void doReviewerAddedHook(Change change, Account account,
PatchSet patchSet, ReviewDb db) throws OrmException {
ReviewerAddedEvent event = new ReviewerAddedEvent();
ReviewerAddedEvent event = new ReviewerAddedEvent(change);
Supplier<AccountState> owner = getAccountSupplier(change.getOwner());
event.change = changeAttributeSupplier(change);
@ -739,7 +739,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
public void doTopicChangedHook(Change change, Account account,
String oldTopic, ReviewDb db)
throws OrmException {
TopicChangedEvent event = new TopicChangedEvent();
TopicChangedEvent event = new TopicChangedEvent(change);
AccountState owner = accountCache.get(change.getOwner());
event.change = changeAttributeSupplier(change);
@ -778,7 +778,7 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher,
public void doHashtagsChangedHook(Change change, Account account,
Set<String> added, Set<String> removed, Set<String> hashtags, ReviewDb db)
throws OrmException {
HashtagsChangedEvent event = new HashtagsChangedEvent();
HashtagsChangedEvent event = new HashtagsChangedEvent(change);
AccountState owner = accountCache.get(change.getOwner());
event.change = changeAttributeSupplier(change);

View File

@ -15,13 +15,15 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class ChangeAbandonedEvent extends PatchSetEvent {
static final String TYPE = "change-abandoned";
public Supplier<AccountAttribute> abandoner;
public String reason;
public ChangeAbandonedEvent() {
super("change-abandoned");
public ChangeAbandonedEvent(Change change) {
super(TYPE, change);
}
}

View File

@ -22,22 +22,28 @@ import com.google.gerrit.server.data.ChangeAttribute;
public abstract class ChangeEvent extends RefEvent {
public Supplier<ChangeAttribute> change;
public Project.NameKey projectNameKey;
public String refName;
public Change.Key changeKey;
protected ChangeEvent(String type) {
protected ChangeEvent(String type, Change change) {
super(type);
this.projectNameKey = change.getProject();
this.refName = RefNames.fullName(change.getDest().get());
this.changeKey = change.getKey();
}
@Override
public Project.NameKey getProjectNameKey() {
return new Project.NameKey(change.get().project);
return projectNameKey;
}
@Override
public String getRefName() {
return RefNames.fullName(change.get().branch);
return refName;
}
public Change.Key getChangeKey() {
return new Change.Key(change.get().id);
return changeKey;
}
}

View File

@ -15,13 +15,15 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class ChangeMergedEvent extends PatchSetEvent {
static final String TYPE = "change-merged";
public Supplier<AccountAttribute> submitter;
public String newRev;
public ChangeMergedEvent() {
super("change-merged");
public ChangeMergedEvent(Change change) {
super(TYPE, change);
}
}

View File

@ -15,13 +15,15 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class ChangeRestoredEvent extends PatchSetEvent {
static final String TYPE = "change-restored";
public Supplier<AccountAttribute> restorer;
public String reason;
public ChangeRestoredEvent () {
super("change-restored");
public ChangeRestoredEvent (Change change) {
super(TYPE, change);
}
}

View File

@ -15,15 +15,17 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
import com.google.gerrit.server.data.ApprovalAttribute;
public class CommentAddedEvent extends PatchSetEvent {
static final String TYPE = "comment-added";
public Supplier<AccountAttribute> author;
public Supplier<ApprovalAttribute[]> approvals;
public String comment;
public CommentAddedEvent() {
super("comment-added");
public CommentAddedEvent(Change change) {
super(TYPE, change);
}
}

View File

@ -21,6 +21,7 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.transport.ReceiveCommand;
public class CommitReceivedEvent extends RefEvent {
static final String TYPE = "commit-received";
public ReceiveCommand command;
public Project project;
public String refName;
@ -28,7 +29,7 @@ public class CommitReceivedEvent extends RefEvent {
public IdentifiedUser user;
public CommitReceivedEvent() {
super("commit-received");
super(TYPE);
}
public CommitReceivedEvent(ReceiveCommand command, Project project,

View File

@ -15,12 +15,14 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class DraftPublishedEvent extends PatchSetEvent {
static final String TYPE = "draft-published";
public Supplier<AccountAttribute> uploader;
public DraftPublishedEvent() {
super("draft-published");
public DraftPublishedEvent(Change change) {
super(TYPE, change);
}
}

View File

@ -22,30 +22,31 @@ public class EventTypes {
private static final Map<String, Class<?>> typesByString = new HashMap<>();
static {
registerClass(new ChangeAbandonedEvent());
registerClass(new ChangeMergedEvent());
registerClass(new ChangeRestoredEvent());
registerClass(new CommentAddedEvent());
registerClass(new CommitReceivedEvent());
registerClass(new DraftPublishedEvent());
registerClass(new HashtagsChangedEvent());
registerClass(new MergeFailedEvent());
registerClass(new RefUpdatedEvent());
registerClass(new RefReceivedEvent());
registerClass(new ReviewerAddedEvent());
registerClass(new PatchSetCreatedEvent());
registerClass(new TopicChangedEvent());
registerClass(new ProjectCreatedEvent());
register(ChangeAbandonedEvent.TYPE, ChangeAbandonedEvent.class);
register(ChangeMergedEvent.TYPE, ChangeMergedEvent.class);
register(ChangeRestoredEvent.TYPE, ChangeRestoredEvent.class);
register(CommentAddedEvent.TYPE, CommentAddedEvent.class);
register(CommitReceivedEvent.TYPE, CommitReceivedEvent.class);
register(DraftPublishedEvent.TYPE, DraftPublishedEvent.class);
register(HashtagsChangedEvent.TYPE, HashtagsChangedEvent.class);
register(MergeFailedEvent.TYPE, MergeFailedEvent.class);
register(RefUpdatedEvent.TYPE, RefUpdatedEvent.class);
register(RefReceivedEvent.TYPE, RefReceivedEvent.class);
register(ReviewerAddedEvent.TYPE, ReviewerAddedEvent.class);
register(PatchSetCreatedEvent.TYPE, PatchSetCreatedEvent.class);
register(TopicChangedEvent.TYPE, TopicChangedEvent.class);
register(ProjectCreatedEvent.TYPE, ProjectCreatedEvent.class);
}
/** Register an event.
/**
* Register an event type and associated class.
*
* @param event The event to register.
* registered.
* @param eventType The event type to register.
* @param eventClass The event class to register.
**/
public static void registerClass(Event event) {
String type = event.getType();
typesByString.put(type, event.getClass());
public static void register(String eventType,
Class<? extends Event> eventClass) {
typesByString.put(eventType, eventClass);
}
/** Get the class for an event type.

View File

@ -15,15 +15,17 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class HashtagsChangedEvent extends ChangeEvent {
static final String TYPE = "hashtags-changed";
public Supplier<AccountAttribute> editor;
public String[] added;
public String[] removed;
public String[] hashtags;
public HashtagsChangedEvent () {
super("hashtags-changed");
public HashtagsChangedEvent (Change change) {
super(TYPE, change);
}
}

View File

@ -15,13 +15,15 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class MergeFailedEvent extends PatchSetEvent {
static final String TYPE = "merge-failed";
public Supplier<AccountAttribute> submitter;
public String reason;
public MergeFailedEvent() {
super("merge-failed");
public MergeFailedEvent(Change change) {
super(TYPE, change);
}
}

View File

@ -15,12 +15,14 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class PatchSetCreatedEvent extends PatchSetEvent {
static final String TYPE = "patchset-created";
public Supplier<AccountAttribute> uploader;
public PatchSetCreatedEvent() {
super("patchset-created");
public PatchSetCreatedEvent(Change change) {
super(TYPE, change);
}
}

View File

@ -15,12 +15,13 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.PatchSetAttribute;
public class PatchSetEvent extends ChangeEvent {
public Supplier<PatchSetAttribute> patchSet;
protected PatchSetEvent(String type) {
super(type);
protected PatchSetEvent(String type, Change change) {
super(type, change);
}
}

View File

@ -17,11 +17,12 @@ package com.google.gerrit.server.events;
import com.google.gerrit.reviewdb.client.Project;
public class ProjectCreatedEvent extends ProjectEvent {
static final String TYPE = "project-created";
public String projectName;
public String headName;
public ProjectCreatedEvent() {
super("project-created");
super(TYPE);
}
@Override

View File

@ -19,12 +19,13 @@ import com.google.gerrit.server.IdentifiedUser;
import org.eclipse.jgit.transport.ReceiveCommand;
public class RefReceivedEvent extends RefEvent {
static final String TYPE = "ref-received";
public ReceiveCommand command;
public Project project;
public IdentifiedUser user;
public RefReceivedEvent() {
super("ref-received");
super(TYPE);
}
@Override

View File

@ -20,11 +20,12 @@ import com.google.gerrit.server.data.AccountAttribute;
import com.google.gerrit.server.data.RefUpdateAttribute;
public class RefUpdatedEvent extends RefEvent {
static final String TYPE = "ref-updated";
public Supplier<AccountAttribute> submitter;
public Supplier<RefUpdateAttribute> refUpdate;
public RefUpdatedEvent() {
super("ref-updated");
super(TYPE);
}
@Override

View File

@ -15,12 +15,14 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class ReviewerAddedEvent extends PatchSetEvent {
static final String TYPE = "reviewer-added";
public Supplier<AccountAttribute> reviewer;
public ReviewerAddedEvent() {
super("reviewer-added");
public ReviewerAddedEvent(Change change) {
super(TYPE, change);
}
}

View File

@ -15,13 +15,15 @@
package com.google.gerrit.server.events;
import com.google.common.base.Supplier;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.data.AccountAttribute;
public class TopicChangedEvent extends ChangeEvent {
static final String TYPE = "topic-changed";
public Supplier<AccountAttribute> changer;
public String oldTopic;
public TopicChangedEvent() {
super("topic-changed");
public TopicChangedEvent(Change change) {
super(TYPE, change);
}
}

View File

@ -20,12 +20,14 @@ import org.junit.Test;
public class EventTypesTest {
public static class TestEvent extends Event {
private static final String TYPE = "test-event";
public TestEvent() {
super("test-event");
super(TYPE);
}
}
public static class AnotherTestEvent extends Event {
private static final String TYPE = "another-test-event";
public AnotherTestEvent() {
super("another-test-event");
}
@ -33,10 +35,10 @@ public class EventTypesTest {
@Test
public void testEventTypeRegistration() {
EventTypes.registerClass(new TestEvent());
EventTypes.registerClass(new AnotherTestEvent());
assertThat(EventTypes.getClass("test-event")).isEqualTo(TestEvent.class);
assertThat(EventTypes.getClass("another-test-event"))
EventTypes.register(TestEvent.TYPE, TestEvent.class);
EventTypes.register(AnotherTestEvent.TYPE, AnotherTestEvent.class);
assertThat(EventTypes.getClass(TestEvent.TYPE)).isEqualTo(TestEvent.class);
assertThat(EventTypes.getClass(AnotherTestEvent.TYPE))
.isEqualTo(AnotherTestEvent.class);
}

View File

@ -80,15 +80,14 @@ final class StreamEvents extends BaseCommand {
/** Special event to notify clients they missed other events. */
private static final class DroppedOutputEvent extends Event {
private final static String TYPE = "dropped-output";
public DroppedOutputEvent() {
super("dropped-output");
super(TYPE);
}
}
private static final DroppedOutputEvent droppedOutputEvent = new DroppedOutputEvent();
static {
EventTypes.registerClass(droppedOutputEvent);
EventTypes.register(DroppedOutputEvent.TYPE, DroppedOutputEvent.class);
}
private final EventListener listener = new EventListener() {
@ -118,7 +117,7 @@ final class StreamEvents extends BaseCommand {
}
};
/** True if {@link #droppedOutputEvent} needs to be sent. */
/** True if {@link DroppedOutputEvent} needs to be sent. */
private volatile boolean dropped;
/** Lock to protect {@link #queue}, {@link #task}, {@link #done}. */
@ -229,7 +228,7 @@ final class StreamEvents extends BaseCommand {
}
if (dropped) {
write(droppedOutputEvent);
write(new DroppedOutputEvent());
dropped = false;
}

@ -1 +1 @@
Subproject commit e4aa03008f17d085a6d9d77459836ab2a9b3062b
Subproject commit 6a83ff45bbcbfdf200f31444400a01a863c4c857