package ser;
import static org.junit.Assert.*;
import java.io.IOException;
import org.junit.Test;
import org.nustaq.serialization.FSTBasicObjectSerializer;
import org.nustaq.serialization.FSTClazzInfo;
import org.nustaq.serialization.FSTClazzInfo.FSTFieldInfo;
import org.nustaq.serialization.FSTConfiguration;
import org.nustaq.serialization.FSTObjectInput;
import org.nustaq.serialization.FSTObjectOutput;
// contributed by rdicroce
public class Bug34 {
@Test
public void testCustomSerializer() throws Exception {
FSTConfiguration FST = FSTConfiguration.createDefaultConfiguration();
//FST.setForceSerializable(true);
FST.registerSerializer(Bug34.NonSerializableClass.class, new Serializer(), false);
FSTObjectOutput out = FST.getObjectOutput();
out.writeObject(new Bug34.NonSerializableClass());
FSTObjectInput in = FST.getObjectInput(out.getCopyOfWrittenBuffer());
assertEquals(NonSerializableClass.class, in.readObject().getClass());
}
private static class Serializer extends FSTBasicObjectSerializer {
@Override
public void writeObject(FSTObjectOutput out, Object toWrite,
FSTClazzInfo clzInfo, FSTFieldInfo referencedBy,
int streamPosition) throws IOException {
out.writeByte(0);
}
@Override
public Object instantiate(Class objectClass, FSTObjectInput in,
FSTClazzInfo serializationInfo, FSTFieldInfo referencee,
int streamPosition) throws IOException,
ClassNotFoundException, InstantiationException,
IllegalAccessException {
Object o = new NonSerializableClass();
in.readByte();
in.registerObject(o, streamPosition, serializationInfo, referencee);
return o;
}
}
public static class NonSerializableClass {
}
}