1
2
3
4
5
6
7
8
9
10 package org.mule.transformers.jaxb;
11
12 import org.mule.api.transformer.Transformer;
13 import org.mule.jaxb.model.EmailAddress;
14 import org.mule.jaxb.model.Person;
15 import org.mule.module.xml.transformer.jaxb.JAXBMarshallerTransformer;
16 import org.mule.module.xml.transformer.jaxb.JAXBUnmarshallerTransformer;
17 import org.mule.transformer.AbstractTransformerTestCase;
18 import org.mule.transformer.types.DataTypeFactory;
19
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import javax.xml.bind.JAXBContext;
24
25 import org.custommonkey.xmlunit.XMLUnit;
26
27 public class JaxbRoundtripTestCase extends AbstractTransformerTestCase
28 {
29 private JAXBContext ctx;
30
31 @Override
32 protected void doSetUp() throws Exception
33 {
34 ctx = JAXBContext.newInstance(Person.class);
35 super.doSetUp();
36 }
37
38 @Override
39 public Transformer getTransformer() throws Exception
40 {
41 JAXBUnmarshallerTransformer t = new JAXBUnmarshallerTransformer(ctx, DataTypeFactory.create(Person.class));
42 initialiseObject(t);
43 return t;
44 }
45
46 @Override
47 public Transformer getRoundTripTransformer() throws Exception
48 {
49 JAXBMarshallerTransformer t = new JAXBMarshallerTransformer(ctx, DataTypeFactory.STRING);
50 initialiseObject(t);
51 return t;
52 }
53
54 @Override
55 public Object getTestData()
56 {
57 return "<person><name>John Doe</name><dob>01/01/1970</dob><emailAddresses><emailAddress><type>home</type><address>john.doe@gmail.com</address></emailAddress><emailAddress><type>work</type><address>jdoe@bigco.com</address></emailAddress></emailAddresses></person>";
58 }
59
60 @Override
61 public Object getResultData()
62 {
63 Person p = new Person();
64 p.setName("John Doe");
65 p.setDob("01/01/1970");
66 List<EmailAddress> emailAddresses = new ArrayList<EmailAddress>(1);
67 EmailAddress ea = new EmailAddress();
68 ea.setType("home");
69 ea.setAddress("john.doe@gmail.com");
70 emailAddresses.add(ea);
71 EmailAddress ea2 = new EmailAddress();
72 ea2.setType("work");
73 ea2.setAddress("jdoe@bigco.com");
74 emailAddresses.add(ea2);
75 p.setEmailAddresses(emailAddresses);
76 return p;
77 }
78
79 @Override
80 public boolean compareRoundtripResults(Object expected, Object result)
81 {
82 try
83 {
84 return XMLUnit.compareXML(expected.toString(), result.toString()).similar();
85 }
86 catch (Exception e)
87 {
88 fail("Failed to compare roudtrip XML strings: " + e.getMessage());
89 return false;
90 }
91 }
92 }