public <T> SagaUnitTestSupport saga(Saga<T> saga, T sagaData) {
SagaInstanceRepository sagaInstanceRepository = new SagaInstanceRepository() {
private SagaInstance sagaInstance;
@Override
public void save(SagaInstance sagaInstance) {
sagaInstance.setId(SAGA_ID);
this.sagaInstance = sagaInstance;
}
@Override
public SagaInstance find(String sagaType, String sagaId) {
return sagaInstance;
}
@Override
public void update(SagaInstance sagaInstance) {
this.sagaInstance = sagaInstance;
}
};
CommandProducerImpl commandProducer = new CommandProducerImpl((destination, message) -> {
String id = genId();
message.getHeaders().put(Message.ID, id);
sentCommands.add(new MessageWithDestination(destination, message));
}, new DefaultChannelMapping(Collections.emptyMap()));
SagaCommandProducer sagaCommandProducer = new SagaCommandProducer(commandProducer);
MessageConsumer messageConsumer = null;
SagaLockManager sagaLockManager = null;
sagaManager = new SagaManagerImpl<>(saga, sagaInstanceRepository, commandProducer, messageConsumer, new DefaultChannelMapping(Collections.emptyMap()),
sagaLockManager, sagaCommandProducer);
sagaManager.create(sagaData);
return this;
}