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