public class JpaSagaRepository extends AbstractSagaRepository
EntityManager to persist the actual
saga in a backing
store.
After each operations that modified the backing store, EntityManager.flush() is invoked to
ensure the store contains the last modifications. To override this behavior, see | Constructor and Description |
|---|
JpaSagaRepository(EntityManagerProvider entityManagerProvider)
Initializes a Saga Repository with a
JavaSerializer. |
| Modifier and Type | Method and Description |
|---|---|
protected void |
deleteSaga(Saga saga)
Remove the given saga as well as all known association values pointing to it from the repository.
|
protected Set<String> |
findAssociatedSagaIdentifiers(Class<? extends Saga> type,
AssociationValue associationValue)
Finds the identifiers of the sagas of given
type associated with the given
associationValue. |
Saga |
load(String sagaId)
Loads a known Saga instance by its unique identifier.
|
protected void |
removeAssociationValue(AssociationValue associationValue,
String sagaType,
String sagaIdentifier)
Removes the association value that has been associated with Saga, identified with the given
sagaIdentifier. |
void |
setResourceInjector(ResourceInjector resourceInjector)
Sets the ResourceInjector to use to inject Saga instances with any (temporary) resources they might need.
|
void |
setSerializer(Serializer serializer)
Sets the Serializer instance to serialize Sagas with.
|
void |
setUseExplicitFlush(boolean useExplicitFlush)
Sets whether or not to do an explicit
EntityManager.flush() after each data modifying
operation on the backing storage. |
protected void |
storeAssociationValue(AssociationValue associationValue,
String sagaType,
String sagaIdentifier)
Store the given
associationValue, which has been associated with given sagaIdentifier. |
protected void |
storeSaga(Saga saga)
Stores a newly created Saga instance.
|
protected String |
typeOf(Class<? extends Saga> sagaClass)
Returns the type identifier to use for the given
sagaClass. |
protected void |
updateSaga(Saga saga)
Update a stored Saga, by replacing it with the given
saga instance. |
add, commit, findpublic JpaSagaRepository(EntityManagerProvider entityManagerProvider)
JavaSerializer.entityManagerProvider - The EntityManagerProvider providing the EntityManager instance for this repositorypublic Saga load(String sagaId)
SagaRepositorycommitted
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.sagaId - The unique identifier of the Saga to loadnull if no such saga existsprotected void removeAssociationValue(AssociationValue associationValue, String sagaType, String sagaIdentifier)
AbstractSagaRepositorysagaIdentifier.removeAssociationValue in class AbstractSagaRepositoryassociationValue - The value to remove as association value for the given sagasagaType - The type of the Saga to remove the association fromsagaIdentifier - The identifier of the Saga to remove the association fromprotected String typeOf(Class<? extends Saga> sagaClass)
AbstractSagaRepositorysagaClass. This information is typically provided
by the Serializer, if the repository stores serialized instances.typeOf in class AbstractSagaRepositorysagaClass - The type of saga to get the type identifier for.protected void storeAssociationValue(AssociationValue associationValue, String sagaType, String sagaIdentifier)
AbstractSagaRepositoryassociationValue, which has been associated with given sagaIdentifier.storeAssociationValue in class AbstractSagaRepositoryassociationValue - The association value to storesagaType - Type type of saga the association value belongs tosagaIdentifier - The saga related to the association valueprotected Set<String> findAssociatedSagaIdentifiers(Class<? extends Saga> type, AssociationValue associationValue)
AbstractSagaRepositorytype associated with the given
associationValue.findAssociatedSagaIdentifiers in class AbstractSagaRepositorytype - The type of saga to find identifiers forassociationValue - The value the saga must be associated withassociationValueprotected void deleteSaga(Saga saga)
AbstractSagaRepositorydeleteSaga in class AbstractSagaRepositorysaga - The saga instance to remove from the repositoryprotected void updateSaga(Saga saga)
AbstractSagaRepositorysaga instance.updateSaga in class AbstractSagaRepositorysaga - The saga that has been modified and needs to be updated in the storageprotected void storeSaga(Saga saga)
AbstractSagaRepositorystoreSaga in class AbstractSagaRepositorysaga - The newly created Saga instance to store.public void setResourceInjector(ResourceInjector resourceInjector)
resourceInjector - The resource injectorpublic void setSerializer(Serializer serializer)
serializer - the Serializer instance to serialize Sagas withpublic void setUseExplicitFlush(boolean useExplicitFlush)
EntityManager.flush() after each data modifying
operation on the backing storage. Default to trueuseExplicitFlush - true to force flush, false otherwise.Copyright © 2010-2014. All Rights Reserved.