package com.leanengine.server.rest.resteasy;
import com.google.appengine.api.datastore.DatastoreNeedIndexException;
import com.leanengine.server.LeanException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import java.util.logging.Logger;
@Provider
public class RestExceptionMapper implements ExceptionMapper<Throwable> {
private static final Logger log = Logger.getLogger(RestExceptionMapper.class.getName());
@Override
public Response toResponse(Throwable exception) {
log.severe(exception.getMessage());
if (exception instanceof LeanException) {
LeanException leanException = (LeanException) exception;
if (leanException.getErrorCode() >= 100) {
// client error
return Response.status(400).entity(new RestExceptionWrapper(leanException)).build();
} else {
// server error
return Response.status(500).entity(new RestExceptionWrapper(leanException)).build();
}
} else {
return Response.status(500).entity(new RestExceptionWrapper(exception)).build();
}
}
}