View Javadoc
1   package de.dlr.shepard.common.exceptions;
2   
3   import io.quarkus.logging.Log;
4   import jakarta.ws.rs.WebApplicationException;
5   import jakarta.ws.rs.core.MediaType;
6   import jakarta.ws.rs.core.Response;
7   import jakarta.ws.rs.core.Response.Status;
8   import jakarta.ws.rs.ext.ExceptionMapper;
9   import jakarta.ws.rs.ext.Provider;
10  
11  @Provider
12  public class ShepardExceptionMapper implements ExceptionMapper<Exception> {
13  
14    @Override
15    public Response toResponse(Exception exception) {
16      int status = Status.INTERNAL_SERVER_ERROR.getStatusCode();
17      if (exception instanceof WebApplicationException webException) {
18        status = webException.getResponse().getStatus();
19      }
20  
21      Log.error(exception.getMessage(), exception);
22  
23      return Response.status(status)
24        .entity(new ApiError(status, exception.getClass().getSimpleName(), exception.getMessage()))
25        .type(MediaType.APPLICATION_JSON)
26        .build();
27    }
28  }