package uk.ac.imperial.lsds.seep.comm.serialization;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class JavaSerializer implements Serializer {
private ByteArrayOutputStream baos;
private ByteArrayInputStream bais;
private ObjectOutputStream oos;
private ObjectInputStream ois;
public JavaSerializer(){
// TODO: configure buffer sizes, etc
baos = new ByteArrayOutputStream();
try {
oos = new ObjectOutputStream(baos);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public byte[] serialize(Object object) {
try {
oos.writeObject(object);
}
catch (IOException e) {
e.printStackTrace();
}
return baos.toByteArray();
}
@Override
public Object deserialize(byte[] data, Class type) {
Object o = null;
bais = new ByteArrayInputStream(data);
try{
ois = new ObjectInputStream(bais);
o = ois.readObject();
}
catch(IOException io){
io.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
return o;
}
}