@PostConstruct @SuppressWarnings({"unchecked"}) @Override public synchronized void subscribe() { for (final MethodMessageHandler commandHandler : inspector.getHandlers()) { CommandHandler<Object> handler = new CommandHandler<Object>() { @Override public Object handle(CommandMessage<Object> command, UnitOfWork unitOfWork) throws Throwable { T aggregate = loadAggregate(command); try { return commandHandler.invoke(aggregate, command); } catch (InvocationTargetException e) { throw e.getCause(); } } }; commandBus.subscribe(commandHandler.getPayloadType(), handler); registeredCommandHandlers.put(commandHandler.getPayloadType(), handler); } for (final ConstructorCommandMessageHandler<T> handler : inspector.getConstructorHandlers()) { commandBus.subscribe( handler.getPayloadType(), new AnnotatedConstructorCommandHandler(handler)); } }
@Override public Object handle(CommandMessage<Object> command, UnitOfWork unitOfWork) throws Throwable { try { repository.add(handler.invoke(null, command)); } catch (InvocationTargetException e) { throw e.getCause(); } return null; }