1
2
3
4
5
6
7 package org.mule.transport;
8
9 import java.io.OutputStream;
10 import java.util.ArrayList;
11
12
13
14
15
16
17
18 public abstract class AbstractReceiverResourceWorker extends AbstractReceiverWorker
19 {
20 protected Object resource;
21
22 public AbstractReceiverResourceWorker(Object resource, AbstractMessageReceiver receiver)
23 {
24 this(resource, receiver, null);
25 }
26
27 public AbstractReceiverResourceWorker(Object resource, AbstractMessageReceiver receiver, OutputStream out)
28 {
29 super(new ArrayList<Object>(), receiver, out);
30 this.resource = resource;
31 }
32
33 @Override
34 public void doRun()
35 {
36 try
37 {
38 Object message;
39 do
40 {
41 message = getNextMessage(resource);
42 messages.add(message);
43 super.doRun();
44 }
45 while (message != null && hasMoreMessages(message));
46 }
47 catch (Exception e)
48 {
49 receiver.getConnector().getMuleContext().getExceptionListener().handleException(e);
50 }
51 }
52
53 protected boolean hasMoreMessages(Object message)
54 {
55 return true;
56 }
57
58
59
60
61
62
63
64
65 protected abstract Object getNextMessage(Object resource) throws Exception;
66 }