content: package alien4cloud.dao;
  
  import java.beans.IntrospectionException;
  import java.io.IOException;
  import java.util.Locale;
  
  import com.fasterxml.jackson.core.Version;
  import com.fasterxml.jackson.databind.ObjectMapper;
  import com.fasterxml.jackson.databind.module.SimpleModule;
  
  import alien4cloud.json.deserializer.PropertyConstraintDeserializer;
  import alien4cloud.json.serializer.BoundSerializer;
  import org.alien4cloud.tosca.model.definitions.PropertyConstraint;
  import alien4cloud.utils.jackson.ConditionalAttributes;
  import lombok.extern.slf4j.Slf4j;
  
  @Slf4j
  public class ElasticSearchMapper extends ObjectMapper {
      private static final long serialVersionUID = 1L;
  
      private ElasticSearchMapper() {
          super();
          this._serializationConfig = this._serializationConfig.withAttribute(BoundSerializer.BOUND_SERIALIZER_AS_NUMBER, "true");
          this._serializationConfig = this._serializationConfig.withAttribute(ConditionalAttributes.ES, "true");
          this._serializationConfig = this._serializationConfig.withAttribute(ConditionalAttributes.ES_1_2, "true");
          this._deserializationConfig = this._deserializationConfig.withAttribute(ConditionalAttributes.ES, "true");
          this._deserializationConfig = this._deserializationConfig.withAttribute(ConditionalAttributes.ES_1_2, "true");
      }
  
      public static ElasticSearchMapper getInstance() {
          ElasticSearchMapper elasticSearchMapper = new ElasticSearchMapper();
          SimpleModule module = new SimpleModule("PropDeser", new Version(1, 0, 0, null, null, null));
          try {
              module.addDeserializer(PropertyConstraint.class, new PropertyConstraintDeserializer());
          } catch (ClassNotFoundException | IOException | IntrospectionException e) {
              log.warn("The property constraint deserialialisation failed");
          }
          elasticSearchMapper.registerModule(module);
          return elasticSearchMapper;
      }
  }
  