org.axonframework.saga.repository.inmemory
Class InMemorySagaRepository

java.lang.Object
  extended by org.axonframework.saga.repository.inmemory.InMemorySagaRepository
All Implemented Interfaces:
SagaRepository

public class InMemorySagaRepository
extends Object
implements SagaRepository

SagaRepository implementation that stores all Saga instances in memory.

Since:
0.7
Author:
Allard Buijze

Constructor Summary
InMemorySagaRepository()
           
 
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.
 int size()
          Returns the number of Sagas currently contained in this repository.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InMemorySagaRepository

public InMemorySagaRepository()
Method Detail

find

public Set<String> find(Class<? extends Saga> type,
                        AssociationValue associationValue)
Description copied from interface: SagaRepository
Find saga instances of the given type that have been associated with the given associationValue.

Returned Sagas must be committed after processing.

Specified by:
find in interface SagaRepository
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

public Saga load(String sagaIdentifier)
Description copied from interface: SagaRepository
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.

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

commit

public void commit(Saga saga)
Description copied from interface: SagaRepository
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.

Specified by:
commit in interface SagaRepository
Parameters:
saga - The Saga instance to commit

add

public void add(Saga saga)
Description copied from interface: SagaRepository
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.

Specified by:
add in interface SagaRepository
Parameters:
saga - The Saga instances to add.

size

public int size()
Returns the number of Sagas currently contained in this repository.

Returns:
the number of Sagas currently contained in this repository


Copyright © 2010-2016. All Rights Reserved.