/** * Handles the given {@code event} in the scope of a Unit of Work. If handling the event results in an exception * the exception will be wrapped in a {@link FixtureExecutionException}. * * @param event The event message to handle */ protected void handleInSaga(EventMessage<?> event) { ensureSagaResourcesInitialized(); ResultMessage<?> resultMessage = DefaultUnitOfWork.startAndGet(event).executeWithResult(() -> { sagaManager.handle(event, Segment.ROOT_SEGMENT); return null; }); if (resultMessage.isExceptional()) { Throwable e = resultMessage.exceptionResult(); if (Error.class.isAssignableFrom(e.getClass())) { throw (Error) e; } throw new FixtureExecutionException("Exception occurred while handling an event", e); } }
return null; }); ResultMessage<?> resultMessage = unitOfWork.executeWithResult(chain::proceed); if (resultMessage.isExceptional()) { logger.error("Exception occurred during processing a deadline job [{}]",
private DeadlineMessage<?> consumeDeadline(DeadlineConsumer deadlineConsumer, ScheduledDeadlineInfo scheduledDeadlineInfo) { DefaultUnitOfWork<? extends DeadlineMessage<?>> uow = DefaultUnitOfWork.startAndGet(scheduledDeadlineInfo.deadlineMessage()); InterceptorChain chain = new DefaultInterceptorChain<>(uow, handlerInterceptors, deadlineMessage -> { deadlineConsumer.consume(scheduledDeadlineInfo.getDeadlineScope(), deadlineMessage); return deadlineMessage; }); ResultMessage<?> resultMessage = uow.executeWithResult(chain::proceed); if (resultMessage.isExceptional()) { Throwable e = resultMessage.exceptionResult(); throw new FixtureExecutionException("Exception occurred while handling the deadline", e); } return (DeadlineMessage<?>) resultMessage.getPayload(); } }
return null; }); ResultMessage<?> resultMessage = unitOfWork.executeWithResult(chain::proceed); if (resultMessage.isExceptional()) { logger.error("Exception occurred during processing a deadline job [{}]",