Search in sources :

Example 51 with Event

use of io.spine.core.Event in project core-java by SpineEventEngine.

the class StorageRecord method create.

public static AggregateEventRecord create(Timestamp timestamp) {
    final Message eventMessage = Sample.messageOfType(AggProjectCreated.class);
    final Event event = eventFactory.createEvent(eventMessage);
    final AggregateEventRecord.Builder builder = AggregateEventRecord.newBuilder().setTimestamp(timestamp).setEvent(event);
    return builder.build();
}
Also used : AggregateEventRecord(io.spine.server.aggregate.AggregateEventRecord) Message(com.google.protobuf.Message) Event(io.spine.core.Event)

Example 52 with Event

use of io.spine.core.Event in project core-java by SpineEventEngine.

the class StorageRecords method sequenceFor.

/**
 * Returns several records sorted by timestamp ascending.
 *
 * @param start the timestamp of first record.
 */
public static List<AggregateEventRecord> sequenceFor(ProjectId id, Timestamp start) {
    final Duration delta = seconds(10);
    final Timestamp timestamp2 = add(start, delta);
    final Timestamp timestamp3 = add(timestamp2, delta);
    final TestEventFactory eventFactory = newInstance(Given.class);
    final Event e1 = eventFactory.createEvent(projectCreated(id, Given.projectName(id)), null, start);
    final AggregateEventRecord record1 = StorageRecord.create(start, e1);
    final Event e2 = eventFactory.createEvent(taskAdded(id), null, timestamp2);
    final AggregateEventRecord record2 = StorageRecord.create(timestamp2, e2);
    final Event e3 = eventFactory.createEvent(Given.EventMessage.projectStarted(id), null, timestamp3);
    final AggregateEventRecord record3 = StorageRecord.create(timestamp3, e3);
    return newArrayList(record1, record2, record3);
}
Also used : AggregateEventRecord(io.spine.server.aggregate.AggregateEventRecord) TestEventFactory(io.spine.server.command.TestEventFactory) Event(io.spine.core.Event) Duration(com.google.protobuf.Duration) Timestamp(com.google.protobuf.Timestamp)

Example 53 with Event

use of io.spine.core.Event in project core-java by SpineEventEngine.

the class BoundedContext method notify.

/**
 * Sends an integration event to this {@code BoundedContext}.
 */
@Experimental
@Override
public void notify(IntegrationEvent integrationEvent, StreamObserver<Ack> observer) {
    final Event event = EventFactory.toEvent(integrationEvent);
    eventBus.post(event, observer);
}
Also used : Event(io.spine.core.Event) IntegrationEvent(io.spine.server.integration.IntegrationEvent) Experimental(io.spine.annotation.Experimental)

Example 54 with Event

use of io.spine.core.Event in project core-java by SpineEventEngine.

the class Aggregate method ensureEventMessage.

/**
 * Ensures that an event applier gets an instance of an event message,
 * not {@link Event}.
 *
 * <p>Instances of {@code Event} may be passed to an applier during
 * importing events or processing integration events. This may happen because
 * corresponding command handling method returned either {@code List<Event>}
 * or {@code Event}.
 *
 * @param  eventOrMsg an event message or {@code Event}
 * @return the passed instance or an event message extracted from the passed
 *         {@code Event} instance
 */
private static Message ensureEventMessage(Message eventOrMsg) {
    final Message eventMsg;
    if (eventOrMsg instanceof Event) {
        final Event event = (Event) eventOrMsg;
        eventMsg = getMessage(event);
    } else {
        eventMsg = eventOrMsg;
    }
    return eventMsg;
}
Also used : Events.getMessage(io.spine.core.Events.getMessage) Message(com.google.protobuf.Message) Event(io.spine.core.Event)

Example 55 with Event

use of io.spine.core.Event in project core-java by SpineEventEngine.

the class AggregateRepository method store.

/**
 * Stores the passed aggregate and commits its uncommitted events.
 *
 * @param aggregate an instance to store
 */
@Override
protected void store(A aggregate) {
    final I id = aggregate.getId();
    final int snapshotTrigger = getSnapshotTrigger();
    final AggregateStorage<I> storage = aggregateStorage();
    int eventCount = storage.readEventCountAfterLastSnapshot(id);
    final Iterable<Event> uncommittedEvents = aggregate.getUncommittedEvents();
    for (Event event : uncommittedEvents) {
        storage.writeEvent(id, event);
        ++eventCount;
        if (eventCount >= snapshotTrigger) {
            final Snapshot snapshot = aggregate.toShapshot();
            aggregate.clearRecentHistory();
            storage.writeSnapshot(id, snapshot);
            eventCount = 0;
        }
    }
    aggregate.commitEvents();
    storage.writeEventCountAfterLastSnapshot(id, eventCount);
    if (aggregate.lifecycleFlagsChanged()) {
        storage.writeLifecycleFlags(aggregate.getId(), aggregate.getLifecycleFlags());
    }
}
Also used : SPI(io.spine.annotation.SPI) Event(io.spine.core.Event)

Aggregations

Event (io.spine.core.Event)115 Test (org.junit.Test)75 Command (io.spine.core.Command)19 EventContext (io.spine.core.EventContext)12 BoundedContext (io.spine.server.BoundedContext)12 GivenEvent (io.spine.server.event.given.EventBusTestEnv.GivenEvent)12 Version (io.spine.core.Version)10 TestEventFactory (io.spine.server.command.TestEventFactory)10 Message (com.google.protobuf.Message)9 EventEnvelope (io.spine.core.EventEnvelope)9 InMemoryTransportFactory (io.spine.server.integration.memory.InMemoryTransportFactory)9 Timestamp (com.google.protobuf.Timestamp)6 Ack (io.spine.core.Ack)6 TenantId (io.spine.core.TenantId)6 Error (io.spine.base.Error)5 AggregateMessageDispatcher.dispatchCommand (io.spine.server.aggregate.AggregateMessageDispatcher.dispatchCommand)5 AggregateTestEnv.newTenantId (io.spine.server.aggregate.given.aggregate.AggregateTestEnv.newTenantId)5 StringValue (com.google.protobuf.StringValue)4 GivenEvent (io.spine.core.given.GivenEvent)4 Duration (com.google.protobuf.Duration)3