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:
David Pursehouse
2019-10-10 14:54:35 +09:00
parent 64bf6942a8
commit 05e51038ec
2 changed files with 25 additions and 12 deletions

View File

@@ -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());

View File

@@ -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();
}
}