Invoke more plugins through plugin context

Change-Id: I9986d6372724030ff360c49d578a0a8edb70c881
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2018-10-17 17:14:42 +02:00
parent 48c55620ef
commit b4de05ee72
17 changed files with 97 additions and 124 deletions

View File

@@ -39,6 +39,7 @@ import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.permissions.PermissionBackend.RefFilterOptions;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.permissions.ProjectPermission;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectState;
import com.google.gerrit.server.util.RequestContext;
@@ -208,7 +209,7 @@ class InProcessProtocol extends TestProtocol<Context> {
private static class Upload implements UploadPackFactory<Context> {
private final TransferConfig transferConfig;
private final DynamicSet<UploadPackInitializer> uploadPackInitializers;
private final PluginSetContext<UploadPackInitializer> uploadPackInitializers;
private final DynamicSet<PreUploadHook> preUploadHooks;
private final UploadValidators.Factory uploadValidatorsFactory;
private final ThreadLocalRequestContext threadContext;
@@ -218,7 +219,7 @@ class InProcessProtocol extends TestProtocol<Context> {
@Inject
Upload(
TransferConfig transferConfig,
DynamicSet<UploadPackInitializer> uploadPackInitializers,
PluginSetContext<UploadPackInitializer> uploadPackInitializers,
DynamicSet<PreUploadHook> preUploadHooks,
UploadValidators.Factory uploadValidatorsFactory,
ThreadLocalRequestContext threadContext,
@@ -267,9 +268,7 @@ class InProcessProtocol extends TestProtocol<Context> {
List<PreUploadHook> hooks = Lists.newArrayList(preUploadHooks);
hooks.add(uploadValidatorsFactory.create(projectState.getProject(), repo, "localhost-test"));
up.setPreUploadHook(PreUploadHookChain.newChain(hooks));
for (UploadPackInitializer initializer : uploadPackInitializers) {
initializer.init(req.project, up);
}
uploadPackInitializers.runEach(initializer -> initializer.init(req.project, up));
return up;
}
}
@@ -279,7 +278,7 @@ class InProcessProtocol extends TestProtocol<Context> {
private final ProjectCache projectCache;
private final AsyncReceiveCommits.Factory factory;
private final TransferConfig config;
private final DynamicSet<ReceivePackInitializer> receivePackInitializers;
private final PluginSetContext<ReceivePackInitializer> receivePackInitializers;
private final DynamicSet<PostReceiveHook> postReceiveHooks;
private final ThreadLocalRequestContext threadContext;
private final PermissionBackend permissionBackend;
@@ -290,7 +289,7 @@ class InProcessProtocol extends TestProtocol<Context> {
ProjectCache projectCache,
AsyncReceiveCommits.Factory factory,
TransferConfig config,
DynamicSet<ReceivePackInitializer> receivePackInitializers,
PluginSetContext<ReceivePackInitializer> receivePackInitializers,
DynamicSet<PostReceiveHook> postReceiveHooks,
ThreadLocalRequestContext threadContext,
PermissionBackend permissionBackend) {
@@ -339,9 +338,8 @@ class InProcessProtocol extends TestProtocol<Context> {
rp.setTimeout(config.getTimeout());
rp.setMaxObjectSizeLimit(config.getMaxObjectSizeLimit());
for (ReceivePackInitializer initializer : receivePackInitializers) {
initializer.init(projectState.getNameKey(), rp);
}
receivePackInitializers.runEach(
initializer -> initializer.init(projectState.getNameKey(), rp));
rp.setPostReceiveHook(PostReceiveHookChain.newChain(Lists.newArrayList(postReceiveHooks)));
return rp;

View File

@@ -17,7 +17,6 @@ package com.google.gerrit.elasticsearch;
import com.google.common.base.Strings;
import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.index.Index;
import com.google.gerrit.index.IndexDefinition;
import com.google.gerrit.index.Schema;
@@ -26,6 +25,7 @@ import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.index.GerritIndexStatus;
import com.google.gerrit.server.index.OnlineUpgradeListener;
import com.google.gerrit.server.index.VersionManager;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
@@ -45,7 +45,7 @@ public class ElasticIndexVersionManager extends VersionManager {
ElasticIndexVersionManager(
@GerritServerConfig Config cfg,
SitePaths sitePaths,
DynamicSet<OnlineUpgradeListener> listeners,
PluginSetContext<OnlineUpgradeListener> listeners,
Collection<IndexDefinition<?, ?, ?>> defs,
ElasticIndexVersionDiscovery versionDiscovery) {
super(sitePaths, listeners, defs, VersionManager.getOnlineUpgrade(cfg));

View File

@@ -38,6 +38,7 @@ import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.permissions.PermissionBackend.RefFilterOptions;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.permissions.ProjectPermission;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectState;
import com.google.gerrit.server.util.time.TimeUtil;
@@ -285,14 +286,14 @@ public class GitOverHttpServlet extends GitServlet {
private final TransferConfig config;
private final DynamicSet<PreUploadHook> preUploadHooks;
private final DynamicSet<PostUploadHook> postUploadHooks;
private final DynamicSet<UploadPackInitializer> uploadPackInitializers;
private final PluginSetContext<UploadPackInitializer> uploadPackInitializers;
@Inject
UploadFactory(
TransferConfig tc,
DynamicSet<PreUploadHook> preUploadHooks,
DynamicSet<PostUploadHook> postUploadHooks,
DynamicSet<UploadPackInitializer> uploadPackInitializers) {
PluginSetContext<UploadPackInitializer> uploadPackInitializers) {
this.config = tc;
this.preUploadHooks = preUploadHooks;
this.postUploadHooks = postUploadHooks;
@@ -314,9 +315,7 @@ public class GitOverHttpServlet extends GitServlet {
}
}
ProjectState state = (ProjectState) req.getAttribute(ATT_STATE);
for (UploadPackInitializer initializer : uploadPackInitializers) {
initializer.init(state.getNameKey(), up);
}
uploadPackInitializers.runEach(initializer -> initializer.init(state.getNameKey(), up));
return up;
}
}

View File

@@ -14,10 +14,11 @@
package com.google.gerrit.httpd;
import com.google.gerrit.extensions.registration.DynamicItem;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.plugincontext.PluginItemContext;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
@@ -34,8 +35,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UniversalWebLoginFilter implements Filter {
private final DynamicItem<WebSession> session;
private final DynamicSet<WebLoginListener> webLoginListeners;
private final PluginItemContext<WebSession> session;
private final PluginSetContext<WebLoginListener> webLoginListeners;
private final Provider<CurrentUser> userProvider;
public static ServletModule module() {
@@ -52,8 +53,8 @@ public class UniversalWebLoginFilter implements Filter {
@Inject
public UniversalWebLoginFilter(
DynamicItem<WebSession> session,
DynamicSet<WebLoginListener> webLoginListeners,
PluginItemContext<WebSession> session,
PluginSetContext<WebLoginListener> webLoginListeners,
Provider<CurrentUser> userProvider) {
this.session = session;
this.webLoginListeners = webLoginListeners;
@@ -75,20 +76,18 @@ public class UniversalWebLoginFilter implements Filter {
Optional<IdentifiedUser> loggedInUserAfter = loggedInUser();
if (!loggedInUserBefore.isPresent() && loggedInUserAfter.isPresent()) {
for (WebLoginListener loginListener : webLoginListeners) {
loginListener.onLogin(loggedInUserAfter.get(), httpRequest, wrappedResponse);
}
webLoginListeners.runEach(
l -> l.onLogin(loggedInUserAfter.get(), httpRequest, wrappedResponse));
} else if (loggedInUserBefore.isPresent() && !loggedInUserAfter.isPresent()) {
for (WebLoginListener loginListener : webLoginListeners) {
loginListener.onLogout(loggedInUserBefore.get(), httpRequest, wrappedResponse);
}
webLoginListeners.runEach(
l -> l.onLogout(loggedInUserBefore.get(), httpRequest, wrappedResponse));
}
wrappedResponse.play();
}
private Optional<IdentifiedUser> loggedInUser() {
return session.get().isSignedIn()
return session.call(s -> s.isSignedIn())
? Optional.of(userProvider.get().asIdentifiedUser())
: Optional.empty();
}

View File

@@ -16,7 +16,6 @@ package com.google.gerrit.lucene;
import com.google.common.flogger.FluentLogger;
import com.google.common.primitives.Ints;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.index.Index;
import com.google.gerrit.index.IndexDefinition;
import com.google.gerrit.index.Schema;
@@ -25,6 +24,7 @@ import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.index.GerritIndexStatus;
import com.google.gerrit.server.index.OnlineUpgradeListener;
import com.google.gerrit.server.index.VersionManager;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
@@ -47,7 +47,7 @@ public class LuceneVersionManager extends VersionManager {
LuceneVersionManager(
@GerritServerConfig Config cfg,
SitePaths sitePaths,
DynamicSet<OnlineUpgradeListener> listeners,
PluginSetContext<OnlineUpgradeListener> listeners,
Collection<IndexDefinition<?, ?, ?>> defs) {
super(sitePaths, listeners, defs, VersionManager.getOnlineUpgrade(cfg));
}

View File

@@ -16,7 +16,7 @@ package com.google.gerrit.server.auth;
import static java.util.Objects.requireNonNull;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.ArrayList;
@@ -25,10 +25,10 @@ import java.util.List;
/** Universal implementation of the AuthBackend that works with the injected set of AuthBackends. */
@Singleton
public final class UniversalAuthBackend implements AuthBackend {
private final DynamicSet<AuthBackend> authBackends;
private final PluginSetContext<AuthBackend> authBackends;
@Inject
UniversalAuthBackend(DynamicSet<AuthBackend> authBackends) {
UniversalAuthBackend(PluginSetContext<AuthBackend> authBackends) {
this.authBackends = authBackends;
}
@@ -36,7 +36,8 @@ public final class UniversalAuthBackend implements AuthBackend {
public AuthUser authenticate(AuthRequest request) throws AuthException {
List<AuthUser> authUsers = new ArrayList<>();
List<AuthException> authExs = new ArrayList<>();
for (AuthBackend backend : authBackends) {
authBackends.runEach(
backend -> {
try {
authUsers.add(requireNonNull(backend.authenticate(request)));
} catch (MissingCredentialsException ex) {
@@ -44,7 +45,7 @@ public final class UniversalAuthBackend implements AuthBackend {
} catch (AuthException ex) {
authExs.add(ex);
}
}
});
// Handle the valid responses
if (authUsers.size() == 1) {

View File

@@ -17,8 +17,8 @@ package com.google.gerrit.server.cache;
import com.google.common.base.Strings;
import com.google.common.cache.RemovalListener;
import com.google.common.cache.RemovalNotification;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.registration.PluginName;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
@@ -35,13 +35,13 @@ public class ForwardingRemovalListener<K, V> implements RemovalListener<K, V> {
ForwardingRemovalListener create(String cacheName);
}
private final DynamicSet<CacheRemovalListener> listeners;
private final PluginSetContext<CacheRemovalListener> listeners;
private final String cacheName;
private String pluginName = PluginName.GERRIT;
@Inject
ForwardingRemovalListener(
DynamicSet<CacheRemovalListener> listeners, @Assisted String cacheName) {
PluginSetContext<CacheRemovalListener> listeners, @Assisted String cacheName) {
this.listeners = listeners;
this.cacheName = cacheName;
}
@@ -56,8 +56,6 @@ public class ForwardingRemovalListener<K, V> implements RemovalListener<K, V> {
@Override
@SuppressWarnings("unchecked")
public void onRemoval(RemovalNotification<K, V> notification) {
for (CacheRemovalListener<K, V> l : listeners) {
l.onRemoval(pluginName, cacheName, notification);
}
listeners.runEach(l -> l.onRemoval(pluginName, cacheName, notification));
}
}

View File

@@ -17,9 +17,9 @@ package com.google.gerrit.server.config;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.config.ConfigUpdatedEvent.ConfigUpdateEntry;
import com.google.gerrit.server.config.ConfigUpdatedEvent.UpdateResult;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -29,11 +29,12 @@ public class GerritServerConfigReloader {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final GerritServerConfigProvider configProvider;
private final DynamicSet<GerritConfigListener> configListeners;
private final PluginSetContext<GerritConfigListener> configListeners;
@Inject
GerritServerConfigReloader(
GerritServerConfigProvider configProvider, DynamicSet<GerritConfigListener> configListeners) {
GerritServerConfigProvider configProvider,
PluginSetContext<GerritConfigListener> configListeners) {
this.configProvider = configProvider;
this.configListeners = configListeners;
}
@@ -53,9 +54,7 @@ public class GerritServerConfigReloader {
public Multimap<UpdateResult, ConfigUpdateEntry> fireUpdatedConfigEvent(
ConfigUpdatedEvent event) {
Multimap<UpdateResult, ConfigUpdateEntry> updates = ArrayListMultimap.create();
for (GerritConfigListener configListener : configListeners) {
updates.putAll(configListener.configUpdated(event));
}
configListeners.runEach(l -> updates.putAll(l.configUpdated(event)));
return updates;
}
}

View File

@@ -15,16 +15,16 @@
package com.google.gerrit.server.extensions.events;
import com.google.gerrit.extensions.events.PluginEventListener;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class PluginEvent {
private final DynamicSet<PluginEventListener> listeners;
private final PluginSetContext<PluginEventListener> listeners;
@Inject
PluginEvent(DynamicSet<PluginEventListener> listeners) {
PluginEvent(PluginSetContext<PluginEventListener> listeners) {
this.listeners = listeners;
}
@@ -33,9 +33,7 @@ public class PluginEvent {
return;
}
Event e = new Event(pluginName, type, data);
for (PluginEventListener l : listeners) {
l.onPluginEvent(e);
}
listeners.runEach(l -> l.onPluginEvent(e));
}
private static class Event extends AbstractNoNotifyEvent implements PluginEventListener.Event {

View File

@@ -18,10 +18,10 @@ import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.GarbageCollectionResult;
import com.google.gerrit.extensions.events.GarbageCollectorListener;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.GcConfig;
import com.google.gerrit.server.extensions.events.AbstractNoNotifyEvent;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import java.io.PrintWriter;
import java.util.List;
@@ -43,7 +43,7 @@ public class GarbageCollection {
private final GitRepositoryManager repoManager;
private final GarbageCollectionQueue gcQueue;
private final GcConfig gcConfig;
private final DynamicSet<GarbageCollectorListener> listeners;
private final PluginSetContext<GarbageCollectorListener> listeners;
public interface Factory {
GarbageCollection create();
@@ -54,7 +54,7 @@ public class GarbageCollection {
GitRepositoryManager repoManager,
GarbageCollectionQueue gcQueue,
GcConfig config,
DynamicSet<GarbageCollectorListener> listeners) {
PluginSetContext<GarbageCollectorListener> listeners) {
this.repoManager = repoManager;
this.gcQueue = gcQueue;
this.gcConfig = config;
@@ -113,13 +113,7 @@ public class GarbageCollection {
return;
}
Event event = new Event(p, statistics);
for (GarbageCollectorListener l : listeners) {
try {
l.onGarbageCollected(event);
} catch (RuntimeException e) {
logger.atWarning().withCause(e).log("Failure in GarbageCollectorListener");
}
}
listeners.runEach(l -> l.onGarbageCollected(event));
}
private static void logGcInfo(Project.NameKey projectName, String msg) {

View File

@@ -14,7 +14,7 @@
package com.google.gerrit.server.git.receive;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import java.util.Collection;
import org.eclipse.jgit.transport.PostReceiveHook;
@@ -22,17 +22,15 @@ import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.transport.ReceivePack;
class LazyPostReceiveHookChain implements PostReceiveHook {
private final DynamicSet<PostReceiveHook> hooks;
private final PluginSetContext<PostReceiveHook> hooks;
@Inject
LazyPostReceiveHookChain(DynamicSet<PostReceiveHook> hooks) {
LazyPostReceiveHookChain(PluginSetContext<PostReceiveHook> hooks) {
this.hooks = hooks;
}
@Override
public void onPostReceive(ReceivePack rp, Collection<ReceiveCommand> commands) {
for (PostReceiveHook h : hooks) {
h.onPostReceive(rp, commands);
}
hooks.runEach(h -> h.onPostReceive(rp, commands));
}
}

View File

@@ -18,11 +18,11 @@ import static java.util.Objects.requireNonNull;
import com.google.common.collect.Lists;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.index.Index;
import com.google.gerrit.index.IndexCollection;
import com.google.gerrit.index.IndexDefinition;
import com.google.gerrit.index.SiteIndexer;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -35,7 +35,7 @@ public class OnlineReindexer<K, V, I extends Index<K, V>> {
private final SiteIndexer<K, V, I> batchIndexer;
private final int oldVersion;
private final int newVersion;
private final DynamicSet<OnlineUpgradeListener> listeners;
private final PluginSetContext<OnlineUpgradeListener> listeners;
private I index;
private final AtomicBoolean running = new AtomicBoolean();
@@ -43,7 +43,7 @@ public class OnlineReindexer<K, V, I extends Index<K, V>> {
IndexDefinition<K, V, I> def,
int oldVersion,
int newVersion,
DynamicSet<OnlineUpgradeListener> listeners) {
PluginSetContext<OnlineUpgradeListener> listeners) {
this.name = def.getName();
this.indexes = def.getIndexCollection();
this.batchIndexer = def.getSiteIndexer();
@@ -68,9 +68,7 @@ public class OnlineReindexer<K, V, I extends Index<K, V>> {
} finally {
running.set(false);
if (!ok) {
for (OnlineUpgradeListener listener : listeners) {
listener.onFailure(name, oldVersion, newVersion);
}
listeners.runEach(listener -> listener.onFailure(name, oldVersion, newVersion));
}
}
}
@@ -94,9 +92,7 @@ public class OnlineReindexer<K, V, I extends Index<K, V>> {
}
private void reindex() throws IOException {
for (OnlineUpgradeListener listener : listeners) {
listener.onStart(name, oldVersion, newVersion);
}
listeners.runEach(listener -> listener.onStart(name, oldVersion, newVersion));
index =
requireNonNull(
indexes.getWriteIndex(newVersion),
@@ -118,9 +114,7 @@ public class OnlineReindexer<K, V, I extends Index<K, V>> {
}
logger.atInfo().log("Reindex %s to version %s complete", name, version(index));
activateIndex();
for (OnlineUpgradeListener listener : listeners) {
listener.onSuccess(name, oldVersion, newVersion);
}
listeners.runEach(listener -> listener.onSuccess(name, oldVersion, newVersion));
}
public void activateIndex() {

View File

@@ -21,13 +21,13 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.index.Index;
import com.google.gerrit.index.IndexCollection;
import com.google.gerrit.index.IndexDefinition;
import com.google.gerrit.index.IndexDefinition.IndexFactory;
import com.google.gerrit.index.Schema;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.ProvisionException;
import java.io.IOException;
import java.util.Collection;
@@ -61,7 +61,7 @@ public abstract class VersionManager implements LifecycleListener {
protected final String runReindexMsg;
protected final SitePaths sitePaths;
private final DynamicSet<OnlineUpgradeListener> listeners;
private final PluginSetContext<OnlineUpgradeListener> listeners;
// The following fields must be accessed synchronized on this.
protected final Map<String, IndexDefinition<?, ?, ?>> defs;
@@ -69,7 +69,7 @@ public abstract class VersionManager implements LifecycleListener {
protected VersionManager(
SitePaths sitePaths,
DynamicSet<OnlineUpgradeListener> listeners,
PluginSetContext<OnlineUpgradeListener> listeners,
Collection<IndexDefinition<?, ?, ?>> defs,
boolean onlineUpgrade) {
this.sitePaths = sitePaths;

View File

@@ -45,7 +45,6 @@ import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.gerrit.common.FormatUtil;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.git.LockFailureException;
import com.google.gerrit.git.RefUpdateUtil;
import com.google.gerrit.reviewdb.client.Change;
@@ -72,6 +71,7 @@ import com.google.gerrit.server.notedb.PrimaryStorageMigrator;
import com.google.gerrit.server.notedb.PrimaryStorageMigrator.NoNoteDbStateException;
import com.google.gerrit.server.notedb.RepoSequence;
import com.google.gerrit.server.notedb.rebuild.ChangeRebuilder.NoPatchSetsException;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.update.ChainedReceiveCommands;
import com.google.gerrit.server.util.ManualRequestContext;
@@ -150,7 +150,7 @@ public class NoteDbMigrator implements AutoCloseable {
private final WorkQueue workQueue;
private final MutableNotesMigration globalNotesMigration;
private final PrimaryStorageMigrator primaryStorageMigrator;
private final DynamicSet<NotesMigrationStateListener> listeners;
private final PluginSetContext<NotesMigrationStateListener> listeners;
private int threads;
private ImmutableList<Project.NameKey> projects = ImmutableList.of();
@@ -179,7 +179,7 @@ public class NoteDbMigrator implements AutoCloseable {
WorkQueue workQueue,
MutableNotesMigration globalNotesMigration,
PrimaryStorageMigrator primaryStorageMigrator,
DynamicSet<NotesMigrationStateListener> listeners) {
PluginSetContext<NotesMigrationStateListener> listeners) {
// Reload gerrit.config/notedb.config on each migrator invocation, in case a previous
// migration in the same process modified the on-disk contents. This ensures the defaults for
// trial/autoMigrate get set correctly below.
@@ -390,7 +390,7 @@ public class NoteDbMigrator implements AutoCloseable {
private final ChangeRebuilderImpl rebuilder;
private final MutableNotesMigration globalNotesMigration;
private final PrimaryStorageMigrator primaryStorageMigrator;
private final DynamicSet<NotesMigrationStateListener> listeners;
private final PluginSetContext<NotesMigrationStateListener> listeners;
private final ListeningExecutorService executor;
private final ImmutableList<Project.NameKey> projects;
@@ -416,7 +416,7 @@ public class NoteDbMigrator implements AutoCloseable {
ChangeRebuilderImpl rebuilder,
MutableNotesMigration globalNotesMigration,
PrimaryStorageMigrator primaryStorageMigrator,
DynamicSet<NotesMigrationStateListener> listeners,
PluginSetContext<NotesMigrationStateListener> listeners,
ListeningExecutorService executor,
ImmutableList<Project.NameKey> projects,
ImmutableList<Change.Id> changes,
@@ -737,9 +737,7 @@ public class NoteDbMigrator implements AutoCloseable {
private void preStateChange(NotesMigrationState oldState, NotesMigrationState newState)
throws IOException {
for (NotesMigrationStateListener listener : listeners) {
listener.preStateChange(oldState, newState);
}
listeners.runEach(l -> l.preStateChange(oldState, newState), IOException.class);
}
private void setControlFlags() throws MigrationException {

View File

@@ -15,8 +15,8 @@
package com.google.gerrit.server.plugins;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.registration.PluginName;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.nio.file.Path;
@@ -28,10 +28,10 @@ import org.eclipse.jgit.internal.storage.file.FileSnapshot;
class UniversalServerPluginProvider implements ServerPluginProvider {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<ServerPluginProvider> serverPluginProviders;
private final PluginSetContext<ServerPluginProvider> serverPluginProviders;
@Inject
UniversalServerPluginProvider(DynamicSet<ServerPluginProvider> sf) {
UniversalServerPluginProvider(PluginSetContext<ServerPluginProvider> sf) {
this.serverPluginProviders = sf;
}
@@ -80,7 +80,8 @@ class UniversalServerPluginProvider implements ServerPluginProvider {
private List<ServerPluginProvider> providersForHandlingPlugin(Path srcPath) {
List<ServerPluginProvider> providers = new ArrayList<>();
for (ServerPluginProvider serverPluginProvider : serverPluginProviders) {
serverPluginProviders.runEach(
serverPluginProvider -> {
boolean handles = serverPluginProvider.handles(srcPath);
logger.atFine().log(
"File %s handled by %s ? => %s",
@@ -88,7 +89,7 @@ class UniversalServerPluginProvider implements ServerPluginProvider {
if (handles) {
providers.add(serverPluginProvider);
}
}
});
return providers;
}
}

View File

@@ -27,7 +27,6 @@ import com.google.gerrit.common.errors.NoSuchGroupException;
import com.google.gerrit.extensions.annotations.RequiresCapability;
import com.google.gerrit.extensions.api.accounts.AccountInput;
import com.google.gerrit.extensions.common.AccountInfo;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.extensions.restapi.IdString;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -51,6 +50,7 @@ import com.google.gerrit.server.group.db.GroupsUpdate;
import com.google.gerrit.server.group.db.InternalGroupUpdate;
import com.google.gerrit.server.mail.send.OutgoingEmailValidator;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.gerrit.server.ssh.SshKeyCache;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
@@ -73,7 +73,7 @@ public class CreateAccount
private final SshKeyCache sshKeyCache;
private final Provider<AccountsUpdate> accountsUpdateProvider;
private final AccountLoader.Factory infoLoader;
private final DynamicSet<AccountExternalIdCreator> externalIdCreators;
private final PluginSetContext<AccountExternalIdCreator> externalIdCreators;
private final Provider<GroupsUpdate> groupsUpdate;
private final OutgoingEmailValidator validator;
@@ -85,7 +85,7 @@ public class CreateAccount
SshKeyCache sshKeyCache,
@UserInitiated Provider<AccountsUpdate> accountsUpdateProvider,
AccountLoader.Factory infoLoader,
DynamicSet<AccountExternalIdCreator> externalIdCreators,
PluginSetContext<AccountExternalIdCreator> externalIdCreators,
@UserInitiated Provider<GroupsUpdate> groupsUpdate,
OutgoingEmailValidator validator) {
this.seq = seq;
@@ -131,9 +131,7 @@ public class CreateAccount
}
extIds.add(ExternalId.createUsername(username, accountId, input.httpPassword));
for (AccountExternalIdCreator c : externalIdCreators) {
extIds.addAll(c.create(accountId, username, input.email));
}
externalIdCreators.runEach(c -> extIds.addAll(c.create(accountId, username, input.email)));
try {
accountsUpdateProvider

View File

@@ -14,10 +14,10 @@
package com.google.gerrit.server.restapi.config;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.extensions.webui.TopMenu;
import com.google.gerrit.server.config.ConfigResource;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.ArrayList;
@@ -25,19 +25,17 @@ import java.util.List;
@Singleton
class ListTopMenus implements RestReadView<ConfigResource> {
private final DynamicSet<TopMenu> extensions;
private final PluginSetContext<TopMenu> extensions;
@Inject
ListTopMenus(DynamicSet<TopMenu> extensions) {
ListTopMenus(PluginSetContext<TopMenu> extensions) {
this.extensions = extensions;
}
@Override
public List<TopMenu.MenuEntry> apply(ConfigResource resource) {
List<TopMenu.MenuEntry> entries = new ArrayList<>();
for (TopMenu extension : extensions) {
entries.addAll(extension.getEntries());
}
extensions.runEach(extension -> entries.addAll(extension.getEntries()));
return entries;
}
}