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;
    }
  }
 @Override
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
     throws ServletException, EuropeanaQueryException {
   Language oldLocale = ControllerUtil.getLocale(request);
   String newLocale = request.getParameter(this.paramName);
   if (newLocale != null) {
     if (newLocale.contains("*")) {
       throw new EuropeanaQueryException(QueryProblem.UNABLE_TO_CHANGE_LANGUAGE.toString());
     }
     LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
     if (localeResolver == null) {
       throw new IllegalStateException(
           "No LocaleResolver found: not in a DispatcherServlet request?");
     }
     LocaleEditor localeEditor = new LocaleEditor();
     localeEditor.setAsText(newLocale);
     localeResolver.setLocale(request, response, (Locale) localeEditor.getValue());
     clickStreamLogger.logLanguageChange(
         request, oldLocale, ClickStreamLogger.UserAction.LANGUAGE_CHANGE);
   }
   // Proceed in any case.
   return true;
 }