GeneralPreferencesIT: Use ExtensionRegistry for DownloadScheme
DownloadScheme instances are managed in a DynamicMap, so add support for that in ExtensionRegistry, and modify the test to use it. Change-Id: I6111bbf3935fc223a63f0533e7b6c285f2fd2ae3
This commit is contained in:
@@ -15,8 +15,11 @@
|
||||
package com.google.gerrit.acceptance;
|
||||
|
||||
import com.google.gerrit.extensions.api.changes.ActionVisitor;
|
||||
import com.google.gerrit.extensions.config.DownloadScheme;
|
||||
import com.google.gerrit.extensions.events.ChangeIndexedListener;
|
||||
import com.google.gerrit.extensions.registration.DynamicMap;
|
||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
||||
import com.google.gerrit.extensions.registration.PrivateInternals_DynamicMapImpl;
|
||||
import com.google.gerrit.extensions.registration.RegistrationHandle;
|
||||
import com.google.gerrit.server.ExceptionHook;
|
||||
import com.google.gerrit.server.change.ChangeETagComputation;
|
||||
@@ -26,6 +29,7 @@ import com.google.gerrit.server.logging.PerformanceLogger;
|
||||
import com.google.gerrit.server.rules.SubmitRule;
|
||||
import com.google.gerrit.server.validators.ProjectCreationValidationListener;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.util.Providers;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -39,6 +43,7 @@ public class ExtensionRegistry {
|
||||
private final DynamicSet<ChangeMessageModifier> changeMessageModifiers;
|
||||
private final DynamicSet<ChangeETagComputation> changeETagComputations;
|
||||
private final DynamicSet<ActionVisitor> actionVisitors;
|
||||
private final DynamicMap<DownloadScheme> downloadSchemes;
|
||||
|
||||
@Inject
|
||||
ExtensionRegistry(
|
||||
@@ -50,7 +55,8 @@ public class ExtensionRegistry {
|
||||
DynamicSet<SubmitRule> submitRules,
|
||||
DynamicSet<ChangeMessageModifier> changeMessageModifiers,
|
||||
DynamicSet<ChangeETagComputation> changeETagComputations,
|
||||
DynamicSet<ActionVisitor> actionVisitors) {
|
||||
DynamicSet<ActionVisitor> actionVisitors,
|
||||
DynamicMap<DownloadScheme> downloadSchemes) {
|
||||
this.changeIndexedListeners = changeIndexedListeners;
|
||||
this.commitValidationListeners = commitValidationListeners;
|
||||
this.exceptionHooks = exceptionHooks;
|
||||
@@ -60,6 +66,7 @@ public class ExtensionRegistry {
|
||||
this.changeMessageModifiers = changeMessageModifiers;
|
||||
this.changeETagComputations = changeETagComputations;
|
||||
this.actionVisitors = actionVisitors;
|
||||
this.downloadSchemes = downloadSchemes;
|
||||
}
|
||||
|
||||
public Registration newRegistration() {
|
||||
@@ -105,12 +112,24 @@ public class ExtensionRegistry {
|
||||
return add(actionVisitors, actionVisitor);
|
||||
}
|
||||
|
||||
public Registration add(DownloadScheme downloadScheme, String exportName) {
|
||||
return add(downloadSchemes, downloadScheme, exportName);
|
||||
}
|
||||
|
||||
private <T> Registration add(DynamicSet<T> dynamicSet, T extension) {
|
||||
RegistrationHandle registrationHandle = dynamicSet.add("gerrit", extension);
|
||||
registrationHandles.add(registrationHandle);
|
||||
return this;
|
||||
}
|
||||
|
||||
private <T> Registration add(DynamicMap<T> dynamicMap, T extension, String exportName) {
|
||||
RegistrationHandle registrationHandle =
|
||||
((PrivateInternals_DynamicMapImpl<T>) dynamicMap)
|
||||
.put("myPlugin", exportName, Providers.of(extension));
|
||||
registrationHandles.add(registrationHandle);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
registrationHandles.forEach(h -> h.remove());
|
||||
|
||||
@@ -19,6 +19,8 @@ import static com.google.gerrit.acceptance.AssertUtil.assertPrefs;
|
||||
import static com.google.gerrit.testing.GerritJUnit.assertThrows;
|
||||
|
||||
import com.google.gerrit.acceptance.AbstractDaemonTest;
|
||||
import com.google.gerrit.acceptance.ExtensionRegistry;
|
||||
import com.google.gerrit.acceptance.ExtensionRegistry.Registration;
|
||||
import com.google.gerrit.acceptance.NoHttpd;
|
||||
import com.google.gerrit.acceptance.TestAccount;
|
||||
import com.google.gerrit.extensions.client.GeneralPreferencesInfo;
|
||||
@@ -31,19 +33,15 @@ import com.google.gerrit.extensions.client.GeneralPreferencesInfo.EmailStrategy;
|
||||
import com.google.gerrit.extensions.client.GeneralPreferencesInfo.TimeFormat;
|
||||
import com.google.gerrit.extensions.client.MenuItem;
|
||||
import com.google.gerrit.extensions.config.DownloadScheme;
|
||||
import com.google.gerrit.extensions.registration.DynamicMap;
|
||||
import com.google.gerrit.extensions.registration.PrivateInternals_DynamicMapImpl;
|
||||
import com.google.gerrit.extensions.registration.RegistrationHandle;
|
||||
import com.google.gerrit.extensions.restapi.BadRequestException;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.util.Providers;
|
||||
import java.util.ArrayList;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
@NoHttpd
|
||||
public class GeneralPreferencesIT extends AbstractDaemonTest {
|
||||
@Inject private DynamicMap<DownloadScheme> downloadSchemes;
|
||||
@Inject private ExtensionRegistry extensionRegistry;
|
||||
|
||||
private TestAccount user42;
|
||||
|
||||
@@ -201,10 +199,8 @@ public class GeneralPreferencesIT extends AbstractDaemonTest {
|
||||
@Test
|
||||
public void setDownloadScheme() throws Exception {
|
||||
String schemeName = "foo";
|
||||
RegistrationHandle registrationHandle =
|
||||
((PrivateInternals_DynamicMapImpl<DownloadScheme>) downloadSchemes)
|
||||
.put("myPlugin", schemeName, Providers.of(new TestDownloadScheme()));
|
||||
try {
|
||||
try (Registration registration =
|
||||
extensionRegistry.newRegistration().add(new TestDownloadScheme(), schemeName)) {
|
||||
GeneralPreferencesInfo i = GeneralPreferencesInfo.defaults();
|
||||
i.downloadScheme = schemeName;
|
||||
|
||||
@@ -213,8 +209,6 @@ public class GeneralPreferencesIT extends AbstractDaemonTest {
|
||||
|
||||
o = gApi.accounts().id(user42.id().toString()).getPreferences();
|
||||
assertThat(o.downloadScheme).isEqualTo(schemeName);
|
||||
} finally {
|
||||
registrationHandle.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user