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; } }