package serializers.protostuff; import static serializers.protostuff.Protostuff.MEDIA_CONTENT_SCHEMA; import com.dyuproject.protostuff.Schema; import com.dyuproject.protostuff.SmileIOUtil; import com.dyuproject.protostuff.runtime.RuntimeSchema; import serializers.*; import serializers.protostuff.media.MediaContent; /** * @author David Yu * @created Jan 18, 2011 */ public final class ProtostuffSmile { public static void register(TestGroups groups) { // manual (hand-coded schema, no autoboxing) groups.media.add(JavaBuiltIn.mediaTransformer, SmileManualMediaSerializer, new SerFeatures( SerFormat.BINARY, SerGraph.FLAT_TREE, SerClass.MANUAL_OPT, "smile + manual" ) ); // runtime (reflection) groups.media.add(JavaBuiltIn.mediaTransformer, SmileRuntimeMediaSerializer, new SerFeatures( SerFormat.BINARY, SerGraph.FLAT_TREE, SerClass.ZERO_KNOWLEDGE, "smile + reflection" ) ); /* protostuff has too many entries // generated code groups.media.add(Protostuff.mediaTransformer, SmileMediaSerializer, new SerFeatures( SerFormat.BINARY, SerGraph.FLAT_TREE, SerClass.CLASSES_KNOWN, "smile + generated code" ) ); */ } public static final Serializer<MediaContent> SmileMediaSerializer = new Serializer<MediaContent>() { public MediaContent deserialize(byte[] array) throws Exception { final MediaContent mc = new MediaContent(); SmileIOUtil.mergeFrom(array, mc, mc.cachedSchema(), false); return mc; } public byte[] serialize(MediaContent content) throws Exception { return SmileIOUtil.toByteArray(content, content.cachedSchema(), false); } public String getName() { return "smile/protostuff"; } }; public static final Serializer<data.media.MediaContent> SmileRuntimeMediaSerializer = new Serializer<data.media.MediaContent>() { final Schema<data.media.MediaContent> schema = RuntimeSchema.getSchema(data.media.MediaContent.class); public data.media.MediaContent deserialize(byte[] array) throws Exception { final data.media.MediaContent mc = new data.media.MediaContent(); SmileIOUtil.mergeFrom(array, mc, schema, false); return mc; } public byte[] serialize(data.media.MediaContent content) throws Exception { return SmileIOUtil.toByteArray(content, schema, false); } public String getName() { return "smile/protostuff-runtime"; } }; public static final Serializer<data.media.MediaContent> SmileManualMediaSerializer = new Serializer<data.media.MediaContent>() { public data.media.MediaContent deserialize(byte[] array) throws Exception { final data.media.MediaContent mc = new data.media.MediaContent(); SmileIOUtil.mergeFrom(array, mc, MEDIA_CONTENT_SCHEMA, false); return mc; } public byte[] serialize(data.media.MediaContent content) throws Exception { return SmileIOUtil.toByteArray(content, MEDIA_CONTENT_SCHEMA, false); } public String getName() { return "smile/protostuff-manual"; } }; }