package serializers.json;
import java.io.*;
import serializers.*;
import data.media.MediaContent;
import flexjson.JSONDeserializer;
import flexjson.JSONSerializer;
/**
* This serializer uses Flexjson for data binding.
* http://flexjson.sourceforge.net
*/
public class FlexjsonDatabind
{
public static void register(TestGroups groups)
{
groups.media.add(JavaBuiltIn.mediaTransformer,
new GenericSerializer<MediaContent>("json/flexjson/databind", MediaContent.class),
new SerFeatures(
SerFormat.JSON,
SerGraph.FULL_GRAPH,
SerClass.ZERO_KNOWLEDGE,
""
)
);
}
static class GenericSerializer<T> extends Serializer<T>
{
private final String name;
private final Class<T> type;
public GenericSerializer(String name, Class<T> clazz)
{
this.name = name;
type = clazz;
}
public String getName()
{
return name;
}
public T deserialize(byte[] array) throws Exception
{
return new JSONDeserializer<T>().deserialize(new String(array, "UTF-8"), type);
}
public byte[] serialize(T data) throws IOException
{
String jsonString = new JSONSerializer().exclude("*.class").deepSerialize(data);
return jsonString.getBytes("UTF-8");
}
}
}