package org.squirrelframework.foundation.fsm;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import org.squirrelframework.foundation.util.Base64Coder;
public abstract class ObjectSerializableSupport {
public static String serialize(Object data) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
try {
oos.writeObject(data);
} finally {
oos.close();
}
return new String(Base64Coder.encode(bos.toByteArray()));
} catch (IOException e) {
throw new RuntimeException("Data serialization failed.", e);
}
}
@SuppressWarnings("unchecked")
public static <T> T deserialize(String value) {
try {
byte [] data = Base64Coder.decode(value);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
try {
Object object = ois.readObject();
return (T)object;
} finally {
ois.close();
}
} catch (IOException e) {
throw new RuntimeException("Data serialization failed.", e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}