EventPayloadIT: Use ExtensionRegistry for RevisionCreatedListener

Add the necessary support in ExtensionRegistry and update the
tests to use it.

Change-Id: Ib391b9804a12b718eca67eff02ac66f8b1d472c2
This commit is contained in:
David Pursehouse
2019-10-11 15:43:37 +09:00
parent ca2fdae43b
commit f9d17326fb
2 changed files with 36 additions and 29 deletions

View File

@@ -22,6 +22,7 @@ import com.google.gerrit.extensions.events.CommentAddedListener;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.events.GroupIndexedListener;
import com.google.gerrit.extensions.events.ProjectIndexedListener;
import com.google.gerrit.extensions.events.RevisionCreatedListener;
import com.google.gerrit.extensions.registration.DynamicMap;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.registration.PrivateInternals_DynamicMapImpl;
@@ -58,6 +59,7 @@ public class ExtensionRegistry {
private final DynamicSet<CommentAddedListener> commentAddedListeners;
private final DynamicSet<GitReferenceUpdatedListener> refUpdatedListeners;
private final DynamicSet<FileHistoryWebLink> fileHistoryWebLinks;
private final DynamicSet<RevisionCreatedListener> revisionCreatedListeners;
@Inject
ExtensionRegistry(
@@ -77,7 +79,8 @@ public class ExtensionRegistry {
DynamicSet<RefOperationValidationListener> refOperationValidationListeners,
DynamicSet<CommentAddedListener> commentAddedListeners,
DynamicSet<GitReferenceUpdatedListener> refUpdatedListeners,
DynamicSet<FileHistoryWebLink> fileHistoryWebLinks) {
DynamicSet<FileHistoryWebLink> fileHistoryWebLinks,
DynamicSet<RevisionCreatedListener> revisionCreatedListeners) {
this.accountIndexedListeners = accountIndexedListeners;
this.changeIndexedListeners = changeIndexedListeners;
this.groupIndexedListeners = groupIndexedListeners;
@@ -95,6 +98,7 @@ public class ExtensionRegistry {
this.commentAddedListeners = commentAddedListeners;
this.refUpdatedListeners = refUpdatedListeners;
this.fileHistoryWebLinks = fileHistoryWebLinks;
this.revisionCreatedListeners = revisionCreatedListeners;
}
public Registration newRegistration() {
@@ -177,6 +181,10 @@ public class ExtensionRegistry {
return add(fileHistoryWebLinks, fileHistoryWebLink);
}
public Registration add(RevisionCreatedListener revisionCreatedListener) {
return add(revisionCreatedListeners, revisionCreatedListener);
}
private <T> Registration add(DynamicSet<T> dynamicSet, T extension) {
return add(dynamicSet, extension, "gerrit");
}

View File

@@ -17,49 +17,48 @@ package com.google.gerrit.acceptance.server.event;
import static com.google.common.truth.Truth.assertThat;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.ExtensionRegistry;
import com.google.gerrit.acceptance.ExtensionRegistry.Registration;
import com.google.gerrit.acceptance.GerritConfig;
import com.google.gerrit.acceptance.NoHttpd;
import com.google.gerrit.extensions.events.RevisionCreatedListener;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.registration.RegistrationHandle;
import com.google.inject.Inject;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@NoHttpd
public class EventPayloadIT extends AbstractDaemonTest {
@Inject private DynamicSet<RevisionCreatedListener> revisionCreatedListeners;
private RegistrationHandle eventListenerRegistration;
private RevisionCreatedListener.Event lastEvent;
@Before
public void setUp() throws Exception {
eventListenerRegistration = revisionCreatedListeners.add("gerrit", event -> lastEvent = event);
}
@After
public void cleanup() {
eventListenerRegistration.remove();
}
@Inject private ExtensionRegistry extensionRegistry;
@Test
public void defaultOptions() throws Exception {
createChange();
assertThat(lastEvent.getChange().submittable).isNotNull();
assertThat(lastEvent.getRevision().files).isNotEmpty();
RevisionCreatedListener listener =
new RevisionCreatedListener() {
@Override
public void onRevisionCreated(Event event) {
assertThat(event.getChange().submittable).isNotNull();
assertThat(event.getRevision().files).isNotEmpty();
}
};
try (Registration registration = extensionRegistry.newRegistration().add(listener)) {
createChange();
}
}
@Test
@GerritConfig(name = "event.payload.listChangeOptions", value = "SKIP_MERGEABLE")
public void configuredOptions() throws Exception {
createChange();
assertThat(lastEvent.getChange().submittable).isNull();
assertThat(lastEvent.getChange().mergeable).isNull();
assertThat(lastEvent.getRevision().files).isNull();
assertThat(lastEvent.getChange().subject).isNotEmpty();
RevisionCreatedListener listener =
new RevisionCreatedListener() {
@Override
public void onRevisionCreated(Event event) {
assertThat(event.getChange().submittable).isNull();
assertThat(event.getChange().mergeable).isNull();
assertThat(event.getRevision().files).isNull();
assertThat(event.getChange().subject).isNotEmpty();
}
};
try (Registration registration = extensionRegistry.newRegistration().add(listener)) {
createChange();
}
}
}