event_sourcing library

An API for Event Sourced Models. The model classes are stateful, but the events and snapshots are stateless, with the snapshots being created, converted to and from, and modified by the events via builder classes.

This allows moving the event cursor many times before having to build an snapshot, possibly allowing better performance and lower memory usage.

Classes

DoublyLinkedEventSourcedModel<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends UndoableEventSourcedEvent<S, B, E>>
An UndoableEventSourcedModel which uses an DoubleLinkedQueueEntry as the backing data structure.
DoublyLinkedEventSourcedModelCodec<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends UndoableEventSourcedEvent<S, B, E>>
An Codec which can encode and decode an DoublyLinkedEventSourcedModel.
EventSourcedEvent<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends EventSourcedEvent<S, B, E>>
An event that can mutate an EventSourcedModel by performing changes to an EventSourcedSnapshotBuilder forwards.
EventSourcedModel<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends EventSourcedEvent<S, B, E>>
An event sourced model which can add events, moving forward.
EventSourcedSnapshot<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends EventSourcedEvent<S, B, E>>
An snapshot of the current EventSourcedModel. It should be immutable, and the only way to change it is via an EventSourcedSnapshotBuilder.
EventSourcedSnapshotBuilder<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends EventSourcedEvent<S, B, E>>
An mutable Builder that can create an immutable EventSourcedSnapshot for an EventSourcedModel.
ModelUndoState
An class which contains the information about undoing at the current EventSourcedModel state. null at the fields means the operation is not supported by the EventSourcedModel in question.
SinglyLinkedEventSourcedModel<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends EventSourcedEvent<S, B, E>>
An EventSourcedModel which uses an LinkedList as the backing data structure.
SinglyLinkedEventSourcedModelCodec<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends EventSourcedEvent<S, B, E>>
An Codec which can encode and decode an SinglyLinkedEventSourcedModel.
TreeUndoableEventSourcedModel<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends UndoableEventSourcedEvent<S, B, E>>
An event sourced model which can add events, moving forward, move the event cursor backwards, moving backwards and creating subbranches when adding events while not on a tip.
UndoableEventSourcedEvent<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends UndoableEventSourcedEvent<S, B, E>>
An event that can mutate an EventSourcedModel by performing changes to an EventSourcedSnapshotBuilder both forwards and backwards.
UndoableEventSourcedModel<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends UndoableEventSourcedEvent<S, B, E>>
An event sourced model which can add events, moving forward and move the event cursor backwards, moving backwards.
UndoTreeEventSourcedModel<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends UndoableEventSourcedEvent<S, B, E>>
An TreeUndoableEventSourcedModel which uses an UndoTree as the backing data structure.
UndoTreeEventSourcedModelCodec<S extends EventSourcedSnapshot<S, B, E>, B extends EventSourcedSnapshotBuilder<S, B, E>, E extends UndoableEventSourcedEvent<S, B, E>>
An Codec which can encode and decode an UndoTreeEventSourcedModel.