@Override public RawSagaStateMachineAction getReplyHandler() { return (rawSagaData, reply) -> { possibleReplyHandler.ifPresent(handler -> handler.accept(data, reply)); if (stepsToExecute.isEmpty()) { return SagaActions.builder() .withUpdatedState(encodeState(SagaExecutionState.makeEndState())) .withIsEndState(true) .withIsCompensating(state.isCompensating()) .build(); } else { // do something return makeSagaActions(data, stepsToExecute, state, state.nextState(stepsToExecute.size())); } }; }
@Override public RawSagaStateMachineAction getReplyHandler() { return (rawSagaData, reply) -> { possibleReplyHandler.ifPresent(handler -> handler.accept(data, reply)); if (stepsToExecute.isEmpty()) { return SagaActions.builder() .withUpdatedState(encodeState(SagaExecutionState.makeEndState())) .withIsEndState(true) .withIsCompensating(state.isCompensating()) .build(); } else { // do something return makeSagaActions(data, stepsToExecute, state, state.nextState(stepsToExecute.size())); } }; }
private SagaActions makeSagaActions(final Data data, final StepsToExecute<Data> stepsToExecute, SagaExecutionState currentState, SagaExecutionState newState) { stepsToExecute.executeLocalSteps(data, currentState.isCompensating()); // TODO What to do if the above fails return SagaActions.builder() .withCommands(stepsToExecute.makeCommandsToSend(data, currentState.isCompensating())) .withUpdatedSagaData(data) .withUpdatedState(encodeState(newState)) .withIsEndState(newState.isEndState()) .withIsCompensating(currentState.isCompensating()) .build(); }
private SagaActions<TestSagaData> makeSecondSagaActions(boolean compensating) { return SagaActions.<TestSagaData>builder() .withCommand(commandForParticipant2) .withUpdatedState("state-B") .withUpdatedSagaData(sagaDataUpdatedByReplyHandler) .withIsEndState(true) .withIsCompensating(compensating) .build(); }
private SagaActions makeSagaActions(final Data data, final StepsToExecute<Data> stepsToExecute, SagaExecutionState currentState, SagaExecutionState newState) { stepsToExecute.executeLocalSteps(data, currentState.isCompensating()); // TODO What to do if the above fails return SagaActions.builder() .withCommands(stepsToExecute.makeCommandsToSend(data, currentState.isCompensating())) .withUpdatedSagaData(data) .withUpdatedState(encodeState(newState)) .withIsEndState(newState.isEndState()) .withIsCompensating(currentState.isCompensating()) .build(); }
private SagaActions<TestSagaData> makeFirstSagaActions() { return SagaActions.<TestSagaData>builder() .withUpdatedSagaData(sagaDataUpdatedByStartingHandler) .withCommand(commandForParticipant1).withUpdatedState("state-A").build(); }