Remove ChangeQueryRewriter interface
Since killing BasicChangeRewrites in I99ee9254, IndexRewriteImpl is the only implementation of ChangeQueryRewriter. There is no longer a need for this to be an interface; callers can inject IndexRewriter directly. While we're in there, make IndexRewriter a @Singleton, since it has no per-instance state. Change-Id: I88640c8127cdfee10a949e62f55c759e64945579
This commit is contained in:
@@ -18,8 +18,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.common.collect.Iterables.getOnlyElement;
|
||||
import static com.google.gerrit.server.git.QueueProvider.QueueType.INTERACTIVE;
|
||||
import static com.google.gerrit.server.index.IndexRewriteImpl.CLOSED_STATUSES;
|
||||
import static com.google.gerrit.server.index.IndexRewriteImpl.OPEN_STATUSES;
|
||||
import static com.google.gerrit.server.index.IndexRewriter.CLOSED_STATUSES;
|
||||
import static com.google.gerrit.server.index.IndexRewriter.OPEN_STATUSES;
|
||||
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||
|
||||
@@ -47,7 +47,7 @@ import com.google.gerrit.server.index.FieldDef;
|
||||
import com.google.gerrit.server.index.FieldDef.FillArgs;
|
||||
import com.google.gerrit.server.index.FieldType;
|
||||
import com.google.gerrit.server.index.IndexExecutor;
|
||||
import com.google.gerrit.server.index.IndexRewriteImpl;
|
||||
import com.google.gerrit.server.index.IndexRewriter;
|
||||
import com.google.gerrit.server.index.Schema;
|
||||
import com.google.gerrit.server.index.Schema.Values;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
@@ -355,7 +355,7 @@ public class LuceneChangeIndex implements ChangeIndex {
|
||||
@Override
|
||||
public ChangeDataSource getSource(Predicate<ChangeData> p, QueryOptions opts)
|
||||
throws QueryParseException {
|
||||
Set<Change.Status> statuses = IndexRewriteImpl.getPossibleStatus(p);
|
||||
Set<Change.Status> statuses = IndexRewriter.getPossibleStatus(p);
|
||||
List<SubIndex> indexes = Lists.newArrayListWithCapacity(2);
|
||||
if (!Sets.intersection(statuses, OPEN_STATUSES).isEmpty()) {
|
||||
indexes.add(openIndex);
|
||||
|
@@ -22,7 +22,6 @@ import com.google.common.util.concurrent.MoreExecutors;
|
||||
import com.google.gerrit.lifecycle.LifecycleModule;
|
||||
import com.google.gerrit.server.config.GerritServerConfig;
|
||||
import com.google.gerrit.server.git.WorkQueue;
|
||||
import com.google.gerrit.server.query.change.ChangeQueryRewriter;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Key;
|
||||
import com.google.inject.Provides;
|
||||
@@ -67,7 +66,7 @@ public class IndexModule extends LifecycleModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(ChangeQueryRewriter.class).to(IndexRewriteImpl.class);
|
||||
bind(IndexRewriter.class);
|
||||
bind(IndexCollection.class);
|
||||
listener().to(IndexCollection.class);
|
||||
factory(ChangeIndexer.Factory.class);
|
||||
|
@@ -25,12 +25,12 @@ import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
import com.google.gerrit.server.query.change.AndSource;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gerrit.server.query.change.ChangeQueryRewriter;
|
||||
import com.google.gerrit.server.query.change.ChangeStatusPredicate;
|
||||
import com.google.gerrit.server.query.change.LimitPredicate;
|
||||
import com.google.gerrit.server.query.change.OrSource;
|
||||
import com.google.gerrit.server.query.change.QueryOptions;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
import org.eclipse.jgit.util.MutableInteger;
|
||||
|
||||
@@ -40,7 +40,8 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/** Rewriter that pushes boolean logic into the secondary index. */
|
||||
public class IndexRewriteImpl implements ChangeQueryRewriter {
|
||||
@Singleton
|
||||
public class IndexRewriter {
|
||||
/** Set of all open change statuses. */
|
||||
public static final Set<Change.Status> OPEN_STATUSES;
|
||||
|
||||
@@ -121,13 +122,12 @@ public class IndexRewriteImpl implements ChangeQueryRewriter {
|
||||
private final IndexConfig config;
|
||||
|
||||
@Inject
|
||||
IndexRewriteImpl(IndexCollection indexes,
|
||||
IndexRewriter(IndexCollection indexes,
|
||||
IndexConfig config) {
|
||||
this.indexes = indexes;
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Predicate<ChangeData> rewrite(Predicate<ChangeData> in,
|
||||
QueryOptions opts) throws QueryParseException {
|
||||
ChangeIndex index = indexes.getSearchIndex();
|
@@ -47,6 +47,7 @@ import com.google.gerrit.server.git.strategy.SubmitStrategyFactory;
|
||||
import com.google.gerrit.server.index.ChangeIndex;
|
||||
import com.google.gerrit.server.index.FieldDef;
|
||||
import com.google.gerrit.server.index.IndexCollection;
|
||||
import com.google.gerrit.server.index.IndexRewriter;
|
||||
import com.google.gerrit.server.index.Schema;
|
||||
import com.google.gerrit.server.patch.PatchListCache;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
@@ -143,7 +144,7 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
|
||||
public static class Arguments {
|
||||
final Provider<ReviewDb> db;
|
||||
final Provider<InternalChangeQuery> queryProvider;
|
||||
final Provider<ChangeQueryRewriter> rewriter;
|
||||
final IndexRewriter rewriter;
|
||||
final IdentifiedUser.GenericFactory userFactory;
|
||||
final CapabilityControl.Factory capabilityControlFactory;
|
||||
final ChangeControl.GenericFactory changeControlGenericFactory;
|
||||
@@ -170,7 +171,7 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
|
||||
@VisibleForTesting
|
||||
public Arguments(Provider<ReviewDb> db,
|
||||
Provider<InternalChangeQuery> queryProvider,
|
||||
Provider<ChangeQueryRewriter> rewriter,
|
||||
IndexRewriter rewriter,
|
||||
IdentifiedUser.GenericFactory userFactory,
|
||||
Provider<CurrentUser> self,
|
||||
CapabilityControl.Factory capabilityControlFactory,
|
||||
@@ -204,7 +205,7 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
|
||||
private Arguments(
|
||||
Provider<ReviewDb> db,
|
||||
Provider<InternalChangeQuery> queryProvider,
|
||||
Provider<ChangeQueryRewriter> rewriter,
|
||||
IndexRewriter rewriter,
|
||||
IdentifiedUser.GenericFactory userFactory,
|
||||
Provider<CurrentUser> self,
|
||||
CapabilityControl.Factory capabilityControlFactory,
|
||||
|
@@ -1,23 +0,0 @@
|
||||
// Copyright (C) 2013 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.server.query.change;
|
||||
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
|
||||
public interface ChangeQueryRewriter {
|
||||
Predicate<ChangeData> rewrite(Predicate<ChangeData> in, QueryOptions opts)
|
||||
throws QueryParseException;
|
||||
}
|
@@ -24,6 +24,7 @@ import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.index.IndexConfig;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.index.IndexRewriter;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gerrit.server.query.QueryParseException;
|
||||
@@ -39,7 +40,7 @@ public class QueryProcessor {
|
||||
private final Provider<ReviewDb> db;
|
||||
private final Provider<CurrentUser> userProvider;
|
||||
private final ChangeControl.GenericFactory changeControlFactory;
|
||||
private final ChangeQueryRewriter queryRewriter;
|
||||
private final IndexRewriter rewriter;
|
||||
private final IndexConfig indexConfig;
|
||||
|
||||
private int limitFromCaller;
|
||||
@@ -50,12 +51,12 @@ public class QueryProcessor {
|
||||
QueryProcessor(Provider<ReviewDb> db,
|
||||
Provider<CurrentUser> userProvider,
|
||||
ChangeControl.GenericFactory changeControlFactory,
|
||||
ChangeQueryRewriter queryRewriter,
|
||||
IndexRewriter rewriter,
|
||||
IndexConfig indexConfig) {
|
||||
this.db = db;
|
||||
this.userProvider = userProvider;
|
||||
this.changeControlFactory = changeControlFactory;
|
||||
this.queryRewriter = queryRewriter;
|
||||
this.rewriter = rewriter;
|
||||
this.indexConfig = indexConfig;
|
||||
}
|
||||
|
||||
@@ -140,10 +141,10 @@ public class QueryProcessor {
|
||||
}
|
||||
|
||||
QueryOptions opts = QueryOptions.create(indexConfig, start, limit + 1);
|
||||
Predicate<ChangeData> s = queryRewriter.rewrite(q, opts);
|
||||
Predicate<ChangeData> s = rewriter.rewrite(q, opts);
|
||||
if (!(s instanceof ChangeDataSource)) {
|
||||
q = Predicate.and(open(), q);
|
||||
s = queryRewriter.rewrite(q, opts);
|
||||
s = rewriter.rewrite(q, opts);
|
||||
}
|
||||
if (!(s instanceof ChangeDataSource)) {
|
||||
throw new QueryParseException("invalid query: " + s);
|
||||
|
@@ -44,7 +44,7 @@ import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class IndexRewriteTest {
|
||||
public class IndexRewriterTest {
|
||||
private static final IndexConfig CONFIG = IndexConfig.createDefault();
|
||||
|
||||
@Rule
|
||||
@@ -53,7 +53,7 @@ public class IndexRewriteTest {
|
||||
private FakeIndex index;
|
||||
private IndexCollection indexes;
|
||||
private ChangeQueryBuilder queryBuilder;
|
||||
private IndexRewriteImpl rewrite;
|
||||
private IndexRewriter rewrite;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
@@ -61,7 +61,7 @@ public class IndexRewriteTest {
|
||||
indexes = new IndexCollection();
|
||||
indexes.setSearchIndex(index);
|
||||
queryBuilder = new FakeQueryBuilder(indexes);
|
||||
rewrite = new IndexRewriteImpl(indexes,
|
||||
rewrite = new IndexRewriter(indexes,
|
||||
IndexConfig.create(0, 0, 3, 100));
|
||||
}
|
||||
|
||||
@@ -293,6 +293,6 @@ public class IndexRewriteTest {
|
||||
}
|
||||
|
||||
private Set<Change.Status> status(String query) throws QueryParseException {
|
||||
return IndexRewriteImpl.getPossibleStatus(parse(query));
|
||||
return IndexRewriter.getPossibleStatus(parse(query));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user