org.axonframework.saga
Interface SagaRepository

All Known Implementing Classes:
AbstractSagaRepository, CachingSagaRepository, InMemorySagaRepository, JdbcSagaRepository, JpaSagaRepository, MongoSagaRepository, MongoSagaRepository

public interface SagaRepository

Interface towards the storage mechanism of Saga instances. Saga Repositories can find sagas either through the values they have been associated with (see AssociationValue) or via their unique identifier.

Since:
0.7
Author:
Allard Buijze

Method Summary
 void add(Saga saga)
          Registers a newly created Saga with the Repository.
 void commit(Saga saga)
          Commits the changes made to the Saga instance.
 Set<String> find(Class<? extends Saga> type, AssociationValue associationValue)
          Find saga instances of the given type that have been associated with the given associationValue.
 Saga load(String sagaIdentifier)
          Loads a known Saga instance by its unique identifier.
 

Method Detail

find

Set<String> find(Class<? extends Saga> type,
                 AssociationValue associationValue)
Find saga instances of the given type that have been associated with the given associationValue.

Returned Sagas must be committed after processing.

Parameters:
type - The type of Saga to return
associationValue - The value that the returned Sagas must be associated with
Returns:
A Set containing the found Saga instances. If none are found, an empty Set is returned. Will never return null.

load

Saga load(String sagaIdentifier)
Loads a known Saga instance by its unique identifier. Returned Sagas must be committed after processing. Due to the concurrent nature of Sagas, it is not unlikely for a Saga to have ceased to exist after it has been found based on associations. Therefore, a repository should return null in case a Saga doesn't exists, as opposed to throwing an exception.

Parameters:
sagaIdentifier - The unique identifier of the Saga to load
Returns:
The Saga instance, or null if no such saga exists

commit

void commit(Saga saga)
Commits the changes made to the Saga instance. At this point, the repository may release any resources kept for this saga. If the committed saga is marked inActive (Saga.isActive() returns false), the repository should delete the saga from underlying storage and remove all stored association values associated with that Saga.

Implementations *may* (temporarily) return a cached version of the Saga, which is marked inactive.

Parameters:
saga - The Saga instance to commit

add

void add(Saga saga)
Registers a newly created Saga with the Repository. Once a Saga instance has been added, it can be found using its association values or its unique identifier.

Note that if the added Saga is marked inActive (Saga.isActive() returns false), it is not stored.

Parameters:
saga - The Saga instances to add.


Copyright © 2010-2016. All Rights Reserved.