This facilitates using reflection to extract accurate API metadata.
For example
@EventuateCommandHandler(subscriberId="customerCommandDispatcher", channel="customerService")
public ReserveCreditResult reserveCredit(CommandMessage<ReserveCreditCommand> cm) {
ReserveCreditCommand cmd = cm.getCommand();
try {
customerService.reserveCredit(cmd.customerId(), cmd.orderId(), cmd.orderTotal());
return new CustomerCreditReserved();
} catch (CustomerNotFoundException e) {
return new CustomerNotFound();
} catch (CustomerCreditLimitExceededException e) {
return new CustomerCreditLimitExceeded();
}
}