1
2
3
4
5
6
7 package org.mule.transport.sftp.transformers;
8
9 import org.mule.api.transformer.TransformerException;
10 import org.mule.config.i18n.MessageFactory;
11 import org.mule.transformer.AbstractTransformer;
12 import org.mule.transformer.types.DataTypeFactory;
13
14 import java.io.ByteArrayOutputStream;
15 import java.io.InputStream;
16
17 import org.apache.commons.io.IOUtils;
18
19
20
21
22 public class InputStreamToByteArray extends AbstractTransformer
23 {
24
25
26
27 private static final long serialVersionUID = -7444711427779720031L;
28
29 public InputStreamToByteArray()
30 {
31 registerSourceType(DataTypeFactory.INPUT_STREAM);
32 setReturnDataType(DataTypeFactory.BYTE_ARRAY);
33 }
34
35 @Override
36 public Object doTransform(Object msg, String outputEncoding) throws TransformerException
37 {
38 if (msg instanceof InputStream)
39 {
40 InputStream inputStream = null;
41
42 try
43 {
44 inputStream = (InputStream) msg;
45
46 ByteArrayOutputStream baos = new ByteArrayOutputStream();
47
48 byte[] buffer = new byte[1024];
49 int len;
50 while ((len = inputStream.read(buffer)) > 0)
51 {
52 baos.write(buffer, 0, len);
53 }
54
55 return baos.toByteArray();
56 }
57 catch (Exception e)
58 {
59 throw new TransformerException(this, e);
60 }
61 finally
62 {
63 IOUtils.closeQuietly(inputStream);
64 }
65 }
66 else
67 {
68 throw new TransformerException(
69 MessageFactory.createStaticMessage("Message is not an instance of java.io.InputStream"), this);
70 }
71 }
72
73 }