View Javadoc

1   /*
2    * $Id: DomXmlTransformerEncodingByteArrayTestCase.java 19712 2010-09-24 14:08:46Z 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  
11  package org.mule.transformers.xml;
12  
13  import org.mule.api.transformer.Transformer;
14  import org.mule.module.xml.transformer.XmlToDomDocument;
15  import org.mule.transformer.types.DataTypeFactory;
16  import org.mule.util.IOUtils;
17  
18  import java.io.InputStream;
19  
20  import org.dom4j.DocumentHelper;
21  import org.dom4j.io.DOMWriter;
22  
23  public class DomXmlTransformerEncodingByteArrayTestCase extends DomXmlTransformerEncodingTestCase
24  {
25      private byte[] srcData; // Parsed XML doc
26      private String resultData; // String as US-ASCII
27  
28      @Override
29      protected void doSetUp() throws Exception
30      {
31      	InputStream resourceStream = IOUtils.getResourceAsStream("cdcatalog-utf-8.xml", getClass());
32          srcData = IOUtils.toString(resourceStream, "UTF-8").getBytes("UTF-8");
33          
34          resourceStream = IOUtils.getResourceAsStream("cdcatalog-us-ascii.xml", getClass());
35          resultData = IOUtils.toString(resourceStream, "US-ASCII");
36      }
37      
38      @Override
39      public Transformer getRoundTripTransformer() throws Exception
40      {
41          XmlToDomDocument trans = createObject(XmlToDomDocument.class); // encoding is not interesting
42          trans.setReturnDataType(DataTypeFactory.create(byte[].class));
43          return trans;
44      }
45  
46      @Override
47      public Object getTestData()
48      {
49          return srcData;
50      }
51  
52      @Override
53      public Object getResultData()
54      {
55          return resultData;
56      }
57  
58      @Override
59      public boolean compareResults(Object expected, Object result)
60      {
61          try
62          {
63              // This is only used during roundtrip test, so it will always be byte[] instances
64              if (expected instanceof byte[])
65              {
66                  org.dom4j.Document dom4jDoc = null;
67                  dom4jDoc = DocumentHelper.parseText(new String((byte[])expected, "UTF-8"));
68                  expected = new DOMWriter().write(dom4jDoc);
69                  dom4jDoc = DocumentHelper.parseText(new String((byte[])result, "UTF-8"));
70                  result = new DOMWriter().write(dom4jDoc);
71              }
72          }
73          catch (Exception ex)
74          {
75              // ignored.
76          }
77  
78          return super.compareResults(expected, result);
79      }
80  }