package serializers.jackson; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.dataformat.smile.*; import serializers.*; import data.media.MediaContent; public class JacksonSmileDatabind { public static void register(TestGroups groups) { // Jackson Smile defaults: share names, not values register(groups, true, false); } public static void register(TestGroups groups, boolean sharedNames, boolean sharedValues) { SmileFactory factory = new SmileFactory(); factory.configure(SmileGenerator.Feature.CHECK_SHARED_NAMES, sharedNames); factory.configure(SmileGenerator.Feature.CHECK_SHARED_STRING_VALUES, sharedValues); // no point in using enum names with binary format, so: ObjectMapper mapper = new ObjectMapper(factory); mapper.enable(SerializationFeature.WRITE_ENUMS_USING_INDEX); groups.media.add(JavaBuiltIn.mediaTransformer, new StdJacksonDataBind<MediaContent>("smile/jackson/databind", MediaContent.class, mapper), new SerFeatures( SerFormat.BINARY, SerGraph.FLAT_TREE, SerClass.ZERO_KNOWLEDGE, "" ) ); } }