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