ChangeQueryProcessor: Use ChangeIsVisibleToPredicate.Factory

Change-Id: I5bcca0d9b6fddcb710c2467bc857931e3a5cb69e
This commit is contained in:
David Pursehouse
2020-04-09 09:37:33 +09:00
committed by David Pursehouse
parent 91c3b647c7
commit d7e39650dd
2 changed files with 6 additions and 24 deletions

View File

@@ -74,6 +74,7 @@ import com.google.gerrit.server.project.ProjectCacheImpl;
import com.google.gerrit.server.project.ProjectState; import com.google.gerrit.server.project.ProjectState;
import com.google.gerrit.server.project.SubmitRuleEvaluator; import com.google.gerrit.server.project.SubmitRuleEvaluator;
import com.google.gerrit.server.query.change.ChangeData; import com.google.gerrit.server.query.change.ChangeData;
import com.google.gerrit.server.query.change.ChangeIsVisibleToPredicate;
import com.google.gerrit.server.restapi.group.GroupModule; import com.google.gerrit.server.restapi.group.GroupModule;
import com.google.gerrit.server.rules.DefaultSubmitRule; import com.google.gerrit.server.rules.DefaultSubmitRule;
import com.google.gerrit.server.rules.IgnoreSelfApprovalRule; import com.google.gerrit.server.rules.IgnoreSelfApprovalRule;
@@ -164,6 +165,7 @@ public class BatchProgramModule extends FactoryModule {
install(PureRevertCache.module()); install(PureRevertCache.module());
factory(CapabilityCollection.Factory.class); factory(CapabilityCollection.Factory.class);
factory(ChangeData.AssistedFactory.class); factory(ChangeData.AssistedFactory.class);
factory(ChangeIsVisibleToPredicate.Factory.class);
factory(ProjectState.Factory.class); factory(ProjectState.Factory.class);
// Submit rules // Submit rules

View File

@@ -28,7 +28,6 @@ import com.google.gerrit.index.query.IndexPredicate;
import com.google.gerrit.index.query.Predicate; import com.google.gerrit.index.query.Predicate;
import com.google.gerrit.index.query.QueryProcessor; import com.google.gerrit.index.query.QueryProcessor;
import com.google.gerrit.metrics.MetricMaker; import com.google.gerrit.metrics.MetricMaker;
import com.google.gerrit.server.AnonymousUser;
import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.DynamicOptions; import com.google.gerrit.server.DynamicOptions;
import com.google.gerrit.server.DynamicOptions.DynamicBean; import com.google.gerrit.server.DynamicOptions.DynamicBean;
@@ -40,9 +39,6 @@ import com.google.gerrit.server.index.change.ChangeIndexCollection;
import com.google.gerrit.server.index.change.ChangeIndexRewriter; import com.google.gerrit.server.index.change.ChangeIndexRewriter;
import com.google.gerrit.server.index.change.ChangeSchemaDefinitions; import com.google.gerrit.server.index.change.ChangeSchemaDefinitions;
import com.google.gerrit.server.index.change.IndexedChangeQuery; import com.google.gerrit.server.index.change.IndexedChangeQuery;
import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.project.ProjectCache;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import java.util.HashMap; import java.util.HashMap;
@@ -58,11 +54,8 @@ import java.util.Set;
public class ChangeQueryProcessor extends QueryProcessor<ChangeData> public class ChangeQueryProcessor extends QueryProcessor<ChangeData>
implements DynamicOptions.BeanReceiver, DynamicOptions.BeanProvider { implements DynamicOptions.BeanReceiver, DynamicOptions.BeanProvider {
private final Provider<CurrentUser> userProvider; private final Provider<CurrentUser> userProvider;
private final ChangeNotes.Factory notesFactory;
private final ImmutableListMultimap<String, ChangeAttributeFactory> attributeFactoriesByPlugin; private final ImmutableListMultimap<String, ChangeAttributeFactory> attributeFactoriesByPlugin;
private final PermissionBackend permissionBackend; private final ChangeIsVisibleToPredicate.Factory changeIsVisibleToPredicateFactory;
private final ProjectCache projectCache;
private final Provider<AnonymousUser> anonymousUserProvider;
private final Map<String, DynamicBean> dynamicBeans = new HashMap<>(); private final Map<String, DynamicBean> dynamicBeans = new HashMap<>();
static { static {
@@ -80,11 +73,8 @@ public class ChangeQueryProcessor extends QueryProcessor<ChangeData>
IndexConfig indexConfig, IndexConfig indexConfig,
ChangeIndexCollection indexes, ChangeIndexCollection indexes,
ChangeIndexRewriter rewriter, ChangeIndexRewriter rewriter,
ChangeNotes.Factory notesFactory,
DynamicSet<ChangeAttributeFactory> attributeFactories, DynamicSet<ChangeAttributeFactory> attributeFactories,
PermissionBackend permissionBackend, ChangeIsVisibleToPredicate.Factory changeIsVisibleToPredicateFactory) {
ProjectCache projectCache,
Provider<AnonymousUser> anonymousUserProvider) {
super( super(
metricMaker, metricMaker,
ChangeSchemaDefinitions.INSTANCE, ChangeSchemaDefinitions.INSTANCE,
@@ -94,10 +84,7 @@ public class ChangeQueryProcessor extends QueryProcessor<ChangeData>
FIELD_LIMIT, FIELD_LIMIT,
() -> limitsFactory.create(userProvider.get()).getQueryLimit()); () -> limitsFactory.create(userProvider.get()).getQueryLimit());
this.userProvider = userProvider; this.userProvider = userProvider;
this.notesFactory = notesFactory; this.changeIsVisibleToPredicateFactory = changeIsVisibleToPredicateFactory;
this.permissionBackend = permissionBackend;
this.projectCache = projectCache;
this.anonymousUserProvider = anonymousUserProvider;
ImmutableListMultimap.Builder<String, ChangeAttributeFactory> factoriesBuilder = ImmutableListMultimap.Builder<String, ChangeAttributeFactory> factoriesBuilder =
ImmutableListMultimap.builder(); ImmutableListMultimap.builder();
@@ -144,14 +131,7 @@ public class ChangeQueryProcessor extends QueryProcessor<ChangeData>
@Override @Override
protected Predicate<ChangeData> enforceVisibility(Predicate<ChangeData> pred) { protected Predicate<ChangeData> enforceVisibility(Predicate<ChangeData> pred) {
return new AndChangeSource( return new AndChangeSource(
pred, pred, changeIsVisibleToPredicateFactory.forUser(userProvider.get()), start);
new ChangeIsVisibleToPredicate(
notesFactory,
permissionBackend,
projectCache,
anonymousUserProvider,
userProvider.get()),
start);
} }
@Override @Override