View Javadoc

1   /*
2    * $Id: JaxbRoundtripTestCase.java 19250 2010-08-30 16:53:14Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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  }