Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.sg.rest.controllers; import com.sg.rest.dto.ServerException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.http.HttpStatus; import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; /** * * @author tarasev */ @ControllerAdvice public class RestErrorHandler { private static final Logger LOGGER = LoggerFactory.getLogger(RestErrorHandler.class); @ExceptionHandler(HttpRequestMethodNotSupportedException.class) @ResponseStatus(HttpStatus.NOT_FOUND) @ResponseBody public void processResourceNotFoundError(HttpRequestMethodNotSupportedException ex) { } @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody public ServerException processException(Exception ex) throws Exception { ServerException dto = new ServerException(); LOGGER.error("Rest exception occured " + dto.getEventRef().getId() + ": ", ex); if (AnnotationUtils.findAnnotation(ex.getClass(), ResponseStatus.class) != null) { throw ex; } return dto; } }