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.IOUtils;
18 import org.mule.util.XMLEntityCodec;
19
20 import java.io.InputStream;
21
22
23
24
25 public class XmlEntityDecoder extends AbstractTransformer
26 {
27
28 public XmlEntityDecoder()
29 {
30 registerSourceType(DataTypeFactory.STRING);
31 registerSourceType(DataTypeFactory.BYTE_ARRAY);
32 registerSourceType(DataTypeFactory.INPUT_STREAM);
33 setReturnDataType(DataTypeFactory.STRING);
34 }
35
36 @Override
37 public Object doTransform(Object src, String encoding) throws TransformerException
38 {
39 try
40 {
41 String data;
42
43 if (src instanceof byte[])
44 {
45 data = new String((byte[]) src, encoding);
46 }
47 else if (src instanceof InputStream)
48 {
49 data = IOUtils.toString((InputStream)src);
50 }
51 else
52 {
53 data = (String) src;
54 }
55
56 return XMLEntityCodec.decodeString(data);
57 }
58 catch (Exception ex)
59 {
60 throw new TransformerException(
61 CoreMessages.transformFailed(src.getClass().getName(), "XML"),
62 this, ex);
63 }
64 }
65
66 }