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

import com.airlock.iam.base.api.domain.model.exception.FailureException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;

public final class IamJsonSerialiser {
   private static final ObjectMapper MAPPER = JacksonConfigurator.createObjectMapper();

   public static String toJson(Map<String, Object> map) {
      try {
         return MAPPER.writeValueAsString(map);
      } catch (JsonProcessingException e) {
         throw new FailureException("Cannot serialize map: " + e.getMessage(), e);
      }
   }

   public static Map<String, Object> fromJson(String json) {
      try {
         return (Map<String, Object>)MAPPER.readValue(json, Map.class);
      } catch (JsonProcessingException e) {
         throw new FailureException("Cannot deserialize JSON: " + e.getMessage(), e);
      }
   }

   private IamJsonSerialiser() {
   }
}
