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