package serializers.protostuff;
import static serializers.protostuff.Protostuff.MEDIA_CONTENT_SCHEMA;
import com.dyuproject.protostuff.XmlIOUtil;
import com.dyuproject.protostuff.Schema;
import com.dyuproject.protostuff.runtime.RuntimeSchema;
import serializers.*;
import serializers.protostuff.media.MediaContent;
public final class ProtostuffXml
{
public static void register(TestGroups groups)
{
// manual (hand-coded schema, no autoboxing)
groups.media.add(JavaBuiltIn.mediaTransformer, XmlManualMediaSerializer,
new SerFeatures(
SerFormat.XML,
SerGraph.FLAT_TREE,
SerClass.MANUAL_OPT,
""
)
);
// runtime (reflection)
groups.media.add(JavaBuiltIn.mediaTransformer, XmlRuntimeMediaSerializer,
new SerFeatures(
SerFormat.XML,
SerGraph.FLAT_TREE,
SerClass.ZERO_KNOWLEDGE,
""
)
);
/* protostuff has too many entries
// generated code
groups.media.add(Protostuff.MediaTransformer, XmlMediaSerializer);*/
}
public static final Serializer<MediaContent> XmlMediaSerializer =
new Serializer<MediaContent>()
{
public MediaContent deserialize(byte[] array) throws Exception
{
MediaContent mc = new MediaContent();
XmlIOUtil.mergeFrom(array, mc, mc.cachedSchema());
return mc;
}
public byte[] serialize(MediaContent content) throws Exception
{
return XmlIOUtil.toByteArray(content, content.cachedSchema());
}
public String getName()
{
return "xml/protostuff";
}
};
public static final Serializer<data.media.MediaContent> XmlRuntimeMediaSerializer =
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
{
data.media.MediaContent mc = new data.media.MediaContent();
XmlIOUtil.mergeFrom(array, mc, schema);
return mc;
}
public byte[] serialize(data.media.MediaContent content) throws Exception
{
return XmlIOUtil.toByteArray(content, schema);
}
public String getName()
{
return "xml/protostuff-runtime";
}
};
public static final Serializer<data.media.MediaContent> XmlManualMediaSerializer =
new Serializer<data.media.MediaContent>()
{
public data.media.MediaContent deserialize(byte[] array) throws Exception
{
data.media.MediaContent mc = new data.media.MediaContent();
XmlIOUtil.mergeFrom(array, mc, MEDIA_CONTENT_SCHEMA);
return mc;
}
public byte[] serialize(data.media.MediaContent content) throws Exception
{
return XmlIOUtil.toByteArray(content, MEDIA_CONTENT_SCHEMA);
}
public String getName()
{
return "xml/protostuff-manual";
}
};
}