private void handleSagaMessage(final Object invokeParam) throws InvocationTargetException, IllegalAccessException {
Collection<SagaInstanceDescription> sagaDescriptions = sagaFactory.create(invokeParam);
if (sagaDescriptions.isEmpty()) {
LOG.warn("No saga found to handle message. {}", invokeParam);
} else {
ExecutionContext context = contextProvider.get();
for (SagaInstanceDescription sagaDescription : sagaDescriptions) {
Saga saga = sagaDescription.getSaga();
setSagaExecutionContext(saga, context);
invoker.invoke(saga, invokeParam);
updateStateStorage(sagaDescription);
if (context.dispatchingStopped()) {
LOG.debug("Handler dispatching stopped after invoking saga {}.", sagaDescription.getSaga().getClass().getSimpleName());
break;
}
}
}