in dnq/src/main/kotlin/kotlinx/dnq/listener/ClassBasedXdListenersSerialization.kt [38:49]
override fun getListener(invocation: ListenerInvocation, changesMultiplexer: TransientChangesMultiplexer, session: TransientStoreSession): IEntityListener<*>? {
val typeId = invocation.entityId.typeId
val entityType = session.store.persistentStore.getEntityType(typeId)
var typeHierarchy: XdHierarchyNode? = XdModel[entityType]
?: throw IllegalStateException("Can't find XdEntityType for $entityType")
var listener: IEntityListener<*>? = null
while (typeHierarchy != null && listener == null) {
listener = changesMultiplexer.findListener(typeHierarchy, invocation.listenerKey)
typeHierarchy = typeHierarchy.parentNode
}
return listener
}