T - The type that this aggregate storespublic abstract class LockingRepository<T,A extends Aggregate<T>> extends AbstractRepository<T,LockAwareAggregate<T,A>>
| Modifier | Constructor and Description |
|---|---|
protected |
LockingRepository(AggregateModel<T> aggregateModel)
Initialize a repository with a pessimistic locking strategy, using the given
aggregateModel, describing
the structure of the aggregate. |
protected |
LockingRepository(AggregateModel<T> aggregateModel,
LockFactory lockFactory)
Initialize the repository with the given
lockFactory and aggregateModel |
protected |
LockingRepository(Class<T> aggregateType)
Initialize a repository with a pessimistic locking strategy.
|
protected |
LockingRepository(Class<T> aggregateType,
LockFactory lockFactory)
Initialize the repository with the given
lockFactory. |
protected |
LockingRepository(Class<T> aggregateType,
LockFactory lockFactory,
ParameterResolverFactory parameterResolverFactory)
Initialize the repository with the given
lockFactory and parameterResolverFactory. |
protected |
LockingRepository(Class<T> aggregateType,
LockFactory lockFactory,
ParameterResolverFactory parameterResolverFactory,
HandlerDefinition handlerDefinition)
Initialize the repository with the given
lockFactory, parameterResolverFactory and handlerDefinition. |
protected |
LockingRepository(Class<T> aggregateType,
ParameterResolverFactory parameterResolverFactory)
Initialize a repository with a pessimistic locking strategy and a parameter resolver factory.
|
protected |
LockingRepository(Class<T> aggregateType,
ParameterResolverFactory parameterResolverFactory,
HandlerDefinition handlerDefinition)
Initialize a repository with a pessimistic locking strategy and a parameter resolver factory.
|
| Modifier and Type | Method and Description |
|---|---|
protected LockAwareAggregate<T,A> |
doCreateNew(Callable<T> factoryMethod)
Creates a new aggregate instance using the given
factoryMethod. |
protected abstract A |
doCreateNewForLock(Callable<T> factoryMethod)
Creates a new aggregate instance using the given
factoryMethod. |
protected void |
doDelete(LockAwareAggregate<T,A> aggregate)
Verifies whether all locks are valid and delegates to
doDeleteWithLock(Aggregate) to perform actual deleting. |
protected abstract void |
doDeleteWithLock(A aggregate)
Perform the actual deleting of the aggregate.
|
protected LockAwareAggregate<T,A> |
doLoad(String aggregateIdentifier,
Long expectedVersion)
Perform the actual loading of an aggregate.
|
protected abstract A |
doLoadWithLock(String aggregateIdentifier,
Long expectedVersion)
Loads the aggregate with the given aggregateIdentifier.
|
protected void |
doSave(LockAwareAggregate<T,A> aggregate)
Verifies whether all locks are valid and delegates to
doSaveWithLock(Aggregate) to perform actual storage. |
protected abstract void |
doSaveWithLock(A aggregate)
Perform the actual saving of the aggregate.
|
protected void |
prepareForCommit(LockAwareAggregate<T,A> aggregate)
Register handlers with the current Unit of Work that save or delete the given
aggregate when
the Unit of Work is committed. |
aggregateModel, canResolve, getAggregateType, load, load, managedAggregates, newInstance, postDelete, postSave, reportIllegalState, send, validateOnLoadprotected LockingRepository(Class<T> aggregateType)
aggregateType - The type of aggregate stored in this repositoryprotected LockingRepository(AggregateModel<T> aggregateModel)
aggregateModel, describing
the structure of the aggregate.aggregateModel - The model describing the structure of the aggregateprotected LockingRepository(Class<T> aggregateType, ParameterResolverFactory parameterResolverFactory)
aggregateType - The type of aggregate stored in this repositoryparameterResolverFactory - The parameter resolver factory used to resolve parameters of annotated handlersprotected LockingRepository(Class<T> aggregateType, ParameterResolverFactory parameterResolverFactory, HandlerDefinition handlerDefinition)
aggregateType - The type of aggregate stored in this repositoryparameterResolverFactory - The parameter resolver factory used to resolve parameters of annotated handlershandlerDefinition - The handler definition used to create concrete handlersprotected LockingRepository(Class<T> aggregateType, LockFactory lockFactory)
lockFactory.aggregateType - The type of aggregate stored in this repositorylockFactory - the lock factory to useprotected LockingRepository(AggregateModel<T> aggregateModel, LockFactory lockFactory)
lockFactory and aggregateModelaggregateModel - The model describing the structure of the aggregatelockFactory - the lock factory to useprotected LockingRepository(Class<T> aggregateType, LockFactory lockFactory, ParameterResolverFactory parameterResolverFactory)
lockFactory and parameterResolverFactory.aggregateType - The type of aggregate stored in this repositorylockFactory - The lock factory to useparameterResolverFactory - The parameter resolver factory used to resolve parameters of annotated handlersprotected LockingRepository(Class<T> aggregateType, LockFactory lockFactory, ParameterResolverFactory parameterResolverFactory, HandlerDefinition handlerDefinition)
lockFactory, parameterResolverFactory and handlerDefinition.aggregateType - The type of aggregate stored in this repositorylockFactory - The lock factory to useparameterResolverFactory - The parameter resolver factory used to resolve parameters of annotated handlershandlerDefinition - The handler definition used to create concrete handlersprotected LockAwareAggregate<T,A> doCreateNew(Callable<T> factoryMethod) throws Exception
AbstractRepositoryfactoryMethod. Implementations should assume that this
method is only called if a UnitOfWork is currently active.doCreateNew in class AbstractRepository<T,LockAwareAggregate<T,A extends Aggregate<T>>>factoryMethod - The method to create the aggregate's root instanceException - when the factoryMethod throws an exceptionprotected abstract A doCreateNewForLock(Callable<T> factoryMethod) throws Exception
factoryMethod. Implementations should assume that this
method is only called if a UnitOfWork is currently active.factoryMethod - The method to create the aggregate's root instanceException - when the factoryMethod throws an exceptionprotected LockAwareAggregate<T,A> doLoad(String aggregateIdentifier, Long expectedVersion)
doLoad in class AbstractRepository<T,LockAwareAggregate<T,A extends Aggregate<T>>>aggregateIdentifier - the identifier of the aggregate to loadexpectedVersion - The expected version of the aggregateAggregateNotFoundException - if aggregate with given id cannot be foundprotected void prepareForCommit(LockAwareAggregate<T,A> aggregate)
AbstractRepositoryaggregate when
the Unit of Work is committed.prepareForCommit in class AbstractRepository<T,LockAwareAggregate<T,A extends Aggregate<T>>>aggregate - The Aggregate to save or delete when the Unit of Work is committedprotected void doSave(LockAwareAggregate<T,A> aggregate)
doSaveWithLock(Aggregate) to perform actual storage.doSave in class AbstractRepository<T,LockAwareAggregate<T,A extends Aggregate<T>>>aggregate - the aggregate to storeprotected final void doDelete(LockAwareAggregate<T,A> aggregate)
doDeleteWithLock(Aggregate) to perform actual deleting.doDelete in class AbstractRepository<T,LockAwareAggregate<T,A extends Aggregate<T>>>aggregate - the aggregate to deleteprotected abstract void doSaveWithLock(A aggregate)
aggregate - the aggregate to storeprotected abstract void doDeleteWithLock(A aggregate)
aggregate - the aggregate to deleteprotected abstract A doLoadWithLock(String aggregateIdentifier, Long expectedVersion)
aggregateIdentifier - the identifier of the aggregate to loadexpectedVersion - The expected version of the aggregate to loadAggregateNotFoundException - if the aggregate with given identifier does not existCopyright © 2010–2018. All rights reserved.