I am starting using Toothpick and I need to migrage from Dagger code to Toothpick.
Well, I have next string at my project with Dagger.
@Provides
@Singleton
@Named(ProjectsRepository.DB)
ProjectsRepository provideProjectsDBRepository(ProjectsDBRepository repository) {
return repository;
}
and
@Provides
@Singleton
ProjectsService provideProjectsService(ProjectsServiceImpl serviceImplementation) {
return serviceImplementation;
}
and
@Inject
@Named(ProjectsRepository.SERVER)
ProjectsRepository mServerRepository;
@Inject
@Named(ProjectsRepository.DB)
ProjectsRepository mDBRepository;
@Inject
public ProjectsServiceImpl() {
}
It works fine (beside what I still can't understand what or who put repository/serviceImpelmentation to provide-methods) . Well, I am trying to do the same in Toothpick and do the next:
public RepositoryModule() {
bind(ProjectsRepository.class).withName(ProjectsServer.class).toInstance(new ProjectsServerRepository());
}
then
public ServiceModule() {
bind(ProjectsService.class).toInstance(new ProjectsServiceImpl());
}
and finally
@Inject
@ProjectsServer
ProjectsRepository mServerRepository;
@Inject
@ProjectsDatabase
ProjectsRepository mDBRepository;
@Inject
public ProjectsServiceImpl() {
}
and I have all Qualifiers above.
I install my modules in the Fragment class (Fragment Scope) next way
Scope currentScope = Toothpick.openScopes(ApplicationInstance.class,ProjectsFragment.class);
currentScope.installModules(
new ServiceModule(),
new RepositoryModule());
Toothpick.inject(this, currentScope);
But in the end I am getting NullPointerException that my ProjectsRepository is null, and I can't use method of it's instance.
Where am I making mistakes? Please help to "translate".