1
2
3
4
5
6
7 package org.mule.transport.sftp;
8
9 import org.mule.api.MuleMessage;
10 import org.mule.api.endpoint.InboundEndpoint;
11 import org.mule.transport.AbstractMessageRequester;
12 import org.mule.transport.sftp.notification.SftpNotifier;
13
14 import java.io.InputStream;
15
16
17
18
19
20
21
22 public class SftpMessageRequester extends AbstractMessageRequester
23 {
24
25 private SftpReceiverRequesterUtil sftpRRUtil = null;
26
27 public SftpMessageRequester(InboundEndpoint endpoint)
28 {
29 super(endpoint);
30
31 sftpRRUtil = new SftpReceiverRequesterUtil(endpoint);
32
33 }
34
35 @Override
36 protected MuleMessage doRequest(long timeout) throws Exception
37 {
38 String[] files = sftpRRUtil.getAvailableFiles(true);
39
40 if (files.length == 0) return null;
41
42 String path = files[0];
43
44
45 SftpNotifier notifier = new SftpNotifier((SftpConnector) connector, createNullMuleMessage(),
46 endpoint, endpoint.getName());
47
48 InputStream inputStream = sftpRRUtil.retrieveFile(path, notifier);
49
50 logger.debug("Routing file: " + path);
51
52 MuleMessage message = createMuleMessage(inputStream);
53 message.setOutboundProperty(SftpConnector.PROPERTY_ORIGINAL_FILENAME, path);
54
55
56 notifier.setMessage(message);
57 return message;
58 }
59
60 }