package com.linkedin.thirdeye.datalayer.util; import org.apache.tomcat.jdbc.pool.DataSource; import com.google.inject.Guice; import com.google.inject.Injector; import com.linkedin.thirdeye.datalayer.bao.jdbc.AbstractManagerImpl; import com.linkedin.thirdeye.datalayer.dao.GenericPojoDao; import com.linkedin.thirdeye.datalayer.dto.AbstractDTO; import com.linkedin.thirdeye.datalayer.util.DaoProviderUtil.DataSourceModule; public class ManagerProvider { Injector injector; DataSource dataSource; private GenericPojoDao genericPojoDao; public ManagerProvider(DataSource dataSource) { this.dataSource = dataSource; DataSourceModule dataSourceModule = new DataSourceModule(dataSource); injector = Guice.createInjector(dataSourceModule); genericPojoDao = injector.getInstance(GenericPojoDao.class); } public <T extends AbstractManagerImpl<? extends AbstractDTO>> T getInstance(Class<T> c) { T manager = injector.getInstance(c); manager.setGenericPojoDao(genericPojoDao); return manager; } }