Allow passing an executor directly into IndexModule

Change-Id: I3e156cee30b231e54608ecbf08c4e64a0e4d9661
This commit is contained in:
Dave Borowitz
2013-07-18 15:36:48 -07:00
parent 5fe4673b47
commit 6e68cf3917

View File

@@ -21,6 +21,7 @@ import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.git.WorkQueue; import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.git.WorkQueue.Executor; import com.google.gerrit.server.git.WorkQueue.Executor;
import com.google.gerrit.server.query.change.ChangeQueryRewriter; import com.google.gerrit.server.query.change.ChangeQueryRewriter;
import com.google.inject.AbstractModule;
import com.google.inject.Injector; import com.google.inject.Injector;
import com.google.inject.Key; import com.google.inject.Key;
import com.google.inject.Provides; import com.google.inject.Provides;
@@ -48,9 +49,16 @@ public class IndexModule extends LifecycleModule {
} }
private final int threads; private final int threads;
private final ListeningScheduledExecutorService indexExecutor;
public IndexModule(int threads) { public IndexModule(int threads) {
this.threads = threads; this.threads = threads;
this.indexExecutor = null;
}
public IndexModule(ListeningScheduledExecutorService indexExecutor) {
this.threads = -1;
this.indexExecutor = indexExecutor;
} }
@Override @Override
@@ -62,6 +70,32 @@ public class IndexModule extends LifecycleModule {
install(new FactoryModuleBuilder() install(new FactoryModuleBuilder()
.implement(ChangeIndexer.class, ChangeIndexerImpl.class) .implement(ChangeIndexer.class, ChangeIndexerImpl.class)
.build(ChangeIndexer.Factory.class)); .build(ChangeIndexer.Factory.class));
if (indexExecutor != null) {
bind(ListeningScheduledExecutorService.class)
.annotatedWith(IndexExecutor.class)
.toInstance(indexExecutor);
} else {
install(new IndexExecutorModule(threads));
}
}
@Provides
ChangeIndexer getChangeIndexer(
ChangeIndexer.Factory factory,
IndexCollection indexes) {
return factory.create(indexes);
}
private static class IndexExecutorModule extends AbstractModule {
private final int threads;
private IndexExecutorModule(int threads) {
this.threads = threads;
}
@Override
public void configure() {
} }
@Provides @Provides
@@ -82,11 +116,5 @@ public class IndexModule extends LifecycleModule {
} }
return MoreExecutors.listeningDecorator(executor); return MoreExecutors.listeningDecorator(executor);
} }
@Provides
ChangeIndexer getChangeIndexer(
ChangeIndexer.Factory factory,
IndexCollection indexes) {
return factory.create(indexes);
} }
} }