1
2
3
4
5
6
7 package org.mule.transport.xmpp;
8
9 import org.mule.api.endpoint.ImmutableEndpoint;
10
11 import org.jivesoftware.smack.Chat;
12 import org.jivesoftware.smack.XMPPException;
13 import org.jivesoftware.smack.filter.AndFilter;
14 import org.jivesoftware.smack.filter.FromMatchesFilter;
15 import org.jivesoftware.smack.filter.MessageTypeFilter;
16 import org.jivesoftware.smack.filter.PacketFilter;
17 import org.jivesoftware.smack.packet.Message;
18
19
20
21
22 public class XmppChatConversation extends AbstractXmppConversation
23 {
24 private Chat chat;
25
26 public XmppChatConversation(ImmutableEndpoint endpoint)
27 {
28 super(endpoint);
29 }
30
31 @Override
32 protected void doConnect()
33 {
34 chat = connection.getChatManager().createChat(recipient, null);
35 }
36
37 @Override
38 protected PacketFilter createPacketFilter()
39 {
40
41
42
43
44
45
46
47 PacketFilter recipientFilter = new FromMatchesFilter(recipient);
48 PacketFilter messageTypeFilter = new MessageTypeFilter(Message.Type.chat);
49 return new AndFilter(recipientFilter, messageTypeFilter);
50 }
51
52 @Override
53 protected void doDisconnect()
54 {
55 chat = null;
56 }
57
58 public void dispatch(Message message) throws XMPPException
59 {
60 message.setType(Message.Type.chat);
61 chat.sendMessage(message);
62 }
63 }