private void handleAggregateInstanceEvent(String sagaType, String sagaId, Message message, String aggregateType, String aggregateId, String eventType) {
System.out.println("Got handleAggregateInstanceEvent: " + message + ", type=" + sagaType + ", instance=" + sagaId);
SagaInstanceData<Data> sagaInstanceAndData = sagaInstanceRepository.findWithData(sagaType, sagaId);
SagaInstance sagaInstance = sagaInstanceAndData.getSagaInstance();
Data sagaData = sagaInstanceAndData.getSagaData();
String currentState = sagaInstance.getStateName();
logger.info("Current state={}", currentState);
Optional<SagaEventHandler<Data>> eventHandler = getStateDefinition().findEventHandler(saga, currentState, sagaData, aggregateType, Long.parseLong(aggregateId), eventType);
if (!eventHandler.isPresent()) {
logger.error("No event handler for: {}", message);
return;
}
logger.info("Invoking event handler for {}", message);
SagaActions<Data> actions = eventHandler.get().getAction().apply(sagaData, new DomainEventEnvelopeImpl<>(null, null, null, null, null));
sagaInstance.setSerializedSagaData(SagaDataSerde.serializeSagaData(sagaData));
sagaInstanceRepository.update(sagaInstance);
}