package gov.samhsa.consent2share.si; import java.io.PrintWriter; import java.io.StringWriter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.messaging.MessagingException; import org.springframework.stereotype.Component; import org.springframework.util.Assert; @Component public class NotificationExceptionHandler { @Autowired private NotificationPublisher notificationPublisher; public void handleError(Message<MessagingException> errorMessage) { Assert.notNull(errorMessage); MessagingException messagingExceptionPayload = errorMessage.getPayload(); Throwable ex = messagingExceptionPayload.getCause(); Object origMessagePayload = messagingExceptionPayload.getFailedMessage().getPayload(); StringBuilder detailsStringBuilder = new StringBuilder(); detailsStringBuilder.append("Error occured when handling consent signed/revoked message."); detailsStringBuilder.append("\n\n"); detailsStringBuilder.append("Original message payload:"); detailsStringBuilder.append("\n"); detailsStringBuilder.append(origMessagePayload.toString()); detailsStringBuilder.append("\n\n"); detailsStringBuilder.append("Error message:"); detailsStringBuilder.append("\n"); detailsStringBuilder.append(ex.getMessage()); detailsStringBuilder.append("\n\n"); StringWriter errors = new StringWriter(); ex.printStackTrace(new PrintWriter(errors)); detailsStringBuilder.append("Error stack trace:"); detailsStringBuilder.append("\n"); detailsStringBuilder.append(errors.toString()); Notification notification = new Notification(); notification.setDetails(detailsStringBuilder.toString()); notification.setSubject("Consent signed/revoked message hanlding error"); notificationPublisher.publish(notification); } }