public abstract class AbstractController {
protected final Logger logger = LoggerFactory.getLogger(getClass());
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public @ResponseBody ResponseEntity<ErrorMessageDto> handleAllExceptions(Exception ex) {
ErrorMessageDto result = new ErrorMessageDto();
if (ex instanceof UnAuthorityException) {
result.setMessage(ex.getMessage());
result.setStatus(401);
return new ResponseEntity<ErrorMessageDto>(result, HttpStatus.FORBIDDEN);
} else if (ex instanceof RunTimeException) {
result.setMessage(ex.getMessage());
result.setStatus(500);
return new ResponseEntity<ErrorMessageDto>(result, HttpStatus.INTERNAL_SERVER_ERROR);
} else {
logger.error(ex.getMessage(), ex);
Cat.logError(ex);
result.setMessage(ex.getMessage());
result.setStatus(500);
return new ResponseEntity<ErrorMessageDto>(result, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
public class ErrorMessageDto {
private int status;
private String message;
public ErrorMessageDto() {
}
public ErrorMessageDto(int status, String message) {
this.status = status;
this.message = message;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void setParam(int status, String message) {
this.status = status;
this.message = message;
}
}