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