ArenMg/src/main/java/fr/lirmm/aren/ws/ObjectMapperProvider.java
2021-04-16 11:34:24 +03:00

65 lines
1.8 KiB
Java

package fr.lirmm.aren.ws;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
/**
* JAX-RS provider for {@link ObjectMapper}.
*
* @author Florent Descroix {@literal <florentdescroix@posteo.net>}
*/
@Provider
public class ObjectMapperProvider implements ContextResolver<ObjectMapper> {
private final ObjectMapper mapper;
/**
*
*/
public ObjectMapperProvider() {
mapper = createObjectMapper();
}
/**
*
* @param type
* @return
*/
@Override
public ObjectMapper getContext(Class<?> type) {
return mapper;
}
private static ObjectMapper createObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());
mapper.registerModule(new JavaTimeModule());
mapper.registerModule(new ParameterNamesModule());
mapper.registerModule(new Hibernate5Module());
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
mapper.setSerializationInclusion(Include.NON_NULL);
return mapper;
}
}