package edu.asu.spring.quadriga.exceptions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; /** * This class handles exceptions thrown in Controller classes. * * @author Julia Damerow * */ @ControllerAdvice public class QuadrigaExceptionHandler { private static final Logger logger = LoggerFactory.getLogger(QuadrigaExceptionHandler.class); /** * For now this method handles all exceptions thrown in Controller classes. * Eventually this method can be replaced by methods that handle individual * exceptions. * * @param ex * The exception thrown in a controller. * @return Information about the exception page. */ @ExceptionHandler(QuadrigaException.class) public ModelAndView handleNotImplementedEx(Exception ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("auth/notImplemented"); modelAndView.addObject("ex_name", ex.getClass().getName()); modelAndView.addObject("ex_message", ex.getMessage()); logger.error(ex.getMessage(), ex); return modelAndView; } @ExceptionHandler(QuadrigaStorageException.class) public ModelAndView handleSQLException(QuadrigaStorageException ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("auth/storageissue"); modelAndView.addObject("ex_name", ex.getClass().getName()); modelAndView.addObject("ex_message", ex.getMessage()); logger.error(ex.getMessage(), ex); return modelAndView; } @ExceptionHandler(value = { QuadrigaAccessException.class }) public ModelAndView handleUserAccessException(QuadrigaAccessException ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("auth/accessissue"); modelAndView.addObject("ex_name", ex.getClass().getName()); modelAndView.addObject("ex_message", ex.getMessage()); logger.error(ex.getMessage(), ex); return modelAndView; } @ExceptionHandler(value = { Quadriga404Exception.class }) public ModelAndView handle404Exception(Quadriga404Exception ex) { ModelAndView modelAndView = new ModelAndView("auth/404"); modelAndView.addObject("ex_msg", ex.getMessage()); logger.error(ex.getMessage(), ex); return modelAndView; } @ExceptionHandler(value = { IllegalObjectException.class }) public ModelAndView handleInvalidCastException(IllegalObjectException ioe) { ModelAndView modelAndView = new ModelAndView("auth/internalerror"); logger.error(ioe.getMessage(), ioe); return modelAndView; } }