Rename CapabilityControl to AccountLimits
The class no longer controls capabilities. It now only provides limits over server resources consumed during a request. Change-Id: I70408bd5dda68b05502c4ece989b60f55793a8dd
This commit is contained in:

committed by
David Pursehouse

parent
8800928410
commit
ee59afd5ab
@@ -20,7 +20,7 @@ import static java.util.concurrent.TimeUnit.MINUTES;
|
|||||||
import static javax.servlet.http.HttpServletResponse.SC_SERVICE_UNAVAILABLE;
|
import static javax.servlet.http.HttpServletResponse.SC_SERVICE_UNAVAILABLE;
|
||||||
|
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.account.CapabilityControl;
|
import com.google.gerrit.server.account.AccountLimits;
|
||||||
import com.google.gerrit.server.config.GerritServerConfig;
|
import com.google.gerrit.server.config.GerritServerConfig;
|
||||||
import com.google.gerrit.server.git.QueueProvider;
|
import com.google.gerrit.server.git.QueueProvider;
|
||||||
import com.google.gerrit.server.git.WorkQueue.CancelableRunnable;
|
import com.google.gerrit.server.git.WorkQueue.CancelableRunnable;
|
||||||
@@ -78,7 +78,7 @@ public class ProjectQoSFilter implements Filter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final CapabilityControl.Factory capabilityFactory;
|
private final AccountLimits.Factory limitsFactory;
|
||||||
private final Provider<CurrentUser> user;
|
private final Provider<CurrentUser> user;
|
||||||
private final QueueProvider queue;
|
private final QueueProvider queue;
|
||||||
private final ServletContext context;
|
private final ServletContext context;
|
||||||
@@ -86,12 +86,12 @@ public class ProjectQoSFilter implements Filter {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ProjectQoSFilter(
|
ProjectQoSFilter(
|
||||||
CapabilityControl.Factory capabilityFactory,
|
AccountLimits.Factory limitsFactory,
|
||||||
Provider<CurrentUser> user,
|
Provider<CurrentUser> user,
|
||||||
QueueProvider queue,
|
QueueProvider queue,
|
||||||
ServletContext context,
|
ServletContext context,
|
||||||
@GerritServerConfig Config cfg) {
|
@GerritServerConfig Config cfg) {
|
||||||
this.capabilityFactory = capabilityFactory;
|
this.limitsFactory = limitsFactory;
|
||||||
this.user = user;
|
this.user = user;
|
||||||
this.queue = queue;
|
this.queue = queue;
|
||||||
this.context = context;
|
this.context = context;
|
||||||
@@ -138,7 +138,7 @@ public class ProjectQoSFilter implements Filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private ScheduledThreadPoolExecutor getExecutor() {
|
private ScheduledThreadPoolExecutor getExecutor() {
|
||||||
QueueProvider.QueueType qt = capabilityFactory.create(user.get()).getQueueType();
|
QueueProvider.QueueType qt = limitsFactory.create(user.get()).getQueueType();
|
||||||
return queue.getQueue(qt);
|
return queue.getQueue(qt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -26,8 +26,8 @@ import com.google.inject.Singleton;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/** Access control management for server-wide capabilities. */
|
/** Limits which QoS a user runs as, and how many search results it can request. */
|
||||||
public class CapabilityControl {
|
public class AccountLimits {
|
||||||
@Singleton
|
@Singleton
|
||||||
public static class Factory {
|
public static class Factory {
|
||||||
private final ProjectCache projectCache;
|
private final ProjectCache projectCache;
|
||||||
@@ -37,15 +37,15 @@ public class CapabilityControl {
|
|||||||
this.projectCache = projectCache;
|
this.projectCache = projectCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CapabilityControl create(CurrentUser user) {
|
public AccountLimits create(CurrentUser user) {
|
||||||
return new CapabilityControl(projectCache, user);
|
return new AccountLimits(projectCache, user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final CapabilityCollection capabilities;
|
private final CapabilityCollection capabilities;
|
||||||
private final CurrentUser user;
|
private final CurrentUser user;
|
||||||
|
|
||||||
private CapabilityControl(ProjectCache projectCache, CurrentUser currentUser) {
|
private AccountLimits(ProjectCache projectCache, CurrentUser currentUser) {
|
||||||
capabilities = projectCache.getAllProjects().getCapabilityCollection();
|
capabilities = projectCache.getAllProjects().getCapabilityCollection();
|
||||||
user = currentUser;
|
user = currentUser;
|
||||||
}
|
}
|
@@ -56,18 +56,18 @@ class GetCapabilities implements RestReadView<AccountResource> {
|
|||||||
private Set<String> query;
|
private Set<String> query;
|
||||||
|
|
||||||
private final PermissionBackend permissionBackend;
|
private final PermissionBackend permissionBackend;
|
||||||
private final CapabilityControl.Factory capabilityFactory;
|
private final AccountLimits.Factory limitsFactory;
|
||||||
private final Provider<CurrentUser> self;
|
private final Provider<CurrentUser> self;
|
||||||
private final DynamicMap<CapabilityDefinition> pluginCapabilities;
|
private final DynamicMap<CapabilityDefinition> pluginCapabilities;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
GetCapabilities(
|
GetCapabilities(
|
||||||
PermissionBackend permissionBackend,
|
PermissionBackend permissionBackend,
|
||||||
CapabilityControl.Factory capabilityFactory,
|
AccountLimits.Factory limitsFactory,
|
||||||
Provider<CurrentUser> self,
|
Provider<CurrentUser> self,
|
||||||
DynamicMap<CapabilityDefinition> pluginCapabilities) {
|
DynamicMap<CapabilityDefinition> pluginCapabilities) {
|
||||||
this.permissionBackend = permissionBackend;
|
this.permissionBackend = permissionBackend;
|
||||||
this.capabilityFactory = capabilityFactory;
|
this.limitsFactory = limitsFactory;
|
||||||
this.self = self;
|
this.self = self;
|
||||||
this.pluginCapabilities = pluginCapabilities;
|
this.pluginCapabilities = pluginCapabilities;
|
||||||
}
|
}
|
||||||
@@ -85,9 +85,9 @@ class GetCapabilities implements RestReadView<AccountResource> {
|
|||||||
have.put(p.permissionName(), true);
|
have.put(p.permissionName(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
CapabilityControl cc = capabilityFactory.create(rsrc.getUser());
|
AccountLimits limits = limitsFactory.create(rsrc.getUser());
|
||||||
addRanges(have, cc);
|
addRanges(have, limits);
|
||||||
addPriority(have, cc);
|
addPriority(have, limits);
|
||||||
|
|
||||||
return OutputFormat.JSON
|
return OutputFormat.JSON
|
||||||
.newGson()
|
.newGson()
|
||||||
@@ -117,16 +117,16 @@ class GetCapabilities implements RestReadView<AccountResource> {
|
|||||||
return query == null || query.contains(name.toLowerCase());
|
return query == null || query.contains(name.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addRanges(Map<String, Object> have, CapabilityControl cc) {
|
private void addRanges(Map<String, Object> have, AccountLimits limits) {
|
||||||
for (String name : GlobalCapability.getRangeNames()) {
|
for (String name : GlobalCapability.getRangeNames()) {
|
||||||
if (want(name) && cc.hasExplicitRange(name)) {
|
if (want(name) && limits.hasExplicitRange(name)) {
|
||||||
have.put(name, new Range(cc.getRange(name)));
|
have.put(name, new Range(limits.getRange(name)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addPriority(Map<String, Object> have, CapabilityControl cc) {
|
private void addPriority(Map<String, Object> have, AccountLimits limits) {
|
||||||
QueueProvider.QueueType queue = cc.getQueueType();
|
QueueProvider.QueueType queue = limits.getQueueType();
|
||||||
if (queue != QueueProvider.QueueType.INTERACTIVE
|
if (queue != QueueProvider.QueueType.INTERACTIVE
|
||||||
|| (query != null && query.contains(PRIORITY))) {
|
|| (query != null && query.contains(PRIORITY))) {
|
||||||
have.put(PRIORITY, queue);
|
have.put(PRIORITY, queue);
|
||||||
|
@@ -17,7 +17,7 @@ package com.google.gerrit.server.git;
|
|||||||
import static com.google.gerrit.common.data.GlobalCapability.BATCH_CHANGES_LIMIT;
|
import static com.google.gerrit.common.data.GlobalCapability.BATCH_CHANGES_LIMIT;
|
||||||
|
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.account.CapabilityControl;
|
import com.google.gerrit.server.account.AccountLimits;
|
||||||
import com.google.gerrit.server.config.GerritServerConfig;
|
import com.google.gerrit.server.config.GerritServerConfig;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
@@ -29,22 +29,22 @@ class ReceiveConfig {
|
|||||||
final boolean checkReferencedObjectsAreReachable;
|
final boolean checkReferencedObjectsAreReachable;
|
||||||
final boolean allowDrafts;
|
final boolean allowDrafts;
|
||||||
private final int systemMaxBatchChanges;
|
private final int systemMaxBatchChanges;
|
||||||
private final CapabilityControl.Factory capabilityFactory;
|
private final AccountLimits.Factory limitsFactory;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ReceiveConfig(@GerritServerConfig Config config, CapabilityControl.Factory capabilityFactory) {
|
ReceiveConfig(@GerritServerConfig Config config, AccountLimits.Factory limitsFactory) {
|
||||||
checkMagicRefs = config.getBoolean("receive", null, "checkMagicRefs", true);
|
checkMagicRefs = config.getBoolean("receive", null, "checkMagicRefs", true);
|
||||||
checkReferencedObjectsAreReachable =
|
checkReferencedObjectsAreReachable =
|
||||||
config.getBoolean("receive", null, "checkReferencedObjectsAreReachable", true);
|
config.getBoolean("receive", null, "checkReferencedObjectsAreReachable", true);
|
||||||
allowDrafts = config.getBoolean("change", null, "allowDrafts", true);
|
allowDrafts = config.getBoolean("change", null, "allowDrafts", true);
|
||||||
systemMaxBatchChanges = config.getInt("receive", "maxBatchChanges", 0);
|
systemMaxBatchChanges = config.getInt("receive", "maxBatchChanges", 0);
|
||||||
this.capabilityFactory = capabilityFactory;
|
this.limitsFactory = limitsFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getEffectiveMaxBatchChangesLimit(CurrentUser user) {
|
public int getEffectiveMaxBatchChangesLimit(CurrentUser user) {
|
||||||
CapabilityControl cap = capabilityFactory.create(user);
|
AccountLimits limits = limitsFactory.create(user);
|
||||||
if (cap.hasExplicitRange(BATCH_CHANGES_LIMIT)) {
|
if (limits.hasExplicitRange(BATCH_CHANGES_LIMIT)) {
|
||||||
return cap.getRange(BATCH_CHANGES_LIMIT).getMax();
|
return limits.getRange(BATCH_CHANGES_LIMIT).getMax();
|
||||||
}
|
}
|
||||||
return systemMaxBatchChanges;
|
return systemMaxBatchChanges;
|
||||||
}
|
}
|
||||||
|
@@ -120,7 +120,7 @@ public class ProjectState {
|
|||||||
final GitRepositoryManager gitMgr,
|
final GitRepositoryManager gitMgr,
|
||||||
final RulesCache rulesCache,
|
final RulesCache rulesCache,
|
||||||
final List<CommentLinkInfo> commentLinks,
|
final List<CommentLinkInfo> commentLinks,
|
||||||
final CapabilityCollection.Factory capabilityFactory,
|
final CapabilityCollection.Factory limitsFactory,
|
||||||
@Assisted final ProjectConfig config) {
|
@Assisted final ProjectConfig config) {
|
||||||
this.sitePaths = sitePaths;
|
this.sitePaths = sitePaths;
|
||||||
this.projectCache = projectCache;
|
this.projectCache = projectCache;
|
||||||
@@ -136,7 +136,7 @@ public class ProjectState {
|
|||||||
this.configs = new HashMap<>();
|
this.configs = new HashMap<>();
|
||||||
this.capabilities =
|
this.capabilities =
|
||||||
isAllProjects
|
isAllProjects
|
||||||
? capabilityFactory.create(config.getAccessSection(AccessSection.GLOBAL_CAPABILITIES))
|
? limitsFactory.create(config.getAccessSection(AccessSection.GLOBAL_CAPABILITIES))
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (isAllProjects && !Permission.canBeOnAllProjects(AccessSection.ALL, Permission.OWNER)) {
|
if (isAllProjects && !Permission.canBeOnAllProjects(AccessSection.ALL, Permission.OWNER)) {
|
||||||
|
@@ -24,7 +24,7 @@ import com.google.gerrit.metrics.Field;
|
|||||||
import com.google.gerrit.metrics.MetricMaker;
|
import com.google.gerrit.metrics.MetricMaker;
|
||||||
import com.google.gerrit.metrics.Timer1;
|
import com.google.gerrit.metrics.Timer1;
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.account.CapabilityControl;
|
import com.google.gerrit.server.account.AccountLimits;
|
||||||
import com.google.gerrit.server.index.Index;
|
import com.google.gerrit.server.index.Index;
|
||||||
import com.google.gerrit.server.index.IndexCollection;
|
import com.google.gerrit.server.index.IndexCollection;
|
||||||
import com.google.gerrit.server.index.IndexConfig;
|
import com.google.gerrit.server.index.IndexConfig;
|
||||||
@@ -62,7 +62,7 @@ public abstract class QueryProcessor<T> {
|
|||||||
|
|
||||||
protected final Provider<CurrentUser> userProvider;
|
protected final Provider<CurrentUser> userProvider;
|
||||||
|
|
||||||
private final CapabilityControl.Factory capabilityFactory;
|
private final AccountLimits.Factory limitsFactory;
|
||||||
private final Metrics metrics;
|
private final Metrics metrics;
|
||||||
private final SchemaDefinitions<T> schemaDef;
|
private final SchemaDefinitions<T> schemaDef;
|
||||||
private final IndexConfig indexConfig;
|
private final IndexConfig indexConfig;
|
||||||
@@ -78,7 +78,7 @@ public abstract class QueryProcessor<T> {
|
|||||||
|
|
||||||
protected QueryProcessor(
|
protected QueryProcessor(
|
||||||
Provider<CurrentUser> userProvider,
|
Provider<CurrentUser> userProvider,
|
||||||
CapabilityControl.Factory capabilityFactory,
|
AccountLimits.Factory limitsFactory,
|
||||||
Metrics metrics,
|
Metrics metrics,
|
||||||
SchemaDefinitions<T> schemaDef,
|
SchemaDefinitions<T> schemaDef,
|
||||||
IndexConfig indexConfig,
|
IndexConfig indexConfig,
|
||||||
@@ -86,7 +86,7 @@ public abstract class QueryProcessor<T> {
|
|||||||
IndexRewriter<T> rewriter,
|
IndexRewriter<T> rewriter,
|
||||||
String limitField) {
|
String limitField) {
|
||||||
this.userProvider = userProvider;
|
this.userProvider = userProvider;
|
||||||
this.capabilityFactory = capabilityFactory;
|
this.limitsFactory = limitsFactory;
|
||||||
this.metrics = metrics;
|
this.metrics = metrics;
|
||||||
this.schemaDef = schemaDef;
|
this.schemaDef = schemaDef;
|
||||||
this.indexConfig = indexConfig;
|
this.indexConfig = indexConfig;
|
||||||
@@ -235,7 +235,7 @@ public abstract class QueryProcessor<T> {
|
|||||||
|
|
||||||
private int getPermittedLimit() {
|
private int getPermittedLimit() {
|
||||||
if (enforceVisibility) {
|
if (enforceVisibility) {
|
||||||
return capabilityFactory
|
return limitsFactory
|
||||||
.create(userProvider.get())
|
.create(userProvider.get())
|
||||||
.getRange(GlobalCapability.QUERY_LIMIT)
|
.getRange(GlobalCapability.QUERY_LIMIT)
|
||||||
.getMax();
|
.getMax();
|
||||||
|
@@ -19,8 +19,8 @@ import static com.google.gerrit.server.query.account.AccountQueryBuilder.FIELD_L
|
|||||||
|
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.account.AccountControl;
|
import com.google.gerrit.server.account.AccountControl;
|
||||||
|
import com.google.gerrit.server.account.AccountLimits;
|
||||||
import com.google.gerrit.server.account.AccountState;
|
import com.google.gerrit.server.account.AccountState;
|
||||||
import com.google.gerrit.server.account.CapabilityControl;
|
|
||||||
import com.google.gerrit.server.index.IndexConfig;
|
import com.google.gerrit.server.index.IndexConfig;
|
||||||
import com.google.gerrit.server.index.IndexPredicate;
|
import com.google.gerrit.server.index.IndexPredicate;
|
||||||
import com.google.gerrit.server.index.account.AccountIndexCollection;
|
import com.google.gerrit.server.index.account.AccountIndexCollection;
|
||||||
@@ -45,7 +45,7 @@ public class AccountQueryProcessor extends QueryProcessor<AccountState> {
|
|||||||
@Inject
|
@Inject
|
||||||
protected AccountQueryProcessor(
|
protected AccountQueryProcessor(
|
||||||
Provider<CurrentUser> userProvider,
|
Provider<CurrentUser> userProvider,
|
||||||
CapabilityControl.Factory capabilityFactory,
|
AccountLimits.Factory limitsFactory,
|
||||||
Metrics metrics,
|
Metrics metrics,
|
||||||
IndexConfig indexConfig,
|
IndexConfig indexConfig,
|
||||||
AccountIndexCollection indexes,
|
AccountIndexCollection indexes,
|
||||||
@@ -53,7 +53,7 @@ public class AccountQueryProcessor extends QueryProcessor<AccountState> {
|
|||||||
AccountControl.Factory accountControlFactory) {
|
AccountControl.Factory accountControlFactory) {
|
||||||
super(
|
super(
|
||||||
userProvider,
|
userProvider,
|
||||||
capabilityFactory,
|
limitsFactory,
|
||||||
metrics,
|
metrics,
|
||||||
AccountSchemaDefinitions.INSTANCE,
|
AccountSchemaDefinitions.INSTANCE,
|
||||||
indexConfig,
|
indexConfig,
|
||||||
|
@@ -21,7 +21,7 @@ import com.google.gerrit.extensions.common.PluginDefinedInfo;
|
|||||||
import com.google.gerrit.extensions.registration.DynamicMap;
|
import com.google.gerrit.extensions.registration.DynamicMap;
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.account.CapabilityControl;
|
import com.google.gerrit.server.account.AccountLimits;
|
||||||
import com.google.gerrit.server.index.IndexConfig;
|
import com.google.gerrit.server.index.IndexConfig;
|
||||||
import com.google.gerrit.server.index.IndexPredicate;
|
import com.google.gerrit.server.index.IndexPredicate;
|
||||||
import com.google.gerrit.server.index.QueryOptions;
|
import com.google.gerrit.server.index.QueryOptions;
|
||||||
@@ -66,7 +66,7 @@ public class ChangeQueryProcessor extends QueryProcessor<ChangeData>
|
|||||||
@Inject
|
@Inject
|
||||||
ChangeQueryProcessor(
|
ChangeQueryProcessor(
|
||||||
Provider<CurrentUser> userProvider,
|
Provider<CurrentUser> userProvider,
|
||||||
CapabilityControl.Factory capabilityFactory,
|
AccountLimits.Factory limitsFactory,
|
||||||
Metrics metrics,
|
Metrics metrics,
|
||||||
IndexConfig indexConfig,
|
IndexConfig indexConfig,
|
||||||
ChangeIndexCollection indexes,
|
ChangeIndexCollection indexes,
|
||||||
@@ -77,7 +77,7 @@ public class ChangeQueryProcessor extends QueryProcessor<ChangeData>
|
|||||||
DynamicMap<ChangeAttributeFactory> attributeFactories) {
|
DynamicMap<ChangeAttributeFactory> attributeFactories) {
|
||||||
super(
|
super(
|
||||||
userProvider,
|
userProvider,
|
||||||
capabilityFactory,
|
limitsFactory,
|
||||||
metrics,
|
metrics,
|
||||||
ChangeSchemaDefinitions.INSTANCE,
|
ChangeSchemaDefinitions.INSTANCE,
|
||||||
indexConfig,
|
indexConfig,
|
||||||
|
@@ -19,7 +19,7 @@ import static com.google.gerrit.server.query.group.GroupQueryBuilder.FIELD_LIMIT
|
|||||||
|
|
||||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.account.CapabilityControl;
|
import com.google.gerrit.server.account.AccountLimits;
|
||||||
import com.google.gerrit.server.account.GroupControl;
|
import com.google.gerrit.server.account.GroupControl;
|
||||||
import com.google.gerrit.server.index.IndexConfig;
|
import com.google.gerrit.server.index.IndexConfig;
|
||||||
import com.google.gerrit.server.index.IndexPredicate;
|
import com.google.gerrit.server.index.IndexPredicate;
|
||||||
@@ -45,7 +45,7 @@ public class GroupQueryProcessor extends QueryProcessor<AccountGroup> {
|
|||||||
@Inject
|
@Inject
|
||||||
protected GroupQueryProcessor(
|
protected GroupQueryProcessor(
|
||||||
Provider<CurrentUser> userProvider,
|
Provider<CurrentUser> userProvider,
|
||||||
CapabilityControl.Factory capabilityFactory,
|
AccountLimits.Factory limitsFactory,
|
||||||
Metrics metrics,
|
Metrics metrics,
|
||||||
IndexConfig indexConfig,
|
IndexConfig indexConfig,
|
||||||
GroupIndexCollection indexes,
|
GroupIndexCollection indexes,
|
||||||
@@ -53,7 +53,7 @@ public class GroupQueryProcessor extends QueryProcessor<AccountGroup> {
|
|||||||
GroupControl.GenericFactory groupControlFactory) {
|
GroupControl.GenericFactory groupControlFactory) {
|
||||||
super(
|
super(
|
||||||
userProvider,
|
userProvider,
|
||||||
capabilityFactory,
|
limitsFactory,
|
||||||
metrics,
|
metrics,
|
||||||
GroupSchemaDefinitions.INSTANCE,
|
GroupSchemaDefinitions.INSTANCE,
|
||||||
indexConfig,
|
indexConfig,
|
||||||
|
@@ -15,27 +15,27 @@
|
|||||||
package com.google.gerrit.sshd;
|
package com.google.gerrit.sshd;
|
||||||
|
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.account.CapabilityControl;
|
import com.google.gerrit.server.account.AccountLimits;
|
||||||
import com.google.gerrit.server.git.QueueProvider;
|
import com.google.gerrit.server.git.QueueProvider;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||||
|
|
||||||
class CommandExecutorProvider implements Provider<ScheduledThreadPoolExecutor> {
|
class CommandExecutorProvider implements Provider<ScheduledThreadPoolExecutor> {
|
||||||
private final CapabilityControl.Factory capabilityFactory;
|
private final AccountLimits.Factory limitsFactory;
|
||||||
private final QueueProvider queues;
|
private final QueueProvider queues;
|
||||||
private final CurrentUser user;
|
private final CurrentUser user;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
CommandExecutorProvider(
|
CommandExecutorProvider(
|
||||||
CapabilityControl.Factory capabilityFactory, QueueProvider queues, CurrentUser user) {
|
AccountLimits.Factory limitsFactory, QueueProvider queues, CurrentUser user) {
|
||||||
this.capabilityFactory = capabilityFactory;
|
this.limitsFactory = limitsFactory;
|
||||||
this.queues = queues;
|
this.queues = queues;
|
||||||
this.user = user;
|
this.user = user;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ScheduledThreadPoolExecutor get() {
|
public ScheduledThreadPoolExecutor get() {
|
||||||
return queues.getQueue(capabilityFactory.create(user).getQueueType());
|
return queues.getQueue(limitsFactory.create(user).getQueueType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user