1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.betwixt.io;
18
19 import java.io.StringReader;
20 import java.io.StringWriter;
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import org.apache.commons.betwixt.AbstractTestCase;
25 import org.xml.sax.InputSource;
26
27 public class TestMapUpdater extends AbstractTestCase {
28
29 public TestMapUpdater(String testName) {
30 super(testName);
31 }
32
33 public void testMapUpdater() throws Exception {
34 String config = "<?xml version='1.0'?>"
35 + "<betwixt-config primitiveTypes='attribute'>"
36 + " <class name='org.apache.commons.betwixt.io.TestMapUpdater$ParentBean'>"
37 + " <element name='parentBean'>"
38 + " <element name='pairs'>"
39 + " <element property='pairs' updater='addPair'/>"
40 + " </element>"
41 + " <addDefaults add-properties='true' add-adders='false'/>"
42 + " </element>" + " </class>" + "</betwixt-config>";
43
44 String result = "<?xml version=\"1.0\"?>\n"
45 + " <parentBean id=\"1\">\n" + " <pairs>\n"
46 + " <entry id=\"2\">\n" + " <key>key</key>\n"
47 + " <value>value</value>\n" + " </entry>\n"
48 + " </pairs>\n" + " </parentBean>\n";
49
50 ParentBean pb = new ParentBean();
51 pb.getPairs().put("key", "value");
52
53 StringWriter writer = new StringWriter();
54 BeanWriter beanWriter = new BeanWriter(writer);
55 beanWriter.enablePrettyPrint();
56 beanWriter.getXMLIntrospector().register(
57 new InputSource(new StringReader(config)));
58 beanWriter.writeXmlDeclaration("<?xml version=\"1.0\"?>");
59 beanWriter.write(pb);
60
61 xmlAssertIsomorphic(parseString(result), parseString(writer));
62
63 BeanReader beanReader = new BeanReader();
64 beanReader.registerMultiMapping(new InputSource(
65 new StringReader(config)));
66
67 ParentBean pbRead = (ParentBean) beanReader.parse(new StringReader(
68 writer.toString()));
69
70 StringWriter writer2 = new StringWriter();
71 BeanWriter beanWriter2 = new BeanWriter(writer2);
72 beanWriter2.enablePrettyPrint();
73 beanWriter2.getXMLIntrospector().register(
74 new InputSource(new StringReader(config)));
75 beanWriter2.writeXmlDeclaration("<?xml version=\"1.0\"?>");
76 beanWriter2.write(pbRead);
77
78 xmlAssertIsomorphic(parseString(result), parseString(writer2));
79
80 }
81
82 public static class ParentBean {
83 private Map pairs = new HashMap();
84
85 public Map getPairs() {
86 return pairs;
87 }
88
89 public void setPairs(Map pairs) {
90 this.pairs = pairs;
91 }
92
93 public void addPair(String key, String value) {
94 pairs.put(key, value);
95 }
96
97 }
98
99 }