in src/main/java/com/googlesource/gerrit/plugins/verifystatus/init/InitPlugin.java [129:173]
private Injector buildInjector(final Injector parent) {
List<Module> modules = new ArrayList<>();
modules.add(
new LifecycleModule() {
@Override
protected void configure() {
// For bootstrap we need to retrieve the ds type first
CiDataSourceTypeGuesser guesser =
parent
.createChildInjector(new CiDataSourceModule())
.getInstance(Key.get(CiDataSourceTypeGuesser.class));
// For the ds type we retrieve the underlying implementation
CiDataSourceType dst =
parent
.createChildInjector(new CiDataSourceModule())
.getInstance(
Key.get(
CiDataSourceType.class, Names.named(guesser.guessDataSourceType())));
// Bind the type to the retrieved instance
bind(CiDataSourceType.class).toInstance(dst);
bind(CiDataSourceProvider.Context.class)
.toInstance(CiDataSourceProvider.Context.MULTI_USER);
bind(Key.get(DataSource.class, Names.named("CiDb")))
.toProvider(CiDataSourceProvider.class)
.in(SINGLETON);
listener().to(CiDataSourceProvider.class);
}
});
modules.add(new CiDatabaseModule());
modules.add(
new AbstractModule() {
@Override
protected void configure() {
bind(SchemaVersion.class).to(SchemaVersion.C);
}
});
return parent.createChildInjector(modules);
}