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