1
2
3
4
5
6
7 package org.mule.transport.xmpp;
8
9 import org.mule.api.MuleEvent;
10 import org.mule.api.MuleMessage;
11 import org.mule.api.endpoint.InboundEndpoint;
12 import org.mule.transport.AbstractMessageRequester;
13
14 import org.jivesoftware.smack.packet.Message;
15
16
17
18
19 public class XmppMessageRequester extends AbstractMessageRequester
20 {
21 private XmppConnector connector;
22 private XmppConversation conversation;
23
24 public XmppMessageRequester(InboundEndpoint endpoint)
25 {
26 super(endpoint);
27 connector = (XmppConnector) endpoint.getConnector();
28 conversation = connector.getConversationFactory().create(endpoint);
29 }
30
31 @Override
32 protected void doConnect() throws Exception
33 {
34 conversation.connect();
35 }
36
37 @Override
38 protected void doDisconnect() throws Exception
39 {
40 conversation.disconnect();
41 }
42
43 @Override
44 protected void doDispose()
45 {
46 conversation = null;
47 }
48
49 @Override
50 protected MuleMessage doRequest(long timeout) throws Exception
51 {
52 Message message = null;
53 if (timeout == MuleEvent.TIMEOUT_WAIT_FOREVER)
54 {
55 message = conversation.receive();
56 }
57 else
58 {
59 message = conversation.receive(timeout);
60 }
61
62 if (message != null)
63 {
64 return createMuleMessage(message, endpoint.getEncoding());
65 }
66 else
67 {
68 return null;
69 }
70 }
71 }