package eventDemo.libs.event import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentMap class EventStoreInMemory, ID : AggregateId> : EventStore { private val streams: ConcurrentMap> = ConcurrentHashMap() override fun getStream(aggregateId: ID): EventStream = streams.computeIfAbsent(aggregateId) { EventStreamInMemory() } override fun publish(event: E) = getStream(event.aggregateId).publish(event) }