package com.airlock.iam.transactionapproval.infrastructure.mapper;

import ch.ergon.restal.jsonapi.document.error.ErrorData;
import com.airlock.iam.base.api.infrastructure.uri.ExternalUriInfo;
import com.airlock.iam.base.misc.message.MessageFormattingException;
import com.airlock.iam.common.infrastructure.exception.BaseExceptionMapper;
import com.airlock.iam.elog.api.ELogger;
import com.airlock.iam.elog.api.ELoggerFactory;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import jakarta.ws.rs.core.Response.Status;

@jakarta.ws.rs.ext.Provider
public class MessageFormattingExceptionMapper extends BaseExceptionMapper<MessageFormattingException> {
   protected static final ELogger LOG = ELoggerFactory.getLogger(MessageFormattingExceptionMapper.class);

   @Inject
   public MessageFormattingExceptionMapper(Provider<ExternalUriInfo> uriInfo) {
      super(Status.INTERNAL_SERVER_ERROR, uriInfo);
   }

   protected void log(MessageFormattingException exception, ErrorData data) {
      LOG.info("Failed to create transaction approval message: " + exception.getMessage());
   }

   protected boolean shouldLogStacktraceAsError(MessageFormattingException exception) {
      return false;
   }
}
