use of io.spine.base.Event in project core-java by SpineEventEngine.
the class Aggregate method applyMessages.
/**
* Applies the passed event message or {@code Event} to the aggregate.
*
* @param eventMessages the event messages or events to apply
* @param envelope the envelope of the command which generated the events
* @see #ensureEventMessage(Message)
*/
private void applyMessages(Iterable<? extends Message> eventMessages, CommandEnvelope envelope) {
final List<? extends Message> messages = newArrayList(eventMessages);
final EventFactory eventFactory = createEventFactory(envelope, messages.size());
final List<Event> events = newArrayListWithCapacity(messages.size());
Version projectedEventVersion = getVersion();
for (Message eventOrMessage : messages) {
// Applying each message would increment the entity version.
// Therefore we should simulate this behaviour.
projectedEventVersion = Versions.increment(projectedEventVersion);
final Message eventMessage = ensureEventMessage(eventOrMessage);
final Event event;
if (eventOrMessage instanceof Event) {
event = importEvent((Event) eventOrMessage, envelope.getCommandContext(), projectedEventVersion);
} else {
event = eventFactory.createEvent(eventMessage, projectedEventVersion);
}
events.add(event);
}
play(events);
uncommittedEvents.addAll(events);
}
use of io.spine.base.Event in project core-java by SpineEventEngine.
the class BoundedContext method notify.
@SuppressWarnings("MethodDoesntCallSuperMethod")
/* We ignore method from super because the default implementation sets
unimplemented status. */
@Override
public void notify(IntegrationEvent integrationEvent, StreamObserver<Response> responseObserver) {
final Message eventMsg = unpack(integrationEvent.getMessage());
final boolean isValid = eventBus.validate(eventMsg, responseObserver);
if (isValid) {
final Event event = EventFactory.toEvent(integrationEvent);
eventBus.post(event);
}
}
Aggregations