package ser;
import org.nustaq.serialization.*;
import java.io.IOException;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
/**
* Created by ruedi on 05/08/15.
*/
public class Git80 {
public static void main(final String[] args)
throws Exception
{
URI uri = URI.create("http://example.com");
URL url = uri.toURL();
FSTConfiguration config = FSTConfiguration.createDefaultConfiguration();
config.setShareReferences(false);
//config.registerSerializer(URI.class, new FSTURISerializer(), true);
//config.registerSerializer(URL.class, new FSTURLSerializer(), true);
test(config, uri);
test(config, url);
}
private static void test(FSTConfiguration config, Serializable object)
throws IOException, ClassNotFoundException
{
FSTObjectOutput output = config.getObjectOutput();
output.writeObject(object);
byte[] serialized = output.getCopyOfWrittenBuffer();
FSTObjectInput input = config.getObjectInput(serialized);
Object result = input.readObject();
System.out.println("equals: " + object.equals(result));
}
public static abstract class FSTStringBasedImmutableObjectSerializer<Type> extends FSTBasicObjectSerializer
{
@Override
public void writeObject(FSTObjectOutput out, Object toWrite, FSTClazzInfo clzInfo, FSTClazzInfo.FSTFieldInfo referencedBy, int streamPosition)
throws IOException
{
String s = toWrite.toString();
out.writeStringUTF(s);
}
@Override
public boolean alwaysCopy()
{
return true;
}
@Override
public Object instantiate(Class objectClass, FSTObjectInput in, FSTClazzInfo serializationInfo, FSTClazzInfo.FSTFieldInfo referencee, int streamPosition)
throws Exception
{
String s = in.readStringUTF();
Object res = instantiate(s);
return res;
}
protected abstract Type instantiate(String string)
throws Exception;
}
public static class FSTURISerializer extends FSTStringBasedImmutableObjectSerializer<URI>
{
@Override
protected URI instantiate(String string)
throws URISyntaxException
{
return new URI(string);
}
}
public static class FSTURLSerializer extends FSTStringBasedImmutableObjectSerializer<URL>
{
@Override
protected URL instantiate(String string)
throws MalformedURLException
{
return new URL(string);
}
}
}