Skip to content

Instantly share code, notes, and snippets.

@beigirad
Created July 24, 2020 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beigirad/d3ae3f2b906b8e1637193888ea7748ce to your computer and use it in GitHub Desktop.
Save beigirad/d3ae3f2b906b8e1637193888ea7748ce to your computer and use it in GitHub Desktop.
dagger component scope types
@Module
interface DataModule {
@Binds
fun bindSessionProvider(sessionProvider: SessionProviderImpl): SessionProvider
}
@Singleton
class SessionProviderImpl @Inject constructor(
private val application: Application
) : SessionProvider
public final class DaggerCoreComponent implements CoreComponent {
private final Application app;
private Provider<Application> appProvider;
private Provider<SessionProviderImpl> sessionProviderImplProvider;
private DaggerCoreComponent(Application appParam) {
this.app = appParam;
initialize(appParam);
}
@SuppressWarnings("unchecked")
private void initialize(final Application appParam) {
this.appProvider = InstanceFactory.create(appParam);
this.sessionProviderImplProvider = DoubleCheck.provider(SessionProviderImpl_Factory.create(appProvider));
}
private AuthenticationInterceptor getAuthenticationInterceptor() {
return NetworkModule_ProvideAuthInterceptorFactory.provideAuthInterceptor(sessionProviderImplProvider.get());}
private AuthenticationRepositoryImpl getAuthenticationRepositoryImpl() {
return new AuthenticationRepositoryImpl(getAuthenticationSourceProvider(), sessionProviderImplProvider.get());}
}
@Module
interface DataModule {
@Singleton
@Binds
fun bindSessionProvider(sessionProvider: SessionProviderImpl): SessionProvider
}
class SessionProviderImpl @Inject constructor(
private val application: Application
) : SessionProvider
public final class DaggerCoreComponent implements CoreComponent {
private final Application app;
private Provider<Application> appProvider;
private Provider<SessionProviderImpl> sessionProviderImplProvider;
private Provider<SessionProvider> bindSessionProvider;
private DaggerCoreComponent(Application appParam) {
this.app = appParam;
initialize(appParam);
}
@SuppressWarnings("unchecked")
private void initialize(final Application appParam) {
this.appProvider = InstanceFactory.create(appParam);
this.sessionProviderImplProvider = SessionProviderImpl_Factory.create(appProvider);
this.bindSessionProvider = DoubleCheck.provider((Provider) sessionProviderImplProvider);
}
private AuthenticationInterceptor getAuthenticationInterceptor() {
return NetworkModule_ProvideAuthInterceptorFactory.provideAuthInterceptor(bindSessionProvider.get());}
private AuthenticationRepositoryImpl getAuthenticationRepositoryImpl() {
return new AuthenticationRepositoryImpl(getAuthenticationSourceProvider(), bindSessionProvider.get());}
}
@Module
interface DataModule {
@Binds
fun bindSessionProvider(sessionProvider: SessionProviderImpl): SessionProvider
}
class SessionProviderImpl @Inject constructor(
private val application: Application
) : SessionProvider
public final class DaggerCoreComponent implements CoreComponent {
private final Application app;
private DaggerCoreComponent(Application appParam) {
this.app = appParam;
}
private SessionProviderImpl getSessionProviderImpl() {
return new SessionProviderImpl(app);}
private AuthenticationInterceptor getAuthenticationInterceptor() {
return NetworkModule_ProvideAuthInterceptorFactory.provideAuthInterceptor(getSessionProviderImpl());}
private AuthenticationRepositoryImpl getAuthenticationRepositoryImpl() {
return new AuthenticationRepositoryImpl(getAuthenticationSourceProvider(), getSessionProviderImpl());}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment