package serializers.jackson;
import serializers.*;
import com.fasterxml.jackson.databind.*;
import data.media.MediaContent;
/**
* Codec(s) for serializing logical JSON content as JSON Array instead
* of the usual JSON Object; this condenses data size significantly and
* typically improves performance similarly.
*/
public class JacksonWithColumnsDatabind
{
private final static String STD_DESC = "uses positional (column) layout to eliminate use of names";
public static void registerAll(TestGroups groups)
{
registerJSON(groups);
registerSmile(groups);
registerCBOR(groups);
}
public static void registerCBOR(TestGroups groups)
{
ObjectMapper cborMapper = new ObjectMapper(new com.fasterxml.jackson.dataformat.cbor.CBORFactory());
cborMapper.setAnnotationIntrospector(new AsArrayIntrospector());
groups.media.add(JavaBuiltIn.mediaTransformer,
new StdJacksonDataBind<MediaContent>("cbor-col/jackson/databind", MediaContent.class, cborMapper),
new SerFeatures(SerFormat.JSON,SerGraph.FLAT_TREE,SerClass.ZERO_KNOWLEDGE,STD_DESC));
}
public static void registerJSON(TestGroups groups)
{
ObjectMapper jsonMapper = new ObjectMapper();
jsonMapper.setAnnotationIntrospector(new AsArrayIntrospector());
groups.media.add(JavaBuiltIn.mediaTransformer,
new StdJacksonDataBind<MediaContent>("json-col/jackson/databind", MediaContent.class, jsonMapper),
new SerFeatures(SerFormat.JSON,SerGraph.FLAT_TREE,SerClass.ZERO_KNOWLEDGE,STD_DESC));
}
public static void registerSmile(TestGroups groups)
{
ObjectMapper smileMapper = new ObjectMapper(new com.fasterxml.jackson.dataformat.smile.SmileFactory());
smileMapper.setAnnotationIntrospector(new AsArrayIntrospector());
groups.media.add(JavaBuiltIn.mediaTransformer,
new StdJacksonDataBind<MediaContent>("smile-col/jackson/databind", MediaContent.class, smileMapper),
new SerFeatures(SerFormat.JSON,SerGraph.FLAT_TREE,SerClass.ZERO_KNOWLEDGE,STD_DESC));
}
}