1
2
3
4
5
6
7 package org.mule.transformers.xml;
8
9 import org.mule.api.endpoint.EndpointBuilder;
10 import org.mule.api.endpoint.ImmutableEndpoint;
11 import org.mule.api.transformer.Transformer;
12 import org.mule.api.transport.OutputHandler;
13 import org.mule.endpoint.EndpointURIEndpointBuilder;
14 import org.mule.module.xml.transformer.XmlToOutputHandler;
15 import org.mule.transformer.types.DataTypeFactory;
16 import org.mule.util.IOUtils;
17
18 import java.io.ByteArrayOutputStream;
19 import java.io.InputStream;
20
21 import org.dom4j.DocumentHelper;
22 import org.dom4j.io.DOMWriter;
23
24 import static org.junit.Assert.fail;
25
26 public class XmlToOutputHandlerByteArrayTestCase extends AbstractXmlTransformerTestCase
27 {
28 private byte[] srcData;
29 private String resultData;
30
31 @Override
32 protected void doSetUp() throws Exception
33 {
34 InputStream resourceStream = IOUtils.getResourceAsStream("cdcatalog-utf-8.xml", getClass());
35 resultData = IOUtils.toString(resourceStream, "UTF-8");
36
37 srcData = resultData.getBytes("UTF-8");
38 }
39
40 @Override
41 public Transformer getTransformer() throws Exception
42 {
43 Transformer trans = createObject(XmlToOutputHandler.class);
44 trans.setReturnDataType(DataTypeFactory.create(OutputHandler.class));
45
46 EndpointBuilder builder = new EndpointURIEndpointBuilder("test://test", muleContext);
47 builder.setEncoding("UTF-8");
48 ImmutableEndpoint endpoint =
49 muleContext.getEndpointFactory().getInboundEndpoint(builder);
50
51 trans.setEndpoint(endpoint);
52 return trans;
53 }
54
55 @Override
56 public Transformer getRoundTripTransformer() throws Exception
57 {
58 return null;
59 }
60
61 @Override
62 public Object getTestData()
63 {
64 return srcData;
65 }
66
67 @Override
68 public Object getResultData()
69 {
70 return resultData;
71 }
72
73 @Override
74 public boolean compareResults(Object expected, Object result)
75 {
76 if (result instanceof OutputHandler)
77 {
78 OutputHandler handler = (OutputHandler)result;
79 ByteArrayOutputStream bos = new ByteArrayOutputStream();
80 try
81 {
82 handler.write(null, bos);
83 org.dom4j.Document dom4jDoc = null;
84 dom4jDoc = DocumentHelper.parseText((String)expected);
85 expected = new DOMWriter().write(dom4jDoc);
86 dom4jDoc = DocumentHelper.parseText(new String(bos.toByteArray(), "UTF-8"));
87 result = new DOMWriter().write(dom4jDoc);
88 }
89 catch (Exception e)
90 {
91 fail();
92 }
93 }
94 return super.compareResults(expected, result);
95 }
96 }