package org.jboss.resteasy.keystone.model;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonRootName;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import javax.ws.rs.core.Configurable;
import javax.ws.rs.ext.ContextResolver;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class Mappers
{
public static final ObjectMapper DEFAULT_MAPPER = new ObjectMapper();
public static final ObjectMapper WRAPPED_MAPPER = new ObjectMapper();
static
{
DEFAULT_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//DEFAULT_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
DEFAULT_MAPPER.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
WRAPPED_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//WRAPPED_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
WRAPPED_MAPPER.enable(SerializationFeature.WRAP_ROOT_VALUE);
WRAPPED_MAPPER.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
WRAPPED_MAPPER.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
}
public static void registerContextResolver(Configurable configurable)
{
configurable.register(new ContextResolver<ObjectMapper>()
{
public ObjectMapper getContext(Class<?> type)
{
return type.getAnnotation(JsonRootName.class) == null ? Mappers.DEFAULT_MAPPER : Mappers.WRAPPED_MAPPER;
}
});
}
}