T
- the type of aggregate this handler handles commands forpublic class AggregateAnnotationCommandHandler<T> extends Object implements MessageHandler<CommandMessage<?>>, SupportedCommandNamesAware
CommandHandler
annotations on an aggregate. Those annotations may appear on methods, in which case a specific aggregate instance
needs to be targeted by the command, or on the constructor. The latter will create a new Aggregate instance, which
is then stored in the repository.Constructor and Description |
---|
AggregateAnnotationCommandHandler(Class<T> aggregateType,
Repository<T> repository)
Initializes an AnnotationCommandHandler based on the annotations on given
aggregateType , using the
given repository to add and load aggregate instances. |
AggregateAnnotationCommandHandler(Class<T> aggregateType,
Repository<T> repository,
CommandTargetResolver commandTargetResolver)
Initializes an AnnotationCommandHandler based on the annotations on given
aggregateType , using the
given repository to add and load aggregate instances and the default ParameterResolverFactory. |
AggregateAnnotationCommandHandler(Class<T> aggregateType,
Repository<T> repository,
CommandTargetResolver commandTargetResolver,
ParameterResolverFactory parameterResolverFactory)
Initializes an AnnotationCommandHandler based on the annotations on given
aggregateType , using the
given repository to add and load aggregate instances and the given
parameterResolverFactory . |
AggregateAnnotationCommandHandler(Class<T> aggregateType,
Repository<T> repository,
CommandTargetResolver commandTargetResolver,
ParameterResolverFactory parameterResolverFactory,
HandlerDefinition handlerDefinition)
Initializes an AnnotationCommandHandler based on the annotations on given
aggregateType , using the given
repository to add and load aggregate instances, the given parameterResolverFactory to resolve
parameters which are required by handlers and the given handlerDefinition used to create handlers. |
AggregateAnnotationCommandHandler(Repository<T> repository,
CommandTargetResolver commandTargetResolver,
AggregateModel<T> aggregateModel)
Initializes an AnnotationCommandHandler based on the annotations on given
aggregateType , using the
given repository to add and load aggregate instances and the given
parameterResolverFactory . |
Modifier and Type | Method and Description |
---|---|
Object |
handle(CommandMessage<?> commandMessage)
Handles the given
message . |
protected Object |
resolveReturnValue(CommandMessage<?> command,
Aggregate<T> createdAggregate)
Resolves the value to return when the given
command has created the given aggregate . |
Registration |
subscribe(CommandBus commandBus)
Subscribe this command handler to the given
commandBus . |
Set<String> |
supportedCommandNames()
Returns the set of command names this component supports.
|
public AggregateAnnotationCommandHandler(Class<T> aggregateType, Repository<T> repository)
aggregateType
, using the
given repository
to add and load aggregate instances.aggregateType
- The type of aggregaterepository
- The repository providing access to aggregate instancespublic AggregateAnnotationCommandHandler(Class<T> aggregateType, Repository<T> repository, CommandTargetResolver commandTargetResolver)
aggregateType
, using the
given repository
to add and load aggregate instances and the default ParameterResolverFactory.aggregateType
- The type of aggregaterepository
- The repository providing access to aggregate instancescommandTargetResolver
- The target resolution strategypublic AggregateAnnotationCommandHandler(Class<T> aggregateType, Repository<T> repository, CommandTargetResolver commandTargetResolver, ParameterResolverFactory parameterResolverFactory)
aggregateType
, using the
given repository
to add and load aggregate instances and the given
parameterResolverFactory
.aggregateType
- The type of aggregaterepository
- The repository providing access to aggregate instancescommandTargetResolver
- The target resolution strategyparameterResolverFactory
- The strategy for resolving parameter values for handler methodspublic AggregateAnnotationCommandHandler(Class<T> aggregateType, Repository<T> repository, CommandTargetResolver commandTargetResolver, ParameterResolverFactory parameterResolverFactory, HandlerDefinition handlerDefinition)
aggregateType
, using the given
repository
to add and load aggregate instances, the given parameterResolverFactory
to resolve
parameters which are required by handlers and the given handlerDefinition
used to create handlers.aggregateType
- The type of aggregaterepository
- The repository providing access to aggregate instancescommandTargetResolver
- The target resolution strategyparameterResolverFactory
- The strategy for resolving parameter values for handler methodshandlerDefinition
- The handler definition used to create concrete handlerspublic AggregateAnnotationCommandHandler(Repository<T> repository, CommandTargetResolver commandTargetResolver, AggregateModel<T> aggregateModel)
aggregateType
, using the
given repository
to add and load aggregate instances and the given
parameterResolverFactory
.repository
- The repository providing access to aggregate instancescommandTargetResolver
- The target resolution strategyaggregateModel
- The description of the command handling modelpublic Registration subscribe(CommandBus commandBus)
commandBus
. The command handler will be subscribed
for each of the supported commands.commandBus
- The command bus instance to subscribe topublic Object handle(CommandMessage<?> commandMessage) throws Exception
MessageHandler
message
.handle
in interface MessageHandler<CommandMessage<?>>
commandMessage
- The message to be processed.Exception
- any exception that occurs during message handlingprotected Object resolveReturnValue(CommandMessage<?> command, Aggregate<T> createdAggregate)
command
has created the given aggregate
.
This implementation returns the identifier of the created aggregate.
This method may be overridden to change the return value of this Command Handler
command
- The command being executedcreatedAggregate
- The aggregate that has been created as a result of the commandpublic Set<String> supportedCommandNames()
SupportedCommandNamesAware
supportedCommandNames
in interface SupportedCommandNamesAware
Copyright © 2010–2018. All rights reserved.