package com.airlock.iam.common.infrastructure.exception;

import ch.ergon.restal.jsonapi.document.error.ErrorData;
import com.airlock.iam.base.api.infrastructure.uri.ExternalUriInfo;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.Response.Status;

@jakarta.ws.rs.ext.Provider
public final class WebApplicationExceptionMapper extends BaseExceptionMapper<WebApplicationException> {
   @Inject
   public WebApplicationExceptionMapper(Provider<ExternalUriInfo> uriInfo) {
      super(Status.INTERNAL_SERVER_ERROR, uriInfo);
   }

   protected void mapStatus(WebApplicationException exception, ErrorData data) {
      data.setStatus(exception.getResponse().getStatus());
   }

   protected boolean shouldLogStacktraceAsError(WebApplicationException exception) {
      return true;
   }
}
