All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.blazar.data.BlazarDaoModule Maven / Gradle / Ivy

package com.hubspot.blazar.data;

import javax.inject.Singleton;

import org.skife.jdbi.v2.DBI;

import com.codahale.metrics.MetricRegistry;
import com.google.inject.AbstractModule;
import com.google.inject.Binder;
import com.google.inject.Provides;
import com.google.inject.Scopes;
import com.hubspot.blazar.data.dao.BranchDao;
import com.hubspot.blazar.data.dao.DependenciesDao;
import com.hubspot.blazar.data.dao.MalformedFileDao;
import com.hubspot.blazar.data.dao.ModuleBuildDao;
import com.hubspot.blazar.data.dao.ModuleDao;
import com.hubspot.blazar.data.dao.RepositoryBuildDao;
import com.hubspot.blazar.data.dao.InstantMessageConfigurationDao;
import com.hubspot.blazar.data.dao.StateDao;
import com.hubspot.guice.transactional.DataSourceLocator;
import com.hubspot.guice.transactional.TransactionalDataSource;
import com.hubspot.guice.transactional.TransactionalModule;
import com.hubspot.guice.transactional.impl.DefaultDataSourceLocator;
import io.dropwizard.db.DataSourceFactory;
import io.dropwizard.db.ManagedDataSource;

public class BlazarDaoModule extends AbstractModule {

  @Override
  protected void configure() {
    install(new TransactionalModule());

    bind(DataSourceLocator.class).to(DefaultDataSourceLocator.class).in(Scopes.SINGLETON);
    bind(DBI.class).toProvider(DBIProvider.class).in(Scopes.SINGLETON);

    bindDao(binder(), BranchDao.class);
    bindDao(binder(), ModuleDao.class);
    bindDao(binder(), StateDao.class);
    bindDao(binder(), RepositoryBuildDao.class);
    bindDao(binder(), ModuleBuildDao.class);
    bindDao(binder(), DependenciesDao.class);
    bindDao(binder(), MalformedFileDao.class);
    bindDao(binder(), InstantMessageConfigurationDao.class);
  }

  private static  void bindDao(Binder binder, Class type) {
    binder.bind(type).toProvider(new DaoProvider<>(type)).in(Scopes.SINGLETON);
  }

  @Provides
  @Singleton
  public ManagedDataSource providesManagedDataSource(DataSourceFactory dataSourceFactory,
                                                     MetricRegistry metricRegistry) throws ClassNotFoundException {
    return dataSourceFactory.build(metricRegistry, "db");
  }

  @Provides
  @Singleton
  public TransactionalDataSource providesTransactionalDataSource(ManagedDataSource managedDataSource) {
    return new TransactionalDataSource(managedDataSource);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy