Exemple #1
0
  @Override
  public ModelAndView resolveException(
      HttpServletRequest request,
      HttpServletResponse response,
      Object object,
      Exception exception) {
    if (request.getRequestURI().endsWith(".ajax")) {
      return ajaxFailure(request, response, exception);
    } else {
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
      QueryProblem queryProblem = QueryProblem.NONE;
      if (exception instanceof EuropeanaQueryException) {
        queryProblem = ((EuropeanaQueryException) exception).getFetchProblem();
      }
      Boolean debugMode = Boolean.valueOf(debug);
      String stackTrace = getStackTrace(exception);
      if (queryProblem == QueryProblem.NONE || queryProblem == QueryProblem.SOLR_UNREACHABLE) {

        if (!debugMode) { // don't send email in debugMode
          emailSender
              .create("exception")
              .setFrom(fromEmail)
              .setTo(toEmail)
              .setSubject(queryProblem.getFragment())
              .set("hostName", request.getServerName())
              .set("request", ControllerUtil.formatFullRequestUrl(request))
              .set("stackTrace", stackTrace)
              .set("cacheUrl", cacheUrl)
              .set("portalName", portalName)
              .set("portalTheme", portalTheme)
              .set("portalColor", portalColor)
              .set("portalDisplayName", portalDisplayName)
              .set("agent", request.getHeader("User-Agent"))
              .set("referer", request.getHeader("referer"))
              .send();
        } else {
          log.error(stackTrace);
        }
      }
      String errorMessage = MessageFormat.format("errorMessage={0}", queryProblem.toString());
      clickStreamLogger.logCustomUserAction(
          request, ClickStreamLogger.UserAction.EXCEPTION_CAUGHT, errorMessage);
      ModelAndView mav = new ModelAndView("exception");
      mav.addObject("debug", debugMode);
      mav.addObject("interfaceLanguage", ControllerUtil.getLocale(request));
      mav.addObject("cacheUrl", cacheUrl);
      mav.addObject("portalName", portalName);
      mav.addObject("portalTheme", portalTheme);
      mav.addObject("portalColor", portalColor);
      mav.addObject("portalDisplayName", portalDisplayName);
      mav.addObject("queryProblem", queryProblem);
      mav.addObject("exception", exception);
      mav.addObject("stackTrace", stackTrace);
      mav.addObject("includedMacros", includedMacros);
      return mav;
    }
  }