@Override public SagaInstance create(Data sagaData) { return create(sagaData, Optional.empty()); }
@Override public SagaInstance create(Data sagaData) { return create(sagaData, Optional.empty()); }
@Override public SagaInstance create(Data data, Class targetClass, Object targetId) { return create(data, Optional.of(new LockTarget(targetClass, targetId).getTarget())); }
@Override public SagaInstance create(Data data, Class targetClass, Object targetId) { return create(data, Optional.of(new LockTarget(targetClass, targetId).getTarget())); }
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; }
private void startSaga() { when(sagaDefinition.start(initialSagaData)).thenReturn(makeFirstSagaActions()); when(sagaCommandProducer.sendCommands(anyString(), anyString(), anyList(), anyString())) .thenReturn(requestId1.asString()); doAnswer(this::assignSagaIdWhenSaved).when(sagaInstanceRepository).save(any(SagaInstance.class)); sagaInstance = sm.create(initialSagaData); SagaInstance expectedSagaInstanceAfterFirstStep = makeExpectedSagaInstanceAfterFirstStep(); assertSagaInstanceEquals(expectedSagaInstanceAfterFirstStep, sagaInstance); verify(sagaCommandProducer).sendCommands(sagaType, sagaId, Collections.singletonList(commandForParticipant1), sagaReplyChannel); verify(sagaInstanceRepository).save(any(SagaInstance.class)); verify(sagaInstanceRepository).update(argThat(sagaInstance -> sagaInstanceEquals(expectedSagaInstanceAfterFirstStep, sagaInstance))); assertSagaInstanceEquals(expectedSagaInstanceAfterFirstStep, sagaInstance); verifyNoMoreInteractions(sagaInstanceRepository, sagaCommandProducer); }