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

import com.airlock.iam.base.api.infrastructure.uri.ExternalUriInfo;
import com.airlock.iam.base.infrastructure.error.GenericRestErrorCode;
import com.airlock.iam.base.infrastructure.mapper.ValidationToErrorMapper;
import com.airlock.iam.common.infrastructure.exceptions.ValidationException;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;

@jakarta.ws.rs.ext.Provider
public class ValidationExceptionMapper extends BaseExceptionMapper<ValidationException> {
   private final ValidationToErrorMapper errorMapper;

   @Inject
   public ValidationExceptionMapper(Provider<ExternalUriInfo> uriInfo, ValidationToErrorMapper errorMapper) {
      super(Status.BAD_REQUEST, GenericRestErrorCode.VALIDATION_FAILED, uriInfo);
      this.errorMapper = errorMapper;
   }

   public Response toResponse(ValidationException exception) {
      return this.errorMapper.mapToResponse(exception.getErrors());
   }
}
