package com.trywildcard.pair.util;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.trywildcard.pair.model.AbstractCard;
import com.trywildcard.pair.model.Card;
/**
* Contains a configured Jackson ObjectMapper instance in order to support JSON serialization.
* Classes implementing the <code>AbstractCard</code> interface will reference this serializer in the writeAsJsonString() method.
*/
public class CardSerializer {
private final ObjectMapper mapper = new ObjectMapper();
public CardSerializer(){
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.PropertyNamingStrategyBase.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
}
public String writeCard(Card card) throws JsonProcessingException{
return mapper.writeValueAsString(card);
}
}