com.instaclustr.jackson.JacksonModule Maven / Gradle / Ivy
package com.instaclustr.jackson;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Singleton;
public class JacksonModule extends AbstractModule {
@Singleton
@Provides
ObjectMapper provideObjectMapper(final GuiceJacksonHandlerInstantiator guiceJacksonHandlerInstantiator) {
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setHandlerInstantiator(guiceJacksonHandlerInstantiator);
objectMapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_ABSENT);
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
objectMapper.disable(SerializationFeature.FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS);
objectMapper.writerWithDefaultPrettyPrinter();
objectMapper.registerModule(new Jdk8Module());
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}
}