package fr.openwide.core.rest.jersey.util.provider;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import fr.openwide.core.rest.jersey.util.jackson.module.HibernateModule;
import fr.openwide.core.rest.jersey.util.jackson.serializer.HibernateBeanSerializerFactory;
@Provider
@Component("objectMapperProvider")
public class ObjectMapperProvider implements ContextResolver<ObjectMapper> {
private ObjectMapper objectMapper;
public ObjectMapperProvider() {
this.objectMapper = new ObjectMapper();
// la modification de la factory doit être la première opération
this.objectMapper.setSerializerFactory(new HibernateBeanSerializerFactory());
this.objectMapper.registerModule(new HibernateModule());
this.objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
this.objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
}
@Override
public ObjectMapper getContext(Class<?> type) {
return objectMapper;
}
}