create EventStreamInMemoryTest
This commit is contained in:
@@ -7,5 +7,5 @@ class EventStoreInMemory<E : Event<ID>, ID : AggregateId> : EventStore<E, ID> {
|
||||
private val streams: ConcurrentMap<ID, EventStream<E>> = ConcurrentHashMap()
|
||||
|
||||
override fun getStream(aggregateId: ID): EventStream<E> =
|
||||
streams.computeIfAbsent(aggregateId) { EventStreamInMemory() }
|
||||
streams.computeIfAbsent(aggregateId) { EventStreamInMemory(aggregateId) }
|
||||
}
|
||||
|
||||
@@ -9,11 +9,18 @@ import java.util.concurrent.ConcurrentLinkedQueue
|
||||
*
|
||||
* All methods are implemented.
|
||||
*/
|
||||
class EventStreamInMemory<E : Event<*>> : EventStream<E> {
|
||||
class EventStreamInMemory<E : Event<ID>, ID : AggregateId>(
|
||||
val aggregateId: ID,
|
||||
) : EventStream<E> {
|
||||
private val logger = KotlinLogging.logger {}
|
||||
private val events: Queue<E> = ConcurrentLinkedQueue()
|
||||
|
||||
override fun publish(event: E) {
|
||||
if (event.aggregateId != aggregateId) {
|
||||
throw EventStreamPublishException(
|
||||
"You cannot publish this event in this stream because it has a different aggregateId!",
|
||||
)
|
||||
}
|
||||
if (events.none { it.eventId == event.eventId }) {
|
||||
events.add(event)
|
||||
logger.info { "Event published" }
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package eventDemo.libs.event
|
||||
|
||||
class EventStreamPublishException(
|
||||
override val message: String,
|
||||
) : Exception(message)
|
||||
Reference in New Issue
Block a user