View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
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   * Encodes a string with XML entities
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  }