Distinguish implicit components in dump

This commit is contained in:
Ilya Ryzhenkov
2015-07-20 19:20:39 +03:00
committed by Pavel V. Talanov
parent 41500c916b
commit e12e67468f
2 changed files with 11 additions and 8 deletions
@@ -115,14 +115,9 @@ public abstract class SingletonDescriptor(val container: ComponentContainer) : C
get() = true
}
public abstract class SingletonComponentDescriptor(container: ComponentContainer, val klass: Class<*>) : SingletonDescriptor(container) {
override fun toString(): String = "Singleton: ${klass.getSimpleName()}"
public override fun getRegistrations(): Iterable<Type> = klass.getInfo().registrations
}
public class SingletonTypeComponentDescriptor(container: ComponentContainer, klass: Class<*>) : SingletonComponentDescriptor(container, klass) {
public open class SingletonTypeComponentDescriptor(container: ComponentContainer, val klass: Class<*>) : SingletonDescriptor(container) {
override fun createInstance(context: ValueResolveContext): Any = createInstanceOf(klass, context)
public override fun getRegistrations(): Iterable<Type> = klass.getInfo().registrations
private fun createInstanceOf(klass: Class<*>, context: ValueResolveContext): Any {
val binding = klass.bindToConstructor(context)
@@ -145,4 +140,12 @@ public class SingletonTypeComponentDescriptor(container: ComponentContainer, kla
val classInfo = klass.getInfo()
return classInfo.constructorInfo?.parameters.orEmpty() + classInfo.setterInfos.flatMap { it.parameters }
}
override fun toString(): String = "Singleton: ${klass.getSimpleName()}"
}
class ImplicitSingletonTypeComponentDescriptor(container: ComponentContainer, klass: Class<*>) : SingletonTypeComponentDescriptor(container, klass) {
override fun toString(): String {
return "Implicit: ${klass.getSimpleName()}"
}
}
@@ -161,7 +161,7 @@ public class ComponentStorage(val myId: String) : ValueResolver {
continue
if (!Modifier.isAbstract(rawType.getModifiers()) && !rawType.isPrimitive()) {
val implicitDescriptor = SingletonTypeComponentDescriptor(context.container, rawType)
val implicitDescriptor = ImplicitSingletonTypeComponentDescriptor(context.container, rawType)
adhocDescriptors.add(implicitDescriptor)
collectAdhocComponents(context, implicitDescriptor, visitedTypes, adhocDescriptors)
}