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