Reputation: 60081
I have my Dagger 2 Qualifier defined
@Qualifier
@MustBeDocumented
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
annotation class TrackerQualifier(val value: TrackerType)
enum class TrackerType {
INTERNAL,
EXTERNAL
}
And it works well, with
@Provides
@TrackerQualifier(TrackerType.INTERNAL)
@Singleton
UsageTracker providesInternalTracker(InternalTracker analyticsTracker) {
return new UsageTracker(analyticsTracker);
}
@Provides
@TrackerQualifier(TrackerType.EXTERNAL)
@Singleton
UsageTracking providesExternalTracker(ExternalTracker eventTracker) {
return eventTracker;
}
However, if I like to send it though to another injected module.
@Provides
fun provideCommonImage(
imageEngine: ImageEngine,
externalUsageTracking: UsageTracking) =
CommonImage(imageEngine, externalUsageTracking)
It will compile fail, as it doesn't know is the externalUsageTracking: UsageTracking
above is INTERNAL
or EXTERNAL
. How could I annotate it to the parameter?
Upvotes: 1
Views: 902
Reputation: 36
try to explicit the qualifier.
@Provides
fun provideCommonImage(
imageEngine: ImageEngine,
@TrackerQualifier(TrackerType.EXTERNAL) tracker: UsageTracker) =
CommonImage(imageEngine, tracker)
Upvotes: 2