io.sirix.access.json.JsonLocalDatabaseModule Maven / Gradle / Ivy
package io.sirix.access.json;
import dagger.Module;
import dagger.Provides;
import io.sirix.access.*;
import io.sirix.api.Database;
import io.sirix.api.ResourceSession;
import io.sirix.api.TransactionManager;
import io.sirix.api.json.JsonResourceSession;
import io.sirix.dagger.DatabaseScope;
import javax.inject.Provider;
/**
* The module for {@link JsonLocalDatabaseComponent}.
*
* @author Joao Sousa
*/
@Module(includes = LocalDatabaseModule.class)
public interface JsonLocalDatabaseModule {
@DatabaseScope
@Provides
static ResourceSessionFactory resourceManagerFactory(
final Provider subComponentBuilder) {
return new SubComponentResourceSessionFactory<>(subComponentBuilder);
}
@DatabaseScope
@Provides
static ResourceStore jsonResourceManager(
final PathBasedPool> allResourceManagers,
final ResourceSessionFactory resourceSessionFactory) {
return new ResourceStoreImpl<>(allResourceManagers, resourceSessionFactory);
}
@DatabaseScope
@Provides
static Database jsonDatabase(final TransactionManager transactionManager,
final DatabaseConfiguration dbConfig, final PathBasedPool> sessions,
final ResourceStore resourceStore, final WriteLocksRegistry writeLocks,
final PathBasedPool> resourceManagers) {
return new LocalDatabase<>(transactionManager,
dbConfig,
sessions,
resourceStore,
writeLocks,
resourceManagers);
}
}