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.PermissionBackend.RefFilterOptions;
|
||||||
import com.google.gerrit.server.permissions.PermissionBackendException;
|
import com.google.gerrit.server.permissions.PermissionBackendException;
|
||||||
import com.google.gerrit.server.permissions.ProjectPermission;
|
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.ProjectCache;
|
||||||
import com.google.gerrit.server.project.ProjectState;
|
import com.google.gerrit.server.project.ProjectState;
|
||||||
import com.google.gerrit.server.util.RequestContext;
|
import com.google.gerrit.server.util.RequestContext;
|
||||||
@@ -208,7 +209,7 @@ class InProcessProtocol extends TestProtocol<Context> {
|
|||||||
|
|
||||||
private static class Upload implements UploadPackFactory<Context> {
|
private static class Upload implements UploadPackFactory<Context> {
|
||||||
private final TransferConfig transferConfig;
|
private final TransferConfig transferConfig;
|
||||||
private final DynamicSet<UploadPackInitializer> uploadPackInitializers;
|
private final PluginSetContext<UploadPackInitializer> uploadPackInitializers;
|
||||||
private final DynamicSet<PreUploadHook> preUploadHooks;
|
private final DynamicSet<PreUploadHook> preUploadHooks;
|
||||||
private final UploadValidators.Factory uploadValidatorsFactory;
|
private final UploadValidators.Factory uploadValidatorsFactory;
|
||||||
private final ThreadLocalRequestContext threadContext;
|
private final ThreadLocalRequestContext threadContext;
|
||||||
@@ -218,7 +219,7 @@ class InProcessProtocol extends TestProtocol<Context> {
|
|||||||
@Inject
|
@Inject
|
||||||
Upload(
|
Upload(
|
||||||
TransferConfig transferConfig,
|
TransferConfig transferConfig,
|
||||||
DynamicSet<UploadPackInitializer> uploadPackInitializers,
|
PluginSetContext<UploadPackInitializer> uploadPackInitializers,
|
||||||
DynamicSet<PreUploadHook> preUploadHooks,
|
DynamicSet<PreUploadHook> preUploadHooks,
|
||||||
UploadValidators.Factory uploadValidatorsFactory,
|
UploadValidators.Factory uploadValidatorsFactory,
|
||||||
ThreadLocalRequestContext threadContext,
|
ThreadLocalRequestContext threadContext,
|
||||||
@@ -267,9 +268,7 @@ class InProcessProtocol extends TestProtocol<Context> {
|
|||||||
List<PreUploadHook> hooks = Lists.newArrayList(preUploadHooks);
|
List<PreUploadHook> hooks = Lists.newArrayList(preUploadHooks);
|
||||||
hooks.add(uploadValidatorsFactory.create(projectState.getProject(), repo, "localhost-test"));
|
hooks.add(uploadValidatorsFactory.create(projectState.getProject(), repo, "localhost-test"));
|
||||||
up.setPreUploadHook(PreUploadHookChain.newChain(hooks));
|
up.setPreUploadHook(PreUploadHookChain.newChain(hooks));
|
||||||
for (UploadPackInitializer initializer : uploadPackInitializers) {
|
uploadPackInitializers.runEach(initializer -> initializer.init(req.project, up));
|
||||||
initializer.init(req.project, up);
|
|
||||||
}
|
|
||||||
return up;
|
return up;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -279,7 +278,7 @@ class InProcessProtocol extends TestProtocol<Context> {
|
|||||||
private final ProjectCache projectCache;
|
private final ProjectCache projectCache;
|
||||||
private final AsyncReceiveCommits.Factory factory;
|
private final AsyncReceiveCommits.Factory factory;
|
||||||
private final TransferConfig config;
|
private final TransferConfig config;
|
||||||
private final DynamicSet<ReceivePackInitializer> receivePackInitializers;
|
private final PluginSetContext<ReceivePackInitializer> receivePackInitializers;
|
||||||
private final DynamicSet<PostReceiveHook> postReceiveHooks;
|
private final DynamicSet<PostReceiveHook> postReceiveHooks;
|
||||||
private final ThreadLocalRequestContext threadContext;
|
private final ThreadLocalRequestContext threadContext;
|
||||||
private final PermissionBackend permissionBackend;
|
private final PermissionBackend permissionBackend;
|
||||||
@@ -290,7 +289,7 @@ class InProcessProtocol extends TestProtocol<Context> {
|
|||||||
ProjectCache projectCache,
|
ProjectCache projectCache,
|
||||||
AsyncReceiveCommits.Factory factory,
|
AsyncReceiveCommits.Factory factory,
|
||||||
TransferConfig config,
|
TransferConfig config,
|
||||||
DynamicSet<ReceivePackInitializer> receivePackInitializers,
|
PluginSetContext<ReceivePackInitializer> receivePackInitializers,
|
||||||
DynamicSet<PostReceiveHook> postReceiveHooks,
|
DynamicSet<PostReceiveHook> postReceiveHooks,
|
||||||
ThreadLocalRequestContext threadContext,
|
ThreadLocalRequestContext threadContext,
|
||||||
PermissionBackend permissionBackend) {
|
PermissionBackend permissionBackend) {
|
||||||
@@ -339,9 +338,8 @@ class InProcessProtocol extends TestProtocol<Context> {
|
|||||||
rp.setTimeout(config.getTimeout());
|
rp.setTimeout(config.getTimeout());
|
||||||
rp.setMaxObjectSizeLimit(config.getMaxObjectSizeLimit());
|
rp.setMaxObjectSizeLimit(config.getMaxObjectSizeLimit());
|
||||||
|
|
||||||
for (ReceivePackInitializer initializer : receivePackInitializers) {
|
receivePackInitializers.runEach(
|
||||||
initializer.init(projectState.getNameKey(), rp);
|
initializer -> initializer.init(projectState.getNameKey(), rp));
|
||||||
}
|
|
||||||
|
|
||||||
rp.setPostReceiveHook(PostReceiveHookChain.newChain(Lists.newArrayList(postReceiveHooks)));
|
rp.setPostReceiveHook(PostReceiveHookChain.newChain(Lists.newArrayList(postReceiveHooks)));
|
||||||
return rp;
|
return rp;
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ package com.google.gerrit.elasticsearch;
|
|||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.flogger.FluentLogger;
|
import com.google.common.flogger.FluentLogger;
|
||||||
import com.google.common.primitives.Ints;
|
import com.google.common.primitives.Ints;
|
||||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
|
||||||
import com.google.gerrit.index.Index;
|
import com.google.gerrit.index.Index;
|
||||||
import com.google.gerrit.index.IndexDefinition;
|
import com.google.gerrit.index.IndexDefinition;
|
||||||
import com.google.gerrit.index.Schema;
|
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.GerritIndexStatus;
|
||||||
import com.google.gerrit.server.index.OnlineUpgradeListener;
|
import com.google.gerrit.server.index.OnlineUpgradeListener;
|
||||||
import com.google.gerrit.server.index.VersionManager;
|
import com.google.gerrit.server.index.VersionManager;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -45,7 +45,7 @@ public class ElasticIndexVersionManager extends VersionManager {
|
|||||||
ElasticIndexVersionManager(
|
ElasticIndexVersionManager(
|
||||||
@GerritServerConfig Config cfg,
|
@GerritServerConfig Config cfg,
|
||||||
SitePaths sitePaths,
|
SitePaths sitePaths,
|
||||||
DynamicSet<OnlineUpgradeListener> listeners,
|
PluginSetContext<OnlineUpgradeListener> listeners,
|
||||||
Collection<IndexDefinition<?, ?, ?>> defs,
|
Collection<IndexDefinition<?, ?, ?>> defs,
|
||||||
ElasticIndexVersionDiscovery versionDiscovery) {
|
ElasticIndexVersionDiscovery versionDiscovery) {
|
||||||
super(sitePaths, listeners, defs, VersionManager.getOnlineUpgrade(cfg));
|
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.PermissionBackend.RefFilterOptions;
|
||||||
import com.google.gerrit.server.permissions.PermissionBackendException;
|
import com.google.gerrit.server.permissions.PermissionBackendException;
|
||||||
import com.google.gerrit.server.permissions.ProjectPermission;
|
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.ProjectCache;
|
||||||
import com.google.gerrit.server.project.ProjectState;
|
import com.google.gerrit.server.project.ProjectState;
|
||||||
import com.google.gerrit.server.util.time.TimeUtil;
|
import com.google.gerrit.server.util.time.TimeUtil;
|
||||||
@@ -285,14 +286,14 @@ public class GitOverHttpServlet extends GitServlet {
|
|||||||
private final TransferConfig config;
|
private final TransferConfig config;
|
||||||
private final DynamicSet<PreUploadHook> preUploadHooks;
|
private final DynamicSet<PreUploadHook> preUploadHooks;
|
||||||
private final DynamicSet<PostUploadHook> postUploadHooks;
|
private final DynamicSet<PostUploadHook> postUploadHooks;
|
||||||
private final DynamicSet<UploadPackInitializer> uploadPackInitializers;
|
private final PluginSetContext<UploadPackInitializer> uploadPackInitializers;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UploadFactory(
|
UploadFactory(
|
||||||
TransferConfig tc,
|
TransferConfig tc,
|
||||||
DynamicSet<PreUploadHook> preUploadHooks,
|
DynamicSet<PreUploadHook> preUploadHooks,
|
||||||
DynamicSet<PostUploadHook> postUploadHooks,
|
DynamicSet<PostUploadHook> postUploadHooks,
|
||||||
DynamicSet<UploadPackInitializer> uploadPackInitializers) {
|
PluginSetContext<UploadPackInitializer> uploadPackInitializers) {
|
||||||
this.config = tc;
|
this.config = tc;
|
||||||
this.preUploadHooks = preUploadHooks;
|
this.preUploadHooks = preUploadHooks;
|
||||||
this.postUploadHooks = postUploadHooks;
|
this.postUploadHooks = postUploadHooks;
|
||||||
@@ -314,9 +315,7 @@ public class GitOverHttpServlet extends GitServlet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ProjectState state = (ProjectState) req.getAttribute(ATT_STATE);
|
ProjectState state = (ProjectState) req.getAttribute(ATT_STATE);
|
||||||
for (UploadPackInitializer initializer : uploadPackInitializers) {
|
uploadPackInitializers.runEach(initializer -> initializer.init(state.getNameKey(), up));
|
||||||
initializer.init(state.getNameKey(), up);
|
|
||||||
}
|
|
||||||
return up;
|
return up;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,10 +14,11 @@
|
|||||||
|
|
||||||
package com.google.gerrit.httpd;
|
package com.google.gerrit.httpd;
|
||||||
|
|
||||||
import com.google.gerrit.extensions.registration.DynamicItem;
|
|
||||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
import com.google.gerrit.extensions.registration.DynamicSet;
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
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.Inject;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
@@ -34,8 +35,8 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
public class UniversalWebLoginFilter implements Filter {
|
public class UniversalWebLoginFilter implements Filter {
|
||||||
private final DynamicItem<WebSession> session;
|
private final PluginItemContext<WebSession> session;
|
||||||
private final DynamicSet<WebLoginListener> webLoginListeners;
|
private final PluginSetContext<WebLoginListener> webLoginListeners;
|
||||||
private final Provider<CurrentUser> userProvider;
|
private final Provider<CurrentUser> userProvider;
|
||||||
|
|
||||||
public static ServletModule module() {
|
public static ServletModule module() {
|
||||||
@@ -52,8 +53,8 @@ public class UniversalWebLoginFilter implements Filter {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public UniversalWebLoginFilter(
|
public UniversalWebLoginFilter(
|
||||||
DynamicItem<WebSession> session,
|
PluginItemContext<WebSession> session,
|
||||||
DynamicSet<WebLoginListener> webLoginListeners,
|
PluginSetContext<WebLoginListener> webLoginListeners,
|
||||||
Provider<CurrentUser> userProvider) {
|
Provider<CurrentUser> userProvider) {
|
||||||
this.session = session;
|
this.session = session;
|
||||||
this.webLoginListeners = webLoginListeners;
|
this.webLoginListeners = webLoginListeners;
|
||||||
@@ -75,20 +76,18 @@ public class UniversalWebLoginFilter implements Filter {
|
|||||||
Optional<IdentifiedUser> loggedInUserAfter = loggedInUser();
|
Optional<IdentifiedUser> loggedInUserAfter = loggedInUser();
|
||||||
|
|
||||||
if (!loggedInUserBefore.isPresent() && loggedInUserAfter.isPresent()) {
|
if (!loggedInUserBefore.isPresent() && loggedInUserAfter.isPresent()) {
|
||||||
for (WebLoginListener loginListener : webLoginListeners) {
|
webLoginListeners.runEach(
|
||||||
loginListener.onLogin(loggedInUserAfter.get(), httpRequest, wrappedResponse);
|
l -> l.onLogin(loggedInUserAfter.get(), httpRequest, wrappedResponse));
|
||||||
}
|
|
||||||
} else if (loggedInUserBefore.isPresent() && !loggedInUserAfter.isPresent()) {
|
} else if (loggedInUserBefore.isPresent() && !loggedInUserAfter.isPresent()) {
|
||||||
for (WebLoginListener loginListener : webLoginListeners) {
|
webLoginListeners.runEach(
|
||||||
loginListener.onLogout(loggedInUserBefore.get(), httpRequest, wrappedResponse);
|
l -> l.onLogout(loggedInUserBefore.get(), httpRequest, wrappedResponse));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wrappedResponse.play();
|
wrappedResponse.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<IdentifiedUser> loggedInUser() {
|
private Optional<IdentifiedUser> loggedInUser() {
|
||||||
return session.get().isSignedIn()
|
return session.call(s -> s.isSignedIn())
|
||||||
? Optional.of(userProvider.get().asIdentifiedUser())
|
? Optional.of(userProvider.get().asIdentifiedUser())
|
||||||
: Optional.empty();
|
: Optional.empty();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ package com.google.gerrit.lucene;
|
|||||||
|
|
||||||
import com.google.common.flogger.FluentLogger;
|
import com.google.common.flogger.FluentLogger;
|
||||||
import com.google.common.primitives.Ints;
|
import com.google.common.primitives.Ints;
|
||||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
|
||||||
import com.google.gerrit.index.Index;
|
import com.google.gerrit.index.Index;
|
||||||
import com.google.gerrit.index.IndexDefinition;
|
import com.google.gerrit.index.IndexDefinition;
|
||||||
import com.google.gerrit.index.Schema;
|
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.GerritIndexStatus;
|
||||||
import com.google.gerrit.server.index.OnlineUpgradeListener;
|
import com.google.gerrit.server.index.OnlineUpgradeListener;
|
||||||
import com.google.gerrit.server.index.VersionManager;
|
import com.google.gerrit.server.index.VersionManager;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -47,7 +47,7 @@ public class LuceneVersionManager extends VersionManager {
|
|||||||
LuceneVersionManager(
|
LuceneVersionManager(
|
||||||
@GerritServerConfig Config cfg,
|
@GerritServerConfig Config cfg,
|
||||||
SitePaths sitePaths,
|
SitePaths sitePaths,
|
||||||
DynamicSet<OnlineUpgradeListener> listeners,
|
PluginSetContext<OnlineUpgradeListener> listeners,
|
||||||
Collection<IndexDefinition<?, ?, ?>> defs) {
|
Collection<IndexDefinition<?, ?, ?>> defs) {
|
||||||
super(sitePaths, listeners, defs, VersionManager.getOnlineUpgrade(cfg));
|
super(sitePaths, listeners, defs, VersionManager.getOnlineUpgrade(cfg));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ package com.google.gerrit.server.auth;
|
|||||||
|
|
||||||
import static java.util.Objects.requireNonNull;
|
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.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
import java.util.ArrayList;
|
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. */
|
/** Universal implementation of the AuthBackend that works with the injected set of AuthBackends. */
|
||||||
@Singleton
|
@Singleton
|
||||||
public final class UniversalAuthBackend implements AuthBackend {
|
public final class UniversalAuthBackend implements AuthBackend {
|
||||||
private final DynamicSet<AuthBackend> authBackends;
|
private final PluginSetContext<AuthBackend> authBackends;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UniversalAuthBackend(DynamicSet<AuthBackend> authBackends) {
|
UniversalAuthBackend(PluginSetContext<AuthBackend> authBackends) {
|
||||||
this.authBackends = authBackends;
|
this.authBackends = authBackends;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,7 +36,8 @@ public final class UniversalAuthBackend implements AuthBackend {
|
|||||||
public AuthUser authenticate(AuthRequest request) throws AuthException {
|
public AuthUser authenticate(AuthRequest request) throws AuthException {
|
||||||
List<AuthUser> authUsers = new ArrayList<>();
|
List<AuthUser> authUsers = new ArrayList<>();
|
||||||
List<AuthException> authExs = new ArrayList<>();
|
List<AuthException> authExs = new ArrayList<>();
|
||||||
for (AuthBackend backend : authBackends) {
|
authBackends.runEach(
|
||||||
|
backend -> {
|
||||||
try {
|
try {
|
||||||
authUsers.add(requireNonNull(backend.authenticate(request)));
|
authUsers.add(requireNonNull(backend.authenticate(request)));
|
||||||
} catch (MissingCredentialsException ex) {
|
} catch (MissingCredentialsException ex) {
|
||||||
@@ -44,7 +45,7 @@ public final class UniversalAuthBackend implements AuthBackend {
|
|||||||
} catch (AuthException ex) {
|
} catch (AuthException ex) {
|
||||||
authExs.add(ex);
|
authExs.add(ex);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
// Handle the valid responses
|
// Handle the valid responses
|
||||||
if (authUsers.size() == 1) {
|
if (authUsers.size() == 1) {
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ package com.google.gerrit.server.cache;
|
|||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.cache.RemovalListener;
|
import com.google.common.cache.RemovalListener;
|
||||||
import com.google.common.cache.RemovalNotification;
|
import com.google.common.cache.RemovalNotification;
|
||||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
|
||||||
import com.google.gerrit.extensions.registration.PluginName;
|
import com.google.gerrit.extensions.registration.PluginName;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.assistedinject.Assisted;
|
import com.google.inject.assistedinject.Assisted;
|
||||||
|
|
||||||
@@ -35,13 +35,13 @@ public class ForwardingRemovalListener<K, V> implements RemovalListener<K, V> {
|
|||||||
ForwardingRemovalListener create(String cacheName);
|
ForwardingRemovalListener create(String cacheName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final DynamicSet<CacheRemovalListener> listeners;
|
private final PluginSetContext<CacheRemovalListener> listeners;
|
||||||
private final String cacheName;
|
private final String cacheName;
|
||||||
private String pluginName = PluginName.GERRIT;
|
private String pluginName = PluginName.GERRIT;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ForwardingRemovalListener(
|
ForwardingRemovalListener(
|
||||||
DynamicSet<CacheRemovalListener> listeners, @Assisted String cacheName) {
|
PluginSetContext<CacheRemovalListener> listeners, @Assisted String cacheName) {
|
||||||
this.listeners = listeners;
|
this.listeners = listeners;
|
||||||
this.cacheName = cacheName;
|
this.cacheName = cacheName;
|
||||||
}
|
}
|
||||||
@@ -56,8 +56,6 @@ public class ForwardingRemovalListener<K, V> implements RemovalListener<K, V> {
|
|||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void onRemoval(RemovalNotification<K, V> notification) {
|
public void onRemoval(RemovalNotification<K, V> notification) {
|
||||||
for (CacheRemovalListener<K, V> l : listeners) {
|
listeners.runEach(l -> l.onRemoval(pluginName, cacheName, notification));
|
||||||
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.ArrayListMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
import com.google.common.flogger.FluentLogger;
|
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.ConfigUpdateEntry;
|
||||||
import com.google.gerrit.server.config.ConfigUpdatedEvent.UpdateResult;
|
import com.google.gerrit.server.config.ConfigUpdatedEvent.UpdateResult;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
|
|
||||||
@@ -29,11 +29,12 @@ public class GerritServerConfigReloader {
|
|||||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||||
|
|
||||||
private final GerritServerConfigProvider configProvider;
|
private final GerritServerConfigProvider configProvider;
|
||||||
private final DynamicSet<GerritConfigListener> configListeners;
|
private final PluginSetContext<GerritConfigListener> configListeners;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
GerritServerConfigReloader(
|
GerritServerConfigReloader(
|
||||||
GerritServerConfigProvider configProvider, DynamicSet<GerritConfigListener> configListeners) {
|
GerritServerConfigProvider configProvider,
|
||||||
|
PluginSetContext<GerritConfigListener> configListeners) {
|
||||||
this.configProvider = configProvider;
|
this.configProvider = configProvider;
|
||||||
this.configListeners = configListeners;
|
this.configListeners = configListeners;
|
||||||
}
|
}
|
||||||
@@ -53,9 +54,7 @@ public class GerritServerConfigReloader {
|
|||||||
public Multimap<UpdateResult, ConfigUpdateEntry> fireUpdatedConfigEvent(
|
public Multimap<UpdateResult, ConfigUpdateEntry> fireUpdatedConfigEvent(
|
||||||
ConfigUpdatedEvent event) {
|
ConfigUpdatedEvent event) {
|
||||||
Multimap<UpdateResult, ConfigUpdateEntry> updates = ArrayListMultimap.create();
|
Multimap<UpdateResult, ConfigUpdateEntry> updates = ArrayListMultimap.create();
|
||||||
for (GerritConfigListener configListener : configListeners) {
|
configListeners.runEach(l -> updates.putAll(l.configUpdated(event)));
|
||||||
updates.putAll(configListener.configUpdated(event));
|
|
||||||
}
|
|
||||||
return updates;
|
return updates;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,16 +15,16 @@
|
|||||||
package com.google.gerrit.server.extensions.events;
|
package com.google.gerrit.server.extensions.events;
|
||||||
|
|
||||||
import com.google.gerrit.extensions.events.PluginEventListener;
|
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.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class PluginEvent {
|
public class PluginEvent {
|
||||||
private final DynamicSet<PluginEventListener> listeners;
|
private final PluginSetContext<PluginEventListener> listeners;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
PluginEvent(DynamicSet<PluginEventListener> listeners) {
|
PluginEvent(PluginSetContext<PluginEventListener> listeners) {
|
||||||
this.listeners = listeners;
|
this.listeners = listeners;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,9 +33,7 @@ public class PluginEvent {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Event e = new Event(pluginName, type, data);
|
Event e = new Event(pluginName, type, data);
|
||||||
for (PluginEventListener l : listeners) {
|
listeners.runEach(l -> l.onPluginEvent(e));
|
||||||
l.onPluginEvent(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class Event extends AbstractNoNotifyEvent implements PluginEventListener.Event {
|
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.common.flogger.FluentLogger;
|
||||||
import com.google.gerrit.common.data.GarbageCollectionResult;
|
import com.google.gerrit.common.data.GarbageCollectionResult;
|
||||||
import com.google.gerrit.extensions.events.GarbageCollectorListener;
|
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.reviewdb.client.Project;
|
||||||
import com.google.gerrit.server.config.GcConfig;
|
import com.google.gerrit.server.config.GcConfig;
|
||||||
import com.google.gerrit.server.extensions.events.AbstractNoNotifyEvent;
|
import com.google.gerrit.server.extensions.events.AbstractNoNotifyEvent;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -43,7 +43,7 @@ public class GarbageCollection {
|
|||||||
private final GitRepositoryManager repoManager;
|
private final GitRepositoryManager repoManager;
|
||||||
private final GarbageCollectionQueue gcQueue;
|
private final GarbageCollectionQueue gcQueue;
|
||||||
private final GcConfig gcConfig;
|
private final GcConfig gcConfig;
|
||||||
private final DynamicSet<GarbageCollectorListener> listeners;
|
private final PluginSetContext<GarbageCollectorListener> listeners;
|
||||||
|
|
||||||
public interface Factory {
|
public interface Factory {
|
||||||
GarbageCollection create();
|
GarbageCollection create();
|
||||||
@@ -54,7 +54,7 @@ public class GarbageCollection {
|
|||||||
GitRepositoryManager repoManager,
|
GitRepositoryManager repoManager,
|
||||||
GarbageCollectionQueue gcQueue,
|
GarbageCollectionQueue gcQueue,
|
||||||
GcConfig config,
|
GcConfig config,
|
||||||
DynamicSet<GarbageCollectorListener> listeners) {
|
PluginSetContext<GarbageCollectorListener> listeners) {
|
||||||
this.repoManager = repoManager;
|
this.repoManager = repoManager;
|
||||||
this.gcQueue = gcQueue;
|
this.gcQueue = gcQueue;
|
||||||
this.gcConfig = config;
|
this.gcConfig = config;
|
||||||
@@ -113,13 +113,7 @@ public class GarbageCollection {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Event event = new Event(p, statistics);
|
Event event = new Event(p, statistics);
|
||||||
for (GarbageCollectorListener l : listeners) {
|
listeners.runEach(l -> l.onGarbageCollected(event));
|
||||||
try {
|
|
||||||
l.onGarbageCollected(event);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
logger.atWarning().withCause(e).log("Failure in GarbageCollectorListener");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void logGcInfo(Project.NameKey projectName, String msg) {
|
private static void logGcInfo(Project.NameKey projectName, String msg) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
package com.google.gerrit.server.git.receive;
|
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 com.google.inject.Inject;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import org.eclipse.jgit.transport.PostReceiveHook;
|
import org.eclipse.jgit.transport.PostReceiveHook;
|
||||||
@@ -22,17 +22,15 @@ import org.eclipse.jgit.transport.ReceiveCommand;
|
|||||||
import org.eclipse.jgit.transport.ReceivePack;
|
import org.eclipse.jgit.transport.ReceivePack;
|
||||||
|
|
||||||
class LazyPostReceiveHookChain implements PostReceiveHook {
|
class LazyPostReceiveHookChain implements PostReceiveHook {
|
||||||
private final DynamicSet<PostReceiveHook> hooks;
|
private final PluginSetContext<PostReceiveHook> hooks;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
LazyPostReceiveHookChain(DynamicSet<PostReceiveHook> hooks) {
|
LazyPostReceiveHookChain(PluginSetContext<PostReceiveHook> hooks) {
|
||||||
this.hooks = hooks;
|
this.hooks = hooks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPostReceive(ReceivePack rp, Collection<ReceiveCommand> commands) {
|
public void onPostReceive(ReceivePack rp, Collection<ReceiveCommand> commands) {
|
||||||
for (PostReceiveHook h : hooks) {
|
hooks.runEach(h -> h.onPostReceive(rp, commands));
|
||||||
h.onPostReceive(rp, commands);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ import static java.util.Objects.requireNonNull;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.flogger.FluentLogger;
|
import com.google.common.flogger.FluentLogger;
|
||||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
|
||||||
import com.google.gerrit.index.Index;
|
import com.google.gerrit.index.Index;
|
||||||
import com.google.gerrit.index.IndexCollection;
|
import com.google.gerrit.index.IndexCollection;
|
||||||
import com.google.gerrit.index.IndexDefinition;
|
import com.google.gerrit.index.IndexDefinition;
|
||||||
import com.google.gerrit.index.SiteIndexer;
|
import com.google.gerrit.index.SiteIndexer;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
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 SiteIndexer<K, V, I> batchIndexer;
|
||||||
private final int oldVersion;
|
private final int oldVersion;
|
||||||
private final int newVersion;
|
private final int newVersion;
|
||||||
private final DynamicSet<OnlineUpgradeListener> listeners;
|
private final PluginSetContext<OnlineUpgradeListener> listeners;
|
||||||
private I index;
|
private I index;
|
||||||
private final AtomicBoolean running = new AtomicBoolean();
|
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,
|
IndexDefinition<K, V, I> def,
|
||||||
int oldVersion,
|
int oldVersion,
|
||||||
int newVersion,
|
int newVersion,
|
||||||
DynamicSet<OnlineUpgradeListener> listeners) {
|
PluginSetContext<OnlineUpgradeListener> listeners) {
|
||||||
this.name = def.getName();
|
this.name = def.getName();
|
||||||
this.indexes = def.getIndexCollection();
|
this.indexes = def.getIndexCollection();
|
||||||
this.batchIndexer = def.getSiteIndexer();
|
this.batchIndexer = def.getSiteIndexer();
|
||||||
@@ -68,9 +68,7 @@ public class OnlineReindexer<K, V, I extends Index<K, V>> {
|
|||||||
} finally {
|
} finally {
|
||||||
running.set(false);
|
running.set(false);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
for (OnlineUpgradeListener listener : listeners) {
|
listeners.runEach(listener -> listener.onFailure(name, oldVersion, newVersion));
|
||||||
listener.onFailure(name, oldVersion, newVersion);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -94,9 +92,7 @@ public class OnlineReindexer<K, V, I extends Index<K, V>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void reindex() throws IOException {
|
private void reindex() throws IOException {
|
||||||
for (OnlineUpgradeListener listener : listeners) {
|
listeners.runEach(listener -> listener.onStart(name, oldVersion, newVersion));
|
||||||
listener.onStart(name, oldVersion, newVersion);
|
|
||||||
}
|
|
||||||
index =
|
index =
|
||||||
requireNonNull(
|
requireNonNull(
|
||||||
indexes.getWriteIndex(newVersion),
|
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));
|
logger.atInfo().log("Reindex %s to version %s complete", name, version(index));
|
||||||
activateIndex();
|
activateIndex();
|
||||||
for (OnlineUpgradeListener listener : listeners) {
|
listeners.runEach(listener -> listener.onSuccess(name, oldVersion, newVersion));
|
||||||
listener.onSuccess(name, oldVersion, newVersion);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void activateIndex() {
|
public void activateIndex() {
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ import com.google.common.collect.ImmutableList;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.gerrit.extensions.events.LifecycleListener;
|
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.Index;
|
||||||
import com.google.gerrit.index.IndexCollection;
|
import com.google.gerrit.index.IndexCollection;
|
||||||
import com.google.gerrit.index.IndexDefinition;
|
import com.google.gerrit.index.IndexDefinition;
|
||||||
import com.google.gerrit.index.IndexDefinition.IndexFactory;
|
import com.google.gerrit.index.IndexDefinition.IndexFactory;
|
||||||
import com.google.gerrit.index.Schema;
|
import com.google.gerrit.index.Schema;
|
||||||
import com.google.gerrit.server.config.SitePaths;
|
import com.google.gerrit.server.config.SitePaths;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.inject.ProvisionException;
|
import com.google.inject.ProvisionException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -61,7 +61,7 @@ public abstract class VersionManager implements LifecycleListener {
|
|||||||
protected final String runReindexMsg;
|
protected final String runReindexMsg;
|
||||||
protected final SitePaths sitePaths;
|
protected final SitePaths sitePaths;
|
||||||
|
|
||||||
private final DynamicSet<OnlineUpgradeListener> listeners;
|
private final PluginSetContext<OnlineUpgradeListener> listeners;
|
||||||
|
|
||||||
// The following fields must be accessed synchronized on this.
|
// The following fields must be accessed synchronized on this.
|
||||||
protected final Map<String, IndexDefinition<?, ?, ?>> defs;
|
protected final Map<String, IndexDefinition<?, ?, ?>> defs;
|
||||||
@@ -69,7 +69,7 @@ public abstract class VersionManager implements LifecycleListener {
|
|||||||
|
|
||||||
protected VersionManager(
|
protected VersionManager(
|
||||||
SitePaths sitePaths,
|
SitePaths sitePaths,
|
||||||
DynamicSet<OnlineUpgradeListener> listeners,
|
PluginSetContext<OnlineUpgradeListener> listeners,
|
||||||
Collection<IndexDefinition<?, ?, ?>> defs,
|
Collection<IndexDefinition<?, ?, ?>> defs,
|
||||||
boolean onlineUpgrade) {
|
boolean onlineUpgrade) {
|
||||||
this.sitePaths = sitePaths;
|
this.sitePaths = sitePaths;
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ import com.google.common.util.concurrent.ListeningExecutorService;
|
|||||||
import com.google.common.util.concurrent.MoreExecutors;
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
import com.google.gerrit.common.FormatUtil;
|
import com.google.gerrit.common.FormatUtil;
|
||||||
import com.google.gerrit.common.Nullable;
|
import com.google.gerrit.common.Nullable;
|
||||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
|
||||||
import com.google.gerrit.git.LockFailureException;
|
import com.google.gerrit.git.LockFailureException;
|
||||||
import com.google.gerrit.git.RefUpdateUtil;
|
import com.google.gerrit.git.RefUpdateUtil;
|
||||||
import com.google.gerrit.reviewdb.client.Change;
|
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.PrimaryStorageMigrator.NoNoteDbStateException;
|
||||||
import com.google.gerrit.server.notedb.RepoSequence;
|
import com.google.gerrit.server.notedb.RepoSequence;
|
||||||
import com.google.gerrit.server.notedb.rebuild.ChangeRebuilder.NoPatchSetsException;
|
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.project.NoSuchChangeException;
|
||||||
import com.google.gerrit.server.update.ChainedReceiveCommands;
|
import com.google.gerrit.server.update.ChainedReceiveCommands;
|
||||||
import com.google.gerrit.server.util.ManualRequestContext;
|
import com.google.gerrit.server.util.ManualRequestContext;
|
||||||
@@ -150,7 +150,7 @@ public class NoteDbMigrator implements AutoCloseable {
|
|||||||
private final WorkQueue workQueue;
|
private final WorkQueue workQueue;
|
||||||
private final MutableNotesMigration globalNotesMigration;
|
private final MutableNotesMigration globalNotesMigration;
|
||||||
private final PrimaryStorageMigrator primaryStorageMigrator;
|
private final PrimaryStorageMigrator primaryStorageMigrator;
|
||||||
private final DynamicSet<NotesMigrationStateListener> listeners;
|
private final PluginSetContext<NotesMigrationStateListener> listeners;
|
||||||
|
|
||||||
private int threads;
|
private int threads;
|
||||||
private ImmutableList<Project.NameKey> projects = ImmutableList.of();
|
private ImmutableList<Project.NameKey> projects = ImmutableList.of();
|
||||||
@@ -179,7 +179,7 @@ public class NoteDbMigrator implements AutoCloseable {
|
|||||||
WorkQueue workQueue,
|
WorkQueue workQueue,
|
||||||
MutableNotesMigration globalNotesMigration,
|
MutableNotesMigration globalNotesMigration,
|
||||||
PrimaryStorageMigrator primaryStorageMigrator,
|
PrimaryStorageMigrator primaryStorageMigrator,
|
||||||
DynamicSet<NotesMigrationStateListener> listeners) {
|
PluginSetContext<NotesMigrationStateListener> listeners) {
|
||||||
// Reload gerrit.config/notedb.config on each migrator invocation, in case a previous
|
// 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
|
// migration in the same process modified the on-disk contents. This ensures the defaults for
|
||||||
// trial/autoMigrate get set correctly below.
|
// trial/autoMigrate get set correctly below.
|
||||||
@@ -390,7 +390,7 @@ public class NoteDbMigrator implements AutoCloseable {
|
|||||||
private final ChangeRebuilderImpl rebuilder;
|
private final ChangeRebuilderImpl rebuilder;
|
||||||
private final MutableNotesMigration globalNotesMigration;
|
private final MutableNotesMigration globalNotesMigration;
|
||||||
private final PrimaryStorageMigrator primaryStorageMigrator;
|
private final PrimaryStorageMigrator primaryStorageMigrator;
|
||||||
private final DynamicSet<NotesMigrationStateListener> listeners;
|
private final PluginSetContext<NotesMigrationStateListener> listeners;
|
||||||
|
|
||||||
private final ListeningExecutorService executor;
|
private final ListeningExecutorService executor;
|
||||||
private final ImmutableList<Project.NameKey> projects;
|
private final ImmutableList<Project.NameKey> projects;
|
||||||
@@ -416,7 +416,7 @@ public class NoteDbMigrator implements AutoCloseable {
|
|||||||
ChangeRebuilderImpl rebuilder,
|
ChangeRebuilderImpl rebuilder,
|
||||||
MutableNotesMigration globalNotesMigration,
|
MutableNotesMigration globalNotesMigration,
|
||||||
PrimaryStorageMigrator primaryStorageMigrator,
|
PrimaryStorageMigrator primaryStorageMigrator,
|
||||||
DynamicSet<NotesMigrationStateListener> listeners,
|
PluginSetContext<NotesMigrationStateListener> listeners,
|
||||||
ListeningExecutorService executor,
|
ListeningExecutorService executor,
|
||||||
ImmutableList<Project.NameKey> projects,
|
ImmutableList<Project.NameKey> projects,
|
||||||
ImmutableList<Change.Id> changes,
|
ImmutableList<Change.Id> changes,
|
||||||
@@ -737,9 +737,7 @@ public class NoteDbMigrator implements AutoCloseable {
|
|||||||
|
|
||||||
private void preStateChange(NotesMigrationState oldState, NotesMigrationState newState)
|
private void preStateChange(NotesMigrationState oldState, NotesMigrationState newState)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
for (NotesMigrationStateListener listener : listeners) {
|
listeners.runEach(l -> l.preStateChange(oldState, newState), IOException.class);
|
||||||
listener.preStateChange(oldState, newState);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setControlFlags() throws MigrationException {
|
private void setControlFlags() throws MigrationException {
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
package com.google.gerrit.server.plugins;
|
package com.google.gerrit.server.plugins;
|
||||||
|
|
||||||
import com.google.common.flogger.FluentLogger;
|
import com.google.common.flogger.FluentLogger;
|
||||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
|
||||||
import com.google.gerrit.extensions.registration.PluginName;
|
import com.google.gerrit.extensions.registration.PluginName;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
@@ -28,10 +28,10 @@ import org.eclipse.jgit.internal.storage.file.FileSnapshot;
|
|||||||
class UniversalServerPluginProvider implements ServerPluginProvider {
|
class UniversalServerPluginProvider implements ServerPluginProvider {
|
||||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||||
|
|
||||||
private final DynamicSet<ServerPluginProvider> serverPluginProviders;
|
private final PluginSetContext<ServerPluginProvider> serverPluginProviders;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UniversalServerPluginProvider(DynamicSet<ServerPluginProvider> sf) {
|
UniversalServerPluginProvider(PluginSetContext<ServerPluginProvider> sf) {
|
||||||
this.serverPluginProviders = sf;
|
this.serverPluginProviders = sf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,7 +80,8 @@ class UniversalServerPluginProvider implements ServerPluginProvider {
|
|||||||
|
|
||||||
private List<ServerPluginProvider> providersForHandlingPlugin(Path srcPath) {
|
private List<ServerPluginProvider> providersForHandlingPlugin(Path srcPath) {
|
||||||
List<ServerPluginProvider> providers = new ArrayList<>();
|
List<ServerPluginProvider> providers = new ArrayList<>();
|
||||||
for (ServerPluginProvider serverPluginProvider : serverPluginProviders) {
|
serverPluginProviders.runEach(
|
||||||
|
serverPluginProvider -> {
|
||||||
boolean handles = serverPluginProvider.handles(srcPath);
|
boolean handles = serverPluginProvider.handles(srcPath);
|
||||||
logger.atFine().log(
|
logger.atFine().log(
|
||||||
"File %s handled by %s ? => %s",
|
"File %s handled by %s ? => %s",
|
||||||
@@ -88,7 +89,7 @@ class UniversalServerPluginProvider implements ServerPluginProvider {
|
|||||||
if (handles) {
|
if (handles) {
|
||||||
providers.add(serverPluginProvider);
|
providers.add(serverPluginProvider);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
return providers;
|
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.annotations.RequiresCapability;
|
||||||
import com.google.gerrit.extensions.api.accounts.AccountInput;
|
import com.google.gerrit.extensions.api.accounts.AccountInput;
|
||||||
import com.google.gerrit.extensions.common.AccountInfo;
|
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.BadRequestException;
|
||||||
import com.google.gerrit.extensions.restapi.IdString;
|
import com.google.gerrit.extensions.restapi.IdString;
|
||||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
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.group.db.InternalGroupUpdate;
|
||||||
import com.google.gerrit.server.mail.send.OutgoingEmailValidator;
|
import com.google.gerrit.server.mail.send.OutgoingEmailValidator;
|
||||||
import com.google.gerrit.server.permissions.PermissionBackendException;
|
import com.google.gerrit.server.permissions.PermissionBackendException;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.gerrit.server.ssh.SshKeyCache;
|
import com.google.gerrit.server.ssh.SshKeyCache;
|
||||||
import com.google.gwtorm.server.OrmException;
|
import com.google.gwtorm.server.OrmException;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
@@ -73,7 +73,7 @@ public class CreateAccount
|
|||||||
private final SshKeyCache sshKeyCache;
|
private final SshKeyCache sshKeyCache;
|
||||||
private final Provider<AccountsUpdate> accountsUpdateProvider;
|
private final Provider<AccountsUpdate> accountsUpdateProvider;
|
||||||
private final AccountLoader.Factory infoLoader;
|
private final AccountLoader.Factory infoLoader;
|
||||||
private final DynamicSet<AccountExternalIdCreator> externalIdCreators;
|
private final PluginSetContext<AccountExternalIdCreator> externalIdCreators;
|
||||||
private final Provider<GroupsUpdate> groupsUpdate;
|
private final Provider<GroupsUpdate> groupsUpdate;
|
||||||
private final OutgoingEmailValidator validator;
|
private final OutgoingEmailValidator validator;
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ public class CreateAccount
|
|||||||
SshKeyCache sshKeyCache,
|
SshKeyCache sshKeyCache,
|
||||||
@UserInitiated Provider<AccountsUpdate> accountsUpdateProvider,
|
@UserInitiated Provider<AccountsUpdate> accountsUpdateProvider,
|
||||||
AccountLoader.Factory infoLoader,
|
AccountLoader.Factory infoLoader,
|
||||||
DynamicSet<AccountExternalIdCreator> externalIdCreators,
|
PluginSetContext<AccountExternalIdCreator> externalIdCreators,
|
||||||
@UserInitiated Provider<GroupsUpdate> groupsUpdate,
|
@UserInitiated Provider<GroupsUpdate> groupsUpdate,
|
||||||
OutgoingEmailValidator validator) {
|
OutgoingEmailValidator validator) {
|
||||||
this.seq = seq;
|
this.seq = seq;
|
||||||
@@ -131,9 +131,7 @@ public class CreateAccount
|
|||||||
}
|
}
|
||||||
|
|
||||||
extIds.add(ExternalId.createUsername(username, accountId, input.httpPassword));
|
extIds.add(ExternalId.createUsername(username, accountId, input.httpPassword));
|
||||||
for (AccountExternalIdCreator c : externalIdCreators) {
|
externalIdCreators.runEach(c -> extIds.addAll(c.create(accountId, username, input.email)));
|
||||||
extIds.addAll(c.create(accountId, username, input.email));
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
accountsUpdateProvider
|
accountsUpdateProvider
|
||||||
|
|||||||
@@ -14,10 +14,10 @@
|
|||||||
|
|
||||||
package com.google.gerrit.server.restapi.config;
|
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.restapi.RestReadView;
|
||||||
import com.google.gerrit.extensions.webui.TopMenu;
|
import com.google.gerrit.extensions.webui.TopMenu;
|
||||||
import com.google.gerrit.server.config.ConfigResource;
|
import com.google.gerrit.server.config.ConfigResource;
|
||||||
|
import com.google.gerrit.server.plugincontext.PluginSetContext;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -25,19 +25,17 @@ import java.util.List;
|
|||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
class ListTopMenus implements RestReadView<ConfigResource> {
|
class ListTopMenus implements RestReadView<ConfigResource> {
|
||||||
private final DynamicSet<TopMenu> extensions;
|
private final PluginSetContext<TopMenu> extensions;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ListTopMenus(DynamicSet<TopMenu> extensions) {
|
ListTopMenus(PluginSetContext<TopMenu> extensions) {
|
||||||
this.extensions = extensions;
|
this.extensions = extensions;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TopMenu.MenuEntry> apply(ConfigResource resource) {
|
public List<TopMenu.MenuEntry> apply(ConfigResource resource) {
|
||||||
List<TopMenu.MenuEntry> entries = new ArrayList<>();
|
List<TopMenu.MenuEntry> entries = new ArrayList<>();
|
||||||
for (TopMenu extension : extensions) {
|
extensions.runEach(extension -> entries.addAll(extension.getEntries()));
|
||||||
entries.addAll(extension.getEntries());
|
|
||||||
}
|
|
||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user