package org.vertexium.serializer.xstream; import com.thoughtworks.xstream.XStream; import org.vertexium.VertexiumSerializer; public class XStreamVertexiumSerializer implements VertexiumSerializer { private static final XStream xstream = new XStream(); private static final byte[] EMPTY = new byte[0]; @Override public byte[] objectToBytes(final Object object) { if (object == null) { return EMPTY; } synchronized (object) { return xstream.toXML(object).getBytes(); } } @SuppressWarnings("unchecked") @Override public <T> T bytesToObject(byte[] bytes) { if (bytes == null || bytes.length == 0) { return null; } return (T) xstream.fromXML(new String(bytes)); } }