Search in sources :

Example 31 with Event

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);
}
Also used : Events.getMessage(io.spine.base.Events.getMessage) EventApplierMethod.forEventMessage(io.spine.server.reflect.EventApplierMethod.forEventMessage) Message(com.google.protobuf.Message) Version(io.spine.base.Version) EventFactory(io.spine.server.command.EventFactory) Event(io.spine.base.Event)

Example 32 with Event

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);
    }
}
Also used : Message(com.google.protobuf.Message) IntegrationEvent(io.spine.server.integration.IntegrationEvent) Event(io.spine.base.Event)

Aggregations

Event (io.spine.base.Event)32 Test (org.junit.Test)14 Message (com.google.protobuf.Message)7 EventContext (io.spine.base.EventContext)4 IntegrationEvent (io.spine.server.integration.IntegrationEvent)4 StringValue (com.google.protobuf.StringValue)3 EventFactory (io.spine.server.command.EventFactory)3 TestEventFactory (io.spine.test.TestEventFactory)3 ProjectId (io.spine.test.projection.ProjectId)3 ProjectCreated (io.spine.test.projection.event.ProjectCreated)3 Duration (com.google.protobuf.Duration)2 Command (io.spine.base.Command)2 EventId (io.spine.base.EventId)2 EventStore (io.spine.server.event.EventStore)2 IntegrationEventContext (io.spine.server.integration.IntegrationEventContext)2 ImmutableCollection (com.google.common.collect.ImmutableCollection)1 Any (com.google.protobuf.Any)1 Timestamp (com.google.protobuf.Timestamp)1 CommandContext (io.spine.base.CommandContext)1 Events.getMessage (io.spine.base.Events.getMessage)1