package org.prevayler.foundation.serialization; import org.prevayler.foundation.ObjectInputStreamWithClassLoader; import java.io.OutputStream; import java.io.InputStream; import java.io.ObjectOutputStream; import java.io.IOException; import java.io.ObjectInputStream; /** * Writes and reads objects using Java serialization. This serializer can be used for snapshots, journals or both. */ public class JavaSerializer implements Serializer { private ClassLoader _loader; public JavaSerializer(){ _loader=null; } public JavaSerializer( ClassLoader loader){ _loader=loader; } public void writeObject( OutputStream stream, Object object) throws IOException { ObjectOutputStream objects=new ObjectOutputStream(stream); objects.writeObject(object); objects.close(); } public Object readObject( InputStream stream) throws IOException, ClassNotFoundException { ObjectInputStream objects=new ObjectInputStreamWithClassLoader(stream,_loader); Object object=objects.readObject(); objects.close(); return object; } }