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