1
2
3
4
5
6
7
8
9
10
11 package org.mule.transformer.codec;
12
13 import org.mule.api.transformer.TransformerException;
14 import org.mule.config.i18n.CoreMessages;
15 import org.mule.transformer.AbstractTransformer;
16 import org.mule.transformer.types.DataTypeFactory;
17 import org.mule.util.XMLEntityCodec;
18
19 import java.io.InputStream;
20
21 import org.apache.commons.io.IOUtils;
22
23
24
25
26 public class XmlEntityEncoder extends AbstractTransformer
27 {
28
29 public XmlEntityEncoder()
30 {
31 registerSourceType(DataTypeFactory.STRING);
32 registerSourceType(DataTypeFactory.BYTE_ARRAY);
33 registerSourceType(DataTypeFactory.INPUT_STREAM);
34 setReturnDataType(DataTypeFactory.TEXT_STRING);
35 }
36
37 @Override
38 public Object doTransform(Object src, String encoding) throws TransformerException
39 {
40 try
41 {
42 String data;
43
44 if (src instanceof byte[])
45 {
46 data = new String((byte[]) src, encoding);
47 }
48 else if (src instanceof InputStream)
49 {
50 data = IOUtils.toString((InputStream)src);
51 }
52 else
53 {
54 data = (String) src;
55 }
56
57 return XMLEntityCodec.encodeString(data);
58 }
59 catch (Exception ex)
60 {
61 throw new TransformerException(
62 CoreMessages.transformFailed(src.getClass().getName(), "XML"),
63 this, ex);
64 }
65 }
66
67 }