Commit 7f03368a authored by Daniel Henninger's avatar Daniel Henninger Committed by dhenninger

Working on port to new MSN library. Cross your fingers. Note that current...

Working on port to new MSN library.  Cross your fingers.  Note that current code is not very functional.

git-svn-id: http://svn.igniterealtime.org/svn/repos/wildfire/trunk@5362 b35dd754-fafc-0310-a699-88a17e54d16e
parent 9c11e0d8
...@@ -5,6 +5,7 @@ commons-logging | 1.1 ...@@ -5,6 +5,7 @@ commons-logging | 1.1
irclib.jar | 1.04 irclib.jar | 1.04
jml.jar | 1.0a2 (patched) jml.jar | 1.0a2 (patched)
joscar.jar | 0.9.3 (patched) joscar.jar | 0.9.3 (patched)
msnm.jar | 2006-09-13 build
picocontainer.jar | 1.2.0 picocontainer.jar | 1.2.0
ymsg_network.jar | 0.61 ymsg_network.jar | 0.61
ymsg_support.jar | 0.6 ymsg_support.jar | 0.6
...@@ -10,21 +10,15 @@ ...@@ -10,21 +10,15 @@
package org.jivesoftware.wildfire.gateway.protocols.msn; package org.jivesoftware.wildfire.gateway.protocols.msn;
import org.jivesoftware.util.Log;
import org.xmpp.packet.Message; import org.xmpp.packet.Message;
import org.xmpp.packet.Presence;
import net.sf.jml.event.MsnAdapter;
import net.sf.jml.MsnSwitchboard;
import net.sf.jml.MsnContact;
import net.sf.jml.MsnMessenger;
import net.sf.jml.MsnGroup;
import net.sf.jml.message.MsnInstantMessage;
import net.sf.jml.message.MsnControlMessage;
import net.sf.jml.message.MsnDatacastMessage;
import net.sf.jml.message.MsnUnknownMessage;
import java.util.Date; import java.util.Date;
import rath.msnm.event.MsnAdapter;
import rath.msnm.SwitchboardSession;
import rath.msnm.msg.MimeMessage;
import rath.msnm.entity.MsnFriend;
/** /**
* MSN Listener Interface. * MSN Listener Interface.
* *
...@@ -52,153 +46,21 @@ public class MSNListener extends MsnAdapter { ...@@ -52,153 +46,21 @@ public class MSNListener extends MsnAdapter {
/** /**
* Handles incoming messages from MSN users. * Handles incoming messages from MSN users.
*/ */
public void instantMessageReceived(MsnSwitchboard switchboard, MsnInstantMessage message, MsnContact friend) { public void instantMessageReceived(SwitchboardSession switchboard, MsnFriend friend, MimeMessage message) {
Message m = new Message();
m.setType(Message.Type.chat);
m.setTo(msnSession.getJIDWithHighestPriority());
m.setFrom(msnSession.getTransport().convertIDToJID(friend.getEmail().toString()));
m.setBody(message.getContent());
msnSession.getTransport().sendPacket(m);
}
/**
* Handles incoming system messages from MSN.
*/
public void systemMessageReceived(MsnSwitchboard switchboard, MsnInstantMessage message) {
Message m = new Message(); Message m = new Message();
m.setType(Message.Type.chat); m.setType(Message.Type.chat);
m.setTo(msnSession.getJIDWithHighestPriority()); m.setTo(msnSession.getJIDWithHighestPriority());
m.setFrom(msnSession.getTransport().getJID()); m.setFrom(msnSession.getTransport().convertIDToJID(friend.getLoginName()));
m.setBody(message.getContent()); m.setBody(message.getMessage());
msnSession.getTransport().sendPacket(m); msnSession.getTransport().sendPacket(m);
} }
/**
* Handles incoming control messages from MSN.
*/
public void controlMessageReceived(MsnSwitchboard switchboard, MsnControlMessage message, MsnContact friend) {
Log.debug("MSN: Received control msg to " + switchboard + " from " + friend + ": " + message);
}
/**
* Handles incoming datacast messages from MSN.
*/
public void datacastMessageReceived(MsnSwitchboard switchboard, MsnDatacastMessage message, MsnContact friend) {
Log.debug("MSN: Received datacast message to " + switchboard + " from " + friend + ": " + message);
}
/**
* Handles incoming unknown messages from MSN.
*/
public void unknownMessageReceived(MsnSwitchboard switchboard, MsnUnknownMessage message, MsnContact friend) {
Log.debug("MSN: Received unknown message to " + switchboard + " from " + friend + ": " + message);
}
/** /**
* The user's login has completed and was accepted. * The user's login has completed and was accepted.
*/ */
public void loginCompleted(MsnMessenger messenger) { public void loginComplete(MsnFriend me) {
msnSession.getRegistration().setLastLogin(new Date()); msnSession.getRegistration().setLastLogin(new Date());
msnSession.setLoginStatus(true); msnSession.setLoginStatus(true);
} }
/**
* Contact list initialization has completed.
*/
public void contactListInitCompleted(MsnMessenger messenger) {
}
/**
* Contact list has been synced.
*/
public void contactListSyncCompleted(MsnMessenger messenger) {
for (MsnContact msnContact : messenger.getContactList().getContacts()) {
Log.debug("Got contact "+msnContact);
msnSession.storeFriend(msnContact);
}
for (MsnGroup msnGroup : messenger.getContactList().getGroups()) {
msnSession.storeGroup(msnGroup);
}
msnSession.syncUsers();
}
/**
* A friend for this user has changed status.
*/
public void contactStatusChanged(MsnMessenger messenger, MsnContact friend) {
Presence p = new Presence();
p.setTo(msnSession.getJID());
p.setFrom(msnSession.getTransport().convertIDToJID(friend.getEmail().toString()));
((MSNTransport)msnSession.getTransport()).setUpPresencePacket(p, friend.getStatus());
msnSession.getTransport().sendPacket(p);
msnSession.storeFriend(friend);
}
/**
* Owner status has changed.
*/
public void ownerStatusChanged(MsnMessenger messenger) {
Presence p = new Presence();
p.setTo(msnSession.getJID());
p.setFrom(msnSession.getTransport().getJID());
((MSNTransport)msnSession.getTransport()).setUpPresencePacket(p, messenger.getOwner().getStatus());
msnSession.getTransport().sendPacket(p);
}
/**
* Catches MSN exceptions.
*/
public void exceptionCaught(MsnMessenger messenger, Throwable throwable) {
if (throwable.getClass().getName().equals("net.sf.jml.exception.IncorrectPasswordException")) {
Message m = new Message();
m.setType(Message.Type.error);
m.setTo(msnSession.getJIDWithHighestPriority());
m.setFrom(msnSession.getTransport().getJID());
m.setBody("The password you registered with is incorrect. Please re-register with the correct password.");
msnSession.getTransport().sendPacket(m);
msnSession.logOut();
}
else if (throwable.getClass().getName().equals("net.sf.jml.exception.MsnProtocolException")) {
Message m = new Message();
m.setType(Message.Type.error);
m.setTo(msnSession.getJIDWithHighestPriority());
m.setFrom(msnSession.getTransport().getJID());
m.setBody("MSN error: "+throwable.toString());
msnSession.getTransport().sendPacket(m);
}
else if (throwable.getClass().getName().equals("net.sf.jml.exception.MsgNotSendException")) {
Message m = new Message();
m.setType(Message.Type.error);
m.setTo(msnSession.getJIDWithHighestPriority());
m.setFrom(msnSession.getTransport().getJID());
m.setBody("Unable to send MSN message. Reason: "+throwable.toString());
msnSession.getTransport().sendPacket(m);
}
else if (throwable.getClass().getName().equals("net.sf.jml.exception.UnknownMessageException")) {
Message m = new Message();
m.setType(Message.Type.error);
m.setTo(msnSession.getJIDWithHighestPriority());
m.setFrom(msnSession.getTransport().getJID());
m.setBody("Unknown message from MSN: "+throwable.toString());
msnSession.getTransport().sendPacket(m);
}
else if (throwable.getClass().getName().equals("net.sf.jml.exception.UnsupportedProtocolException")) {
Message m = new Message();
m.setType(Message.Type.error);
m.setTo(msnSession.getJIDWithHighestPriority());
m.setFrom(msnSession.getTransport().getJID());
m.setBody("MSN protocol error: "+throwable.toString());
msnSession.getTransport().sendPacket(m);
}
else {
Message m = new Message();
m.setType(Message.Type.error);
m.setTo(msnSession.getJIDWithHighestPriority());
m.setFrom(msnSession.getTransport().getJID());
m.setBody("Unknown error from MSN: "+throwable.toString());
throwable.printStackTrace();
msnSession.getTransport().sendPacket(m);
}
}
} }
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
package org.jivesoftware.wildfire.gateway.protocols.msn; package org.jivesoftware.wildfire.gateway.protocols.msn;
import net.sf.jml.*;
import net.sf.jml.impl.MsnMessengerFactory;
import org.jivesoftware.wildfire.gateway.PresenceType; import org.jivesoftware.wildfire.gateway.PresenceType;
import org.jivesoftware.wildfire.gateway.Registration; import org.jivesoftware.wildfire.gateway.Registration;
import org.jivesoftware.wildfire.gateway.TransportSession; import org.jivesoftware.wildfire.gateway.TransportSession;
...@@ -25,6 +23,14 @@ import org.xmpp.packet.Presence; ...@@ -25,6 +23,14 @@ import org.xmpp.packet.Presence;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.io.IOException;
import rath.msnm.MSNMessenger;
import rath.msnm.SwitchboardSession;
import rath.msnm.msg.MimeMessage;
import rath.msnm.entity.MsnFriend;
import rath.msnm.entity.Group;
import rath.msnm.entity.ServerInfo;
/** /**
* Represents a MSN session. * Represents a MSN session.
...@@ -47,24 +53,23 @@ public class MSNSession extends TransportSession { ...@@ -47,24 +53,23 @@ public class MSNSession extends TransportSession {
public MSNSession(Registration registration, JID jid, MSNTransport transport, Integer priority) { public MSNSession(Registration registration, JID jid, MSNTransport transport, Integer priority) {
super(registration, jid, transport, priority); super(registration, jid, transport, priority);
msnMessenger = MsnMessengerFactory.createMsnMessenger(registration.getUsername(), registration.getPassword()); msnMessenger = new MSNMessenger(registration.getUsername(), registration.getPassword());
msnMessenger.setSupportedProtocol(new MsnProtocol[] { MsnProtocol.MSNP12 });
} }
/** /**
* MSN session * MSN session
*/ */
private MsnMessenger msnMessenger = null; private MSNMessenger msnMessenger = null;
/** /**
* MSN contacts/friends. * MSN contacts/friends.
*/ */
private ConcurrentHashMap<String,MsnContact> msnContacts = new ConcurrentHashMap<String,MsnContact>(); private ConcurrentHashMap<String,MsnFriend> msnContacts = new ConcurrentHashMap<String,MsnFriend>();
/** /**
* MSN groups. * MSN groups.
*/ */
private ConcurrentHashMap<String,MsnGroup> msnGroups = new ConcurrentHashMap<String,MsnGroup>(); private ConcurrentHashMap<String, Group> msnGroups = new ConcurrentHashMap<String,Group>();
/** /**
* Login status * Login status
...@@ -79,10 +84,8 @@ public class MSNSession extends TransportSession { ...@@ -79,10 +84,8 @@ public class MSNSession extends TransportSession {
*/ */
public void logIn(PresenceType presenceType, String verboseStatus) { public void logIn(PresenceType presenceType, String verboseStatus) {
if (!this.isLoggedIn()) { if (!this.isLoggedIn()) {
msnMessenger.getOwner().setInitStatus(((MSNTransport)getTransport()).convertJabStatusToMSN(presenceType)); msnMessenger.setInitialStatus(((MSNTransport)getTransport()).convertJabStatusToMSN(presenceType));
msnMessenger.setLogIncoming(false); msnMessenger.addMsnListener(new MSNListener(this));
msnMessenger.setLogOutgoing(false);
msnMessenger.addListener(new MSNListener(this));
msnMessenger.login(); msnMessenger.login();
} }
} }
...@@ -104,7 +107,7 @@ public class MSNSession extends TransportSession { ...@@ -104,7 +107,7 @@ public class MSNSession extends TransportSession {
/** /**
* Retrieves the manager for this session. * Retrieves the manager for this session.
*/ */
public MsnMessenger getManager() { public MSNMessenger getManager() {
return msnMessenger; return msnMessenger;
} }
...@@ -125,15 +128,15 @@ public class MSNSession extends TransportSession { ...@@ -125,15 +128,15 @@ public class MSNSession extends TransportSession {
/** /**
* Records information about a person on the user's contact list. * Records information about a person on the user's contact list.
*/ */
public void storeFriend(MsnContact msnContact) { public void storeFriend(MsnFriend msnContact) {
msnContacts.put(msnContact.getEmail().toString(), msnContact); msnContacts.put(msnContact.getLoginName(), msnContact);
} }
/** /**
* Records information about a group on the user's contact list. * Records information about a group on the user's contact list.
*/ */
public void storeGroup(MsnGroup msnGroup) { public void storeGroup(Group msnGroup) {
msnGroups.put(msnGroup.getGroupName(), msnGroup); msnGroups.put(msnGroup.getName(), msnGroup);
} }
/** /**
...@@ -141,15 +144,12 @@ public class MSNSession extends TransportSession { ...@@ -141,15 +144,12 @@ public class MSNSession extends TransportSession {
*/ */
public void syncUsers() { public void syncUsers() {
List<TransportBuddy> legacyusers = new ArrayList<TransportBuddy>(); List<TransportBuddy> legacyusers = new ArrayList<TransportBuddy>();
for (MsnContact friend : msnContacts.values()) { for (MsnFriend friend : msnContacts.values()) {
ArrayList<String> friendGroups = new ArrayList<String>(); ArrayList<String> friendGroups = new ArrayList<String>();
for (MsnGroup group : friend.getBelongGroups()) {
friendGroups.add(group.getGroupName());
}
if (friendGroups.size() < 1) { if (friendGroups.size() < 1) {
friendGroups.add("MSN Contacts"); friendGroups.add("MSN Contacts");
} }
legacyusers.add(new TransportBuddy(friend.getEmail().toString(), friend.getDisplayName(), friendGroups.get(0))); legacyusers.add(new TransportBuddy(friend.getLoginName(), friend.getFriendlyName(), friendGroups.get(0)));
} }
try { try {
getTransport().syncLegacyRoster(getJID(), legacyusers); getTransport().syncLegacyRoster(getJID(), legacyusers);
...@@ -159,10 +159,10 @@ public class MSNSession extends TransportSession { ...@@ -159,10 +159,10 @@ public class MSNSession extends TransportSession {
} }
// Lets send initial presence statuses // Lets send initial presence statuses
for (MsnContact friend : msnContacts.values()) { for (MsnFriend friend : msnContacts.values()) {
Presence p = new Presence(); Presence p = new Presence();
p.setTo(getJID()); p.setTo(getJID());
p.setFrom(getTransport().convertIDToJID(friend.getEmail().toString())); p.setFrom(getTransport().convertIDToJID(friend.getLoginName()));
((MSNTransport)getTransport()).setUpPresencePacket(p, friend.getStatus()); ((MSNTransport)getTransport()).setUpPresencePacket(p, friend.getStatus());
getTransport().sendPacket(p); getTransport().sendPacket(p);
} }
...@@ -172,37 +172,42 @@ public class MSNSession extends TransportSession { ...@@ -172,37 +172,42 @@ public class MSNSession extends TransportSession {
* @see org.jivesoftware.wildfire.gateway.TransportSession#addContact(org.jivesoftware.wildfire.roster.RosterItem) * @see org.jivesoftware.wildfire.gateway.TransportSession#addContact(org.jivesoftware.wildfire.roster.RosterItem)
*/ */
public void addContact(RosterItem item) { public void addContact(RosterItem item) {
Email contact = Email.parseStr(getTransport().convertJIDToID(item.getJid())); // String contact = getTransport().convertJIDToID(item.getJid());
String nickname = getTransport().convertJIDToID(item.getJid()); // String nickname = getTransport().convertJIDToID(item.getJid());
if (item.getNickname() != null && !item.getNickname().equals("")) { // if (item.getNickname() != null && !item.getNickname().equals("")) {
nickname = item.getNickname(); // nickname = item.getNickname();
} // }
msnMessenger.addFriend(contact, nickname); // try {
syncContactGroups(contact, item.getGroups()); // msnMessenger.addFriend(contact);
// }
// catch (IOException e) {
// Log.error("Error while adding MSN contact.");
// }
// syncContactGroups(contact, item.getGroups());
} }
/** /**
* @see org.jivesoftware.wildfire.gateway.TransportSession#removeContact(org.jivesoftware.wildfire.roster.RosterItem) * @see org.jivesoftware.wildfire.gateway.TransportSession#removeContact(org.jivesoftware.wildfire.roster.RosterItem)
*/ */
public void removeContact(RosterItem item) { public void removeContact(RosterItem item) {
Email contact = Email.parseStr(getTransport().convertJIDToID(item.getJid())); // Email contact = Email.parseStr(getTransport().convertJIDToID(item.getJid()));
MsnContact msnContact = msnContacts.get(contact.toString()); // MsnContact msnContact = msnContacts.get(contact.toString());
for (MsnGroup msnGroup : msnContact.getBelongGroups()) { // for (MsnGroup msnGroup : msnContact.getBelongGroups()) {
msnMessenger.removeFriend(contact, msnGroup.getGroupId()); // msnMessenger.removeFriend(contact, msnGroup.getGroupId());
} // }
} }
/** /**
* @see org.jivesoftware.wildfire.gateway.TransportSession#updateContact(org.jivesoftware.wildfire.roster.RosterItem) * @see org.jivesoftware.wildfire.gateway.TransportSession#updateContact(org.jivesoftware.wildfire.roster.RosterItem)
*/ */
public void updateContact(RosterItem item) { public void updateContact(RosterItem item) {
Email contact = Email.parseStr(getTransport().convertJIDToID(item.getJid())); // Email contact = Email.parseStr(getTransport().convertJIDToID(item.getJid()));
String nickname = getTransport().convertJIDToID(item.getJid()); // String nickname = getTransport().convertJIDToID(item.getJid());
if (item.getNickname() != null && !item.getNickname().equals("")) { // if (item.getNickname() != null && !item.getNickname().equals("")) {
nickname = item.getNickname(); // nickname = item.getNickname();
} // }
msnMessenger.renameFriend(contact, nickname); // msnMessenger.renameFriend(contact, nickname);
syncContactGroups(contact, item.getGroups()); // syncContactGroups(contact, item.getGroups());
} }
/** /**
...@@ -212,41 +217,59 @@ public class MSNSession extends TransportSession { ...@@ -212,41 +217,59 @@ public class MSNSession extends TransportSession {
* @param contact Email address of contact. * @param contact Email address of contact.
* @param groups List of groups contact should be in. * @param groups List of groups contact should be in.
*/ */
public void syncContactGroups(Email contact, List<String> groups) { // public void syncContactGroups(String contact, List<String> groups) {
if (groups.isEmpty()) { // if (groups.isEmpty()) {
groups.add("Transport Buddies"); // groups.add("Transport Buddies");
} // }
MsnContact msnContact = msnContacts.get(contact.toString()); // MsnFriend msnContact = msnContacts.get(contact.toString());
// Create groups that do not currently exist. // // Create groups that do not currently exist.
for (String group : groups) { // for (String group : groups) {
if (!msnGroups.containsKey(group)) { // if (!msnGroups.containsKey(group)) {
msnMessenger.addGroup(group); // try {
} // msnMessenger.addGroup(group);
} // }
// Lets update our list of groups. // catch (IOException e) {
for (MsnGroup msnGroup : msnMessenger.getContactList().getGroups()) { // Log.error("Error while adding MSN group.");
storeGroup(msnGroup); // }
} // }
// Make sure contact belongs to groups that we want. // }
for (String group : groups) { // // Lets update our list of groups.
MsnGroup msnGroup = msnGroups.get(group); // for (Group msnGroup : msnMessenger.getContactList().getGroups()) {
if (!msnContact.belongGroup(msnGroup)) { // storeGroup(msnGroup);
msnMessenger.copyFriend(contact, group); // }
} // // Make sure contact belongs to groups that we want.
} // for (String group : groups) {
// Now we will clean up groups that we should no longer belong to. // MsnGroup msnGroup = msnGroups.get(group);
for (MsnGroup msnGroup : msnContact.getBelongGroups()) { // if (!msnContact.belongGroup(msnGroup)) {
if (!groups.contains(msnGroup.getGroupName())) { // msnMessenger.copyFriend(contact, group);
msnMessenger.removeFriend(contact, msnGroup.getGroupId()); // }
} // }
} // // Now we will clean up groups that we should no longer belong to.
} // for (MsnGroup msnGroup : msnContact.getBelongGroups()) {
// if (!groups.contains(msnGroup.getGroupName())) {
// msnMessenger.removeFriend(contact, msnGroup.getGroupId());
// }
// }
// }
/** /**
* @see org.jivesoftware.wildfire.gateway.TransportSession#sendMessage(org.xmpp.packet.JID, String) * @see org.jivesoftware.wildfire.gateway.TransportSession#sendMessage(org.xmpp.packet.JID, String)
*/ */
public void sendMessage(JID jid, String message) { public void sendMessage(JID jid, String message) {
msnMessenger.sendText(Email.parseStr(getTransport().convertJIDToID(jid)), message); String contact = getTransport().convertJIDToID(jid);
SwitchboardSession session = msnMessenger.findSwitchboardSession(contact);
if (session == null) {
session = new SwitchboardSession(msnMessenger, ServerInfo.getDefaultServerInfo(), contact);
}
try {
MimeMessage mimeMessage = new MimeMessage();
mimeMessage.setKind(MimeMessage.KIND_MESSAGE);
mimeMessage.setMessage(message);
session.sendMessage(mimeMessage);
}
catch (IOException e) {
Log.error("Failed to send MSN message.");
}
} }
/** /**
...@@ -260,13 +283,13 @@ public class MSNSession extends TransportSession { ...@@ -260,13 +283,13 @@ public class MSNSession extends TransportSession {
* @see org.jivesoftware.wildfire.gateway.TransportSession#retrieveContactStatus(org.xmpp.packet.JID) * @see org.jivesoftware.wildfire.gateway.TransportSession#retrieveContactStatus(org.xmpp.packet.JID)
*/ */
public void retrieveContactStatus(JID jid) { public void retrieveContactStatus(JID jid) {
MsnContact msnContact = msnContacts.get(getTransport().convertJIDToID(jid)); MsnFriend msnContact = msnContacts.get(getTransport().convertJIDToID(jid));
if (msnContact == null) { if (msnContact == null) {
return; return;
} }
Presence p = new Presence(); Presence p = new Presence();
p.setTo(getJID()); p.setTo(getJID());
p.setFrom(getTransport().convertIDToJID(msnContact.getEmail().toString())); p.setFrom(getTransport().convertIDToJID(msnContact.getLoginName()));
((MSNTransport)getTransport()).setUpPresencePacket(p, msnContact.getStatus()); ((MSNTransport)getTransport()).setUpPresencePacket(p, msnContact.getStatus());
getTransport().sendPacket(p); getTransport().sendPacket(p);
} }
...@@ -281,13 +304,13 @@ public class MSNSession extends TransportSession { ...@@ -281,13 +304,13 @@ public class MSNSession extends TransportSession {
} }
catch (IllegalStateException e) { catch (IllegalStateException e) {
// Hrm, not logged in? Lets fix that. // Hrm, not logged in? Lets fix that.
msnMessenger.getOwner().setInitStatus(((MSNTransport)getTransport()).convertJabStatusToMSN(presenceType)); msnMessenger.setInitialStatus(((MSNTransport)getTransport()).convertJabStatusToMSN(presenceType));
msnMessenger.login(); msnMessenger.login();
} }
} }
else { else {
// Hrm, not logged in? Lets fix that. // Hrm, not logged in? Lets fix that.
msnMessenger.getOwner().setInitStatus(((MSNTransport)getTransport()).convertJabStatusToMSN(presenceType)); msnMessenger.setInitialStatus(((MSNTransport)getTransport()).convertJabStatusToMSN(presenceType));
msnMessenger.login(); msnMessenger.login();
} }
} }
...@@ -296,10 +319,10 @@ public class MSNSession extends TransportSession { ...@@ -296,10 +319,10 @@ public class MSNSession extends TransportSession {
* @see org.jivesoftware.wildfire.gateway.TransportSession#resendContactStatuses(org.xmpp.packet.JID) * @see org.jivesoftware.wildfire.gateway.TransportSession#resendContactStatuses(org.xmpp.packet.JID)
*/ */
public void resendContactStatuses(JID jid) { public void resendContactStatuses(JID jid) {
for (MsnContact friend : msnContacts.values()) { for (MsnFriend friend : msnContacts.values()) {
Presence p = new Presence(); Presence p = new Presence();
p.setTo(getJID()); p.setTo(getJID());
p.setFrom(getTransport().convertIDToJID(friend.getEmail().toString())); p.setFrom(getTransport().convertIDToJID(friend.getLoginName()));
((MSNTransport)getTransport()).setUpPresencePacket(p, friend.getStatus()); ((MSNTransport)getTransport()).setUpPresencePacket(p, friend.getStatus());
getTransport().sendPacket(p); getTransport().sendPacket(p);
} }
......
...@@ -18,7 +18,7 @@ import org.jivesoftware.wildfire.gateway.Registration; ...@@ -18,7 +18,7 @@ import org.jivesoftware.wildfire.gateway.Registration;
import org.jivesoftware.wildfire.gateway.TransportSession; import org.jivesoftware.wildfire.gateway.TransportSession;
import org.xmpp.packet.JID; import org.xmpp.packet.JID;
import org.xmpp.packet.Presence; import org.xmpp.packet.Presence;
import net.sf.jml.MsnUserStatus; import rath.msnm.UserStatus;
/** /**
* MSN Transport Interface. * MSN Transport Interface.
...@@ -101,27 +101,27 @@ public class MSNTransport extends BaseTransport { ...@@ -101,27 +101,27 @@ public class MSNTransport extends BaseTransport {
* *
* @param jabStatus Jabber presence type. * @param jabStatus Jabber presence type.
*/ */
public MsnUserStatus convertJabStatusToMSN(PresenceType jabStatus) { public String convertJabStatusToMSN(PresenceType jabStatus) {
if (jabStatus == PresenceType.available) { if (jabStatus == PresenceType.available) {
return MsnUserStatus.ONLINE; return UserStatus.ONLINE;
} }
else if (jabStatus == PresenceType.away) { else if (jabStatus == PresenceType.away) {
return MsnUserStatus.AWAY; return UserStatus.AWAY_FROM_COMPUTER;
} }
else if (jabStatus == PresenceType.xa) { else if (jabStatus == PresenceType.xa) {
return MsnUserStatus.AWAY; return UserStatus.AWAY_FROM_COMPUTER;
} }
else if (jabStatus == PresenceType.dnd) { else if (jabStatus == PresenceType.dnd) {
return MsnUserStatus.BUSY; return UserStatus.BUSY;
} }
else if (jabStatus == PresenceType.chat) { else if (jabStatus == PresenceType.chat) {
return MsnUserStatus.ONLINE; return UserStatus.ONLINE;
} }
else if (jabStatus == PresenceType.unavailable) { else if (jabStatus == PresenceType.unavailable) {
return MsnUserStatus.OFFLINE; return UserStatus.OFFLINE;
} }
else { else {
return MsnUserStatus.ONLINE; return UserStatus.ONLINE;
} }
} }
...@@ -130,29 +130,29 @@ public class MSNTransport extends BaseTransport { ...@@ -130,29 +130,29 @@ public class MSNTransport extends BaseTransport {
* *
* @param msnStatus MSN ContactStatus constant. * @param msnStatus MSN ContactStatus constant.
*/ */
public void setUpPresencePacket(Presence packet, MsnUserStatus msnStatus) { public void setUpPresencePacket(Presence packet, String msnStatus) {
if (msnStatus.equals(MsnUserStatus.ONLINE)) { if (msnStatus.equals(UserStatus.ONLINE)) {
// We're good, send as is.. // We're good, send as is..
} }
else if (msnStatus.equals(MsnUserStatus.AWAY)) { else if (msnStatus.equals(UserStatus.AWAY_FROM_COMPUTER)) {
packet.setShow(Presence.Show.away); packet.setShow(Presence.Show.away);
} }
else if (msnStatus.equals(MsnUserStatus.BE_RIGHT_BACK)) { else if (msnStatus.equals(UserStatus.BE_RIGHT_BACK)) {
packet.setShow(Presence.Show.away); packet.setShow(Presence.Show.away);
} }
else if (msnStatus.equals(MsnUserStatus.BUSY)) { else if (msnStatus.equals(UserStatus.BUSY)) {
packet.setShow(Presence.Show.dnd); packet.setShow(Presence.Show.dnd);
} }
else if (msnStatus.equals(MsnUserStatus.IDLE)) { else if (msnStatus.equals(UserStatus.IDLE)) {
packet.setShow(Presence.Show.away); packet.setShow(Presence.Show.away);
} }
else if (msnStatus.equals(MsnUserStatus.OFFLINE)) { else if (msnStatus.equals(UserStatus.OFFLINE)) {
packet.setType(Presence.Type.unavailable); packet.setType(Presence.Type.unavailable);
} }
else if (msnStatus.equals(MsnUserStatus.ON_THE_PHONE)) { else if (msnStatus.equals(UserStatus.ON_THE_PHONE)) {
packet.setShow(Presence.Show.dnd); packet.setShow(Presence.Show.dnd);
} }
else if (msnStatus.equals(MsnUserStatus.OUT_TO_LUNCH)) { else if (msnStatus.equals(UserStatus.ON_THE_LUNCH)) {
packet.setShow(Presence.Show.xa); packet.setShow(Presence.Show.xa);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment