1 package com.thoughtworks.xstream.converters.collections;
2
3 import com.thoughtworks.xstream.alias.ClassMapper;
4 import com.thoughtworks.xstream.converters.ConverterLookup;
5 import com.thoughtworks.xstream.objecttree.ObjectTree;
6 import com.thoughtworks.xstream.xml.XMLReader;
7 import com.thoughtworks.xstream.xml.XMLWriter;
8
9 import java.util.Iterator;
10 import java.util.Map;
11
12 public class MapConverter extends AbstractCollectionConverter {
13
14 public MapConverter(ClassMapper classMapper) {
15 super(classMapper);
16 }
17
18 public boolean canConvert(Class type) {
19 return Map.class.isAssignableFrom(type);
20 }
21
22 public void toXML(ObjectTree objectGraph, XMLWriter xmlWriter, ConverterLookup converterLookup) {
23 Map map = (Map) objectGraph.get();
24 for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) {
25 Map.Entry entry = (Map.Entry) iterator.next();
26 xmlWriter.startElement("entry");
27
28 writeItem(entry.getKey(), xmlWriter, converterLookup, objectGraph);
29 writeItem(entry.getValue(), xmlWriter, converterLookup, objectGraph);
30
31 xmlWriter.endElement();
32 }
33 }
34
35 public void fromXML(ObjectTree objectGraph, XMLReader xmlReader, ConverterLookup converterLookup, Class requiredType) {
36 int childCount = xmlReader.childCount();
37 Map map = (Map) createCollection(requiredType);
38 for (int i = 0; i < childCount; i++) {
39 xmlReader.child(i);
40
41 Object key = readItem(xmlReader, 0, objectGraph, converterLookup);
42 Object value = readItem(xmlReader, 1, objectGraph, converterLookup);
43 map.put(key, value);
44
45 xmlReader.pop();
46 }
47 objectGraph.set(map);
48 }
49
50 }
This page was automatically generated by Maven