org.axonframework.eventstore.mongo
Interface StorageStrategy

All Known Implementing Classes:
DocumentPerCommitStorageStrategy, DocumentPerEventStorageStrategy

public interface StorageStrategy

Interface towards the mechanism that prescribes the structure in which events are stored in the Event Store. Events are provided in "commits", which represent a number of events generated by the same aggregate, inside a single Unit of Work. Implementations may choose to use this fact, or ignore it.

Since:
2.0
Author:
Allard Buijze

Method Summary
 com.mongodb.DBObject[] createDocuments(String type, Serializer eventSerializer, List<DomainEventMessage> messages)
          Generates the DBObject instances that need to be stored for a commit.
 void ensureIndexes(com.mongodb.DBCollection eventsCollection, com.mongodb.DBCollection snapshotsCollection)
          Ensure that the correct indexes are in place.
 List<DomainEventMessage> extractEventMessages(com.mongodb.DBObject entry, Object aggregateIdentifier, Serializer serializer, UpcasterChain upcasterChain, boolean skipUnknownTypes)
          Extracts the individual Event Messages from the given entry.
 com.mongodb.DBCursor findEvents(com.mongodb.DBCollection collection, MongoCriteria criteria)
          Find all events that match the given criteria in the given collection
 com.mongodb.DBCursor findEvents(com.mongodb.DBCollection collection, String aggregateType, String aggregateIdentifier, long firstSequenceNumber)
          Provides a cursor for access to all events for an aggregate with given aggregateType and aggregateIdentifier, with a sequence number equal or higher than the given firstSequenceNumber.
 com.mongodb.DBCursor findLastSnapshot(com.mongodb.DBCollection collection, String aggregateType, String aggregateIdentifier)
          Finds the entry containing the last snapshot event for an aggregate with given aggregateType and aggregateIdentifier in the given collection.
 

Method Detail

createDocuments

com.mongodb.DBObject[] createDocuments(String type,
                                       Serializer eventSerializer,
                                       List<DomainEventMessage> messages)
Generates the DBObject instances that need to be stored for a commit.

Parameters:
type - The aggregate's type identifier
eventSerializer - The serializer to serialize events with
messages - The messages contained in this commit
Returns:
an array of DBObject, representing the documents to store

extractEventMessages

List<DomainEventMessage> extractEventMessages(com.mongodb.DBObject entry,
                                              Object aggregateIdentifier,
                                              Serializer serializer,
                                              UpcasterChain upcasterChain,
                                              boolean skipUnknownTypes)
Extracts the individual Event Messages from the given entry. The aggregateIdentifier is passed to allow messages to contain the actual object, instead of its serialized form. The serializer and upcasterChain should be used to deserialize and upcast messages before returning them.

Parameters:
entry - The entry containing information of a stored commit
aggregateIdentifier - The aggregate identifier used to query events
serializer - The serializer to deserialize events with
upcasterChain - The upcaster chain to upcast stored events with
skipUnknownTypes - Whether unknown event types should be skipped
Returns:
a list of DomainEventMessage contained in the entry

findEvents

com.mongodb.DBCursor findEvents(com.mongodb.DBCollection collection,
                                String aggregateType,
                                String aggregateIdentifier,
                                long firstSequenceNumber)
Provides a cursor for access to all events for an aggregate with given aggregateType and aggregateIdentifier, with a sequence number equal or higher than the given firstSequenceNumber. The returned documents should be ordered chronologically (typically by using the sequence number).

Each DBObject document returned as result of this cursor will be passed to extractEventMessages(com.mongodb.DBObject, java.lang.Object, org.axonframework.serializer.Serializer, org.axonframework.upcasting.UpcasterChain, boolean) in order to retrieve individual DomainEventMessages.

Parameters:
collection - The collection to
aggregateType - The type identifier of the aggregate to query
aggregateIdentifier - The identifier of the aggregate to query
firstSequenceNumber - The sequence number of the first event to return
Returns:
a Query object that represent a query for events of an aggregate

findEvents

com.mongodb.DBCursor findEvents(com.mongodb.DBCollection collection,
                                MongoCriteria criteria)
Find all events that match the given criteria in the given collection

Parameters:
collection - The collection to search for events
criteria - The criteria to match against the events
Returns:
a cursor for the documents representing matched events

findLastSnapshot

com.mongodb.DBCursor findLastSnapshot(com.mongodb.DBCollection collection,
                                      String aggregateType,
                                      String aggregateIdentifier)
Finds the entry containing the last snapshot event for an aggregate with given aggregateType and aggregateIdentifier in the given collection. For each result returned by the Cursor, an invocation to extractEventMessages(com.mongodb.DBObject, java.lang.Object, org.axonframework.serializer.Serializer, org.axonframework.upcasting.UpcasterChain, boolean) will be used to extract the actual DomainEventMessages.

Parameters:
collection - The collection to find the last snapshot event in
aggregateType - The type identifier of the aggregate to find a snapshot for
aggregateIdentifier - The identifier of the aggregate to find a snapshot for
Returns:
a cursor providing access to the entries found

ensureIndexes

void ensureIndexes(com.mongodb.DBCollection eventsCollection,
                   com.mongodb.DBCollection snapshotsCollection)
Ensure that the correct indexes are in place.

Parameters:
eventsCollection - The collection containing the documents representing commits and events.
snapshotsCollection - The collection containing the document representing snapshots


Copyright © 2010-2016. All Rights Reserved.