- Improve email notification cases for unexpected exceptions.
This commit is contained in:
@@ -165,7 +165,7 @@ final public class NotificationService {
|
||||
final String errorReporterEmail = mailer.getErrorReporterEmail();
|
||||
if (errorReporterEmail != null && !errorReporterEmail.isEmpty()) {
|
||||
mailer.sendEmail(mailer.getServerSenderEmail(), errorReporterEmail, "[WiseMapping] Editor error from " + user.getEmail(), model,
|
||||
"editorErrorReport.vm");
|
||||
"errorNotification.vm");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
handleException(e);
|
||||
@@ -183,7 +183,24 @@ final public class NotificationService {
|
||||
final String errorReporterEmail = mailer.getErrorReporterEmail();
|
||||
if (errorReporterEmail != null && !errorReporterEmail.isEmpty()) {
|
||||
mailer.sendEmail(mailer.getServerSenderEmail(), errorReporterEmail, "[WiseMapping] Export error from " + user.getEmail(), model,
|
||||
"editorErrorReport.vm");
|
||||
"errorNotification.vm");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
handleException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void reportUnexpectedError(@NotNull Throwable exception, @Nullable User user, @NotNull String userAgent) {
|
||||
try {
|
||||
final Map<String, Object> model = new HashMap<String, Object>();
|
||||
model.put("user", user);
|
||||
model.put("errorMsg", stackTraceToString(exception));
|
||||
model.put("userAgent", userAgent);
|
||||
|
||||
final String errorReporterEmail = mailer.getErrorReporterEmail();
|
||||
if (errorReporterEmail != null && !errorReporterEmail.isEmpty()) {
|
||||
mailer.sendEmail(mailer.getServerSenderEmail(), errorReporterEmail, "[WiseMapping] Unexpected error from " + (user != null ? user.getEmail() : "anonymous"), model,
|
||||
"errorNotification.vm");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
handleException(e);
|
||||
|
@@ -0,0 +1,43 @@
|
||||
package com.wisemapping.mail;
|
||||
|
||||
import com.wisemapping.model.User;
|
||||
import com.wisemapping.security.Utils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class NotifyingExceptionResolver extends SimpleMappingExceptionResolver {
|
||||
|
||||
final private Logger logger = Logger.getLogger("com.wisemapping");
|
||||
private Set<String> exclude = new HashSet<String>();
|
||||
private NotificationService notificationService;
|
||||
|
||||
@Override
|
||||
protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
|
||||
if (!exclude.contains(ex.getClass().getName())) {
|
||||
logger.error("An Exception has occurred in the application", ex);
|
||||
sendNotification(ex, request);
|
||||
}
|
||||
|
||||
return super.doResolveException(request, response, handler, ex);
|
||||
}
|
||||
|
||||
private void sendNotification(@NotNull Exception ex, @NotNull HttpServletRequest request) {
|
||||
final User user = Utils.getUser();
|
||||
notificationService.reportUnexpectedError(ex, user, request.getHeader("User-Agent"));
|
||||
}
|
||||
|
||||
public void setExclude(final Set<String> exclude) {
|
||||
this.exclude = exclude;
|
||||
}
|
||||
|
||||
public void setNotificationService(NotificationService notificationService) {
|
||||
this.notificationService = notificationService;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user