Invoke more plugins through plugin context
Change-Id: I9986d6372724030ff360c49d578a0a8edb70c881 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user