johann - 2009-02-19

Hello,

I'm trying to retrieve my MSN contacts phone numbers with Java MSN Messenger Library (JML)in a desktop application.
Names, addresses and photos are good returned but phone numbers values are always returned as null values. I think the problem is in method con.getProperties().getProperty(MsnUserPropertyType)
Somebody can help me?

code :

package net.sf.jml.example;

import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.sf.jml.MsnContact;
import net.sf.jml.MsnMessenger;
import net.sf.jml.MsnOwner;
import net.sf.jml.MsnProtocol;
import net.sf.jml.MsnSwitchboard;
import net.sf.jml.MsnUserPropertyType;
import net.sf.jml.MsnUserStatus;
import net.sf.jml.event.MsnAdapter;
import net.sf.jml.event.MsnContactListAdapter;
import net.sf.jml.impl.MsnContactImpl;
import net.sf.jml.impl.MsnMessengerFactory;
import net.sf.jml.message.MsnControlMessage;
import net.sf.jml.message.MsnDatacastMessage;
import net.sf.jml.message.MsnInstantMessage;
import net.sf.jml.message.MsnSystemMessage;
import net.sf.jml.message.MsnUnknownMessage;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class SimpleMsn
{
private static final Log log = LogFactory.getLog(SimpleMsn.class);

private String email;

private String password;

private MsnMessenger messenger;

public static String emailPattern = "^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$";

public SimpleMsn(String email, String password)
{
this.email = email;
this.password = password;
}

public void start()
{
messenger = MsnMessengerFactory.createMsnMessenger(email,password);
messenger.setSupportedProtocol(new MsnProtocol[] { MsnProtocol.MSNP12 });
messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);
messenger.setLogIncoming(true);
messenger.setLogOutgoing(true);

messenger.addContactListListener(new MsnContactListAdapter()
{
public void contactStatusChanged(MsnMessenger msn, MsnContact con)
{
System.out.println(con.getDisplayName());
System.out.println(con.getPersonalMessage());
System.out.println(((MsnContactImpl) con).getCurrentMedia());
}

public void contactListInitCompleted(MsnMessenger messenger)
{
listContacts();
}
});

messenger.login();
try
{
Thread.sleep(15000);
// listContacts();
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
messenger.logout();
}

private void listContacts()
{

MsnUserPropertyType msnuserpropertytypeHomePhone = MsnUserPropertyType.PHH;
MsnUserPropertyType msnuserpropertytypeWorkPhone = MsnUserPropertyType.PHW;
MsnUserPropertyType msnuserpropertytypeMobilePhone = MsnUserPropertyType.PHM;
MsnUserPropertyType msnuserpropertytypeDisplayName = MsnUserPropertyType.MFN;

MsnContact[] cons = messenger.getContactList().getContacts();

for (MsnContact con : cons) {

System.out.println("DisplayName : " + con.getDisplayName());
System.out.println("Email : " + con.getEmail());
System.out.println("Status : " + con.getStatus());
System.out.println("PersonnalMessage : " + con.getPersonalMessage());
System.out.println("Id : " + con.getId());
System.out.println("Client Id : " + con.getClientId());
System.out.println("Avatar : " + con.getAvatar());
System.out.println("Properties Home Phone : " + con.getProperties().getProperty(msnuserpropertytypeHomePhone));
System.out.println("Properties Work Phone : " + con.getProperties().getProperty(msnuserpropertytypeWorkPhone));
System.out.println("Properties Mobile Phone : " + con.getProperties().getProperty(msnuserpropertytypeMobilePhone));
System.out.println("Properties Display Name : " + con.getProperties().getProperty(msnuserpropertytypeDisplayName) + "\n");
}
}

private static class MsnListener extends MsnAdapter
{
// ...
}

public static void main(String[] args) throws Exception
{
String email = "myaddress@hotmail.com";
String pass = "mypass";

new SimpleMsn(email,pass).start();
}
}

Thanks for your answers