|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface UnitOfWork
This class represents a UnitOfWork in which modifications are made to aggregates. A typical UnitOfWork scope is the execution of a command. A UnitOfWork may be used to prevent individual events from being published before a number of aggregates has been processed. It also allows repositories to manage resources, such as locks, over an entire transaction. Locks, for example, will only be released when the UnitOfWork is either committed or rolled back.
The current UnitOfWork can be obtained usingCurrentUnitOfWork.get()
.
Method Summary | ||
---|---|---|
void |
attachInheritedResources(UnitOfWork inheritingUnitOfWork)
Attach all inherited resources to the given unitOfWork . |
|
void |
attachResource(String name,
Object resource)
Attaches the given resource to this Unit of Work under the given name . |
|
void |
attachResource(String name,
Object resource,
boolean inherited)
Attaches the given resource to this Unit of Work under the given name . |
|
void |
commit()
Commits the UnitOfWork. |
|
|
getResource(String name)
Returns the resource previously attached under given name , or null if no such resource
is available. |
|
boolean |
isStarted()
Indicates whether this UnitOfWork is started. |
|
boolean |
isTransactional()
Indicates whether this UnitOfWork is bound to a transaction. |
|
void |
publishEvent(EventMessage<?> event,
EventBus eventBus)
Request to publish the given event on the given eventBus . |
|
|
registerAggregate(T aggregateRoot,
EventBus eventBus,
SaveAggregateCallback<T> saveAggregateCallback)
Register an aggregate with this UnitOfWork. |
|
void |
registerListener(UnitOfWorkListener listener)
Register a listener that listens to state changes in this UnitOfWork. |
|
void |
rollback()
Clear the UnitOfWork of any buffered changes. |
|
void |
rollback(Throwable cause)
Clear the UnitOfWork of any buffered changes. |
|
void |
start()
Starts the current unit of work, preparing it for aggregate registration. |
Method Detail |
---|
void commit()
IllegalStateException
- if the UnitOfWork wasn't startedvoid rollback()
UnitOfWorkListener
s are notified.
If the rollback is a result of an exception, consider using rollback(Throwable)
instead.
void rollback(Throwable cause)
UnitOfWorkListener
s are notified.
cause
- The cause of the rollback. May be null
.
IllegalStateException
- if the UnitOfWork wasn't startedvoid start()
boolean isStarted()
start()
method has been called,
and
if the UnitOfWork has not been committed or rolled back.
true
if this UnitOfWork is started, false
otherwise.boolean isTransactional()
true
if this unit of work is bound to a transaction, otherwise false
void registerListener(UnitOfWorkListener listener)
listener
- The listener to notify when the UnitOfWork's state changes.<T extends AggregateRoot> T registerAggregate(T aggregateRoot, EventBus eventBus, SaveAggregateCallback<T> saveAggregateCallback)
saveAggregateCallback
is ignored.
T
- the type of aggregate to registeraggregateRoot
- The aggregate root to register in the UnitOfWorkeventBus
- The event bus on which Events generated by this aggregate must be publishedsaveAggregateCallback
- The callback that is invoked when the UnitOfWork wants to store the registered
aggregate
IllegalStateException
- if this Unit Of Work does not support registrations of aggregates with identical
type and identifiervoid publishEvent(EventMessage<?> event, EventBus eventBus)
event
on the given eventBus
. The UnitOfWork may either
publish immediately, or buffer the events until the UnitOfWork is committed.
event
- The event to be published on the event buseventBus
- The event bus on which to publish the eventvoid attachResource(String name, Object resource)
resource
to this Unit of Work under the given name
. The attached
resource is not inherited by any nested Unit of Work (see attachResource(String, Object, boolean)
.
If a resource was already attached under this name, it is overwritten.
By convention, resources should be attached using the fully Qualified name of their type (or main interface).
For example, a JDBC Connection should be attached using the name "java.sql.Connection". When there is a
requirement to distinguish between different resources of the same type, their name may differ from this
convention.
name
- The name under which to attach the resourceresource
- The resource to attachvoid attachResource(String name, Object resource, boolean inherited)
resource
to this Unit of Work under the given name
. The attached
resource is inherited
as indicated. Inherited resources are automatically attached to a nested
Unit of Work.
If a resource was already attached under this name, it is overwritten.
By convention, resources should be attached using the fully Qualified name of their type (or main interface).
For example, a JDBC Connection should be attached using the name "java.sql.Connection". When there is a
requirement to distinguish between different resources of the same type, their name may differ from this
convention.
name
- The name under which to attach the resourceresource
- The resource to attachinherited
- Whether or not the resource may be inherited by a nested Unit of Work<T> T getResource(String name)
name
, or null
if no such resource
is available.
T
- The type of resourcename
- The name under which the resource was attached
name
, or null
if no such resource is
available.void attachInheritedResources(UnitOfWork inheritingUnitOfWork)
unitOfWork
.
inheritingUnitOfWork
- the Unit of Work inheriting the resources from this instance.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |