/**
* Determines exception type, logs issue and returns appropriate http status with the exception message in the body.
*/
public static Response handleException(final HttpServletRequest httpRequest, final String requestBody,
final String requestMediaType, final SqlResourceException exception, RequestLogger requestLogger) {
Status status;
if (exception instanceof SqlResourceFactoryException) {
status = Status.NOT_FOUND;
} else if (exception instanceof InvalidRequestException) {
status = Status.BAD_REQUEST;
} else { // exception instanceof SqlResourceException
status = Status.INTERNAL_SERVER_ERROR;
}
if (requestLogger == null) {
requestLogger = Factory.getRequestLogger();
final HttpRequestAttributes httpAttribs = getHttpRequestAttributes(httpRequest, requestBody,
requestMediaType, requestMediaType);
requestLogger.setHttpRequestAttributes(httpAttribs);
}
requestLogger.log(status.getStatusCode(), exception);
return Response.status(status).entity(exception.getMessage()).type(MediaType.TEXT_PLAIN).build();
}