Skip to content

Instantly share code, notes, and snippets.

@Rajin9601
Last active July 20, 2018 06:59
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 Rajin9601/b01cee9a3973c0de3ce2c3fdac048947 to your computer and use it in GitHub Desktop.
Save Rajin9601/b01cee9a3973c0de3ce2c3fdac048947 to your computer and use it in GitHub Desktop.
Dagger Component Overriding test
fun test() {
val testAComponent = DaggerTestA_Component.builder()
.parentComponent(object: TestA.ParentComponent {
})
.build()
val testBComponent = DaggerTestB_Component.builder()
.parentComponent(testAComponent)
.build()
val testInjected = TestInjected()
testBComponent.inject(testInjected)
Log.i("DAVID", testInjected.str) // B
}
class TestA() {
@dagger.Module
abstract class Module {
@dagger.Module
companion object {
@Provides
@JvmStatic
internal fun str(): String {
return "A"
}
}
}
interface ParentComponent
@dagger.Component(modules = [Module::class], dependencies = [ParentComponent::class])
interface Component : TestB.ParentComponent {
@dagger.Component.Builder
interface Builder {
fun parentComponent(component: ParentComponent): Builder
fun build(): Component
}
}
}
class TestB() {
@dagger.Module
abstract class Module {
@dagger.Module
companion object {
@Provides
@JvmStatic
internal fun str(): String {
return "B"
}
}
}
interface ParentComponent
@dagger.Component(modules = [Module::class], dependencies = [ParentComponent::class])
interface Component {
fun inject(testInjected: TestInjected)
@dagger.Component.Builder
interface Builder {
fun parentComponent(component: ParentComponent): Builder
fun build(): Component
}
}
}
class TestInjected() {
@Inject lateinit var str: String
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment