summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/query/group/GroupQueryProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/query/group/GroupQueryProcessor.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/query/group/GroupQueryProcessor.java35
1 files changed, 23 insertions, 12 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/group/GroupQueryProcessor.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/group/GroupQueryProcessor.java
index 1cfab202b9..8554ecf6fc 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/group/GroupQueryProcessor.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/group/GroupQueryProcessor.java
@@ -17,21 +17,30 @@ package com.google.gerrit.server.query.group;
import static com.google.common.base.Preconditions.checkState;
import static com.google.gerrit.server.query.group.GroupQueryBuilder.FIELD_LIMIT;
-import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.gerrit.index.IndexConfig;
+import com.google.gerrit.index.query.AndSource;
+import com.google.gerrit.index.query.IndexPredicate;
+import com.google.gerrit.index.query.Predicate;
+import com.google.gerrit.index.query.QueryProcessor;
+import com.google.gerrit.metrics.MetricMaker;
import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.account.AccountLimits;
import com.google.gerrit.server.account.GroupControl;
-import com.google.gerrit.server.index.IndexConfig;
-import com.google.gerrit.server.index.IndexPredicate;
+import com.google.gerrit.server.group.InternalGroup;
import com.google.gerrit.server.index.group.GroupIndexCollection;
import com.google.gerrit.server.index.group.GroupIndexRewriter;
import com.google.gerrit.server.index.group.GroupSchemaDefinitions;
-import com.google.gerrit.server.query.AndSource;
-import com.google.gerrit.server.query.Predicate;
-import com.google.gerrit.server.query.QueryProcessor;
import com.google.inject.Inject;
import com.google.inject.Provider;
-public class GroupQueryProcessor extends QueryProcessor<AccountGroup> {
+/**
+ * Query processor for the group index.
+ *
+ * <p>Instances are one-time-use. Other singleton classes should inject a Provider rather than
+ * holding on to a single instance.
+ */
+public class GroupQueryProcessor extends QueryProcessor<InternalGroup> {
+ private final Provider<CurrentUser> userProvider;
private final GroupControl.GenericFactory groupControlFactory;
static {
@@ -44,24 +53,26 @@ public class GroupQueryProcessor extends QueryProcessor<AccountGroup> {
@Inject
protected GroupQueryProcessor(
Provider<CurrentUser> userProvider,
- Metrics metrics,
+ AccountLimits.Factory limitsFactory,
+ MetricMaker metricMaker,
IndexConfig indexConfig,
GroupIndexCollection indexes,
GroupIndexRewriter rewriter,
GroupControl.GenericFactory groupControlFactory) {
super(
- userProvider,
- metrics,
+ metricMaker,
GroupSchemaDefinitions.INSTANCE,
indexConfig,
indexes,
rewriter,
- FIELD_LIMIT);
+ FIELD_LIMIT,
+ () -> limitsFactory.create(userProvider.get()).getQueryLimit());
+ this.userProvider = userProvider;
this.groupControlFactory = groupControlFactory;
}
@Override
- protected Predicate<AccountGroup> enforceVisibility(Predicate<AccountGroup> pred) {
+ protected Predicate<InternalGroup> enforceVisibility(Predicate<InternalGroup> pred) {
return new AndSource<>(
pred, new GroupIsVisibleToPredicate(groupControlFactory, userProvider.get()), start);
}