package org.genedb.io.xstream; import com.google.common.collect.Multimap; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; @SuppressWarnings("unchecked") public class MultiMapConvertor implements Converter { public boolean canConvert(Class clazz) { return clazz.equals(Multimap.class); } public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { Multimap map = (Multimap) value; writer.startNode("map"); for (Object key : map.keys()) { writer.startNode("entry"); writer.addAttribute("key", key.toString()); for (Object v : map.get(key)) { writer.startNode("value"); writer.setValue(v.toString()); writer.endNode(); } writer.endNode(); } writer.endNode(); } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { return null; } }