gcat/src/main/java/org/gcube/gcat/rest/GCatExceptionMapper.java

39 lines
1.1 KiB
Java
Raw Normal View History

package org.gcube.gcat.rest;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
/**
* @author Luca Frosini (ISTI - CNR)
*/
2019-09-16 14:48:18 +02:00
@Provider
2021-12-21 09:19:16 +01:00
public class GCatExceptionMapper implements ExceptionMapper<Exception> {
@Override
public Response toResponse(Exception exception) {
Status status = Status.INTERNAL_SERVER_ERROR;
String exceptionMessage = exception.getMessage();
try {
2019-09-16 14:48:18 +02:00
if(exception.getCause() != null) {
exceptionMessage = exception.getCause().getMessage();
}
2019-09-16 14:48:18 +02:00
} catch(Exception e) {
exceptionMessage = exception.getMessage();
}
MediaType mediaType = MediaType.TEXT_PLAIN_TYPE;
if(WebApplicationException.class.isAssignableFrom(exception.getClass())) {
Response gotResponse = ((WebApplicationException) exception).getResponse();
status = Status.fromStatusCode(gotResponse.getStatusInfo().getStatusCode());
}
return Response.status(status).entity(exceptionMessage).type(mediaType).build();
}
}