Add list of pending contacts in messenger
********************************
In MsnMessenger.java :
********************************
/**
* @return pending list
*/
public ArrayList<MsnContactPending> getPendingList();
********************************
In AbstractMessenger.java
********************************
private ArrayList<MsnContactPending> pendingList = new ArrayList<MsnContactPending>(0);
public ArrayList<MsnContactPending> getPendingList(){
return pendingList;
}
********************************
in ContactList.java : replace method processMembers
********************************
private void processMembers(String xml){
System.out.println(xml);
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
dbfactory.setIgnoringComments(true);
DocumentBuilder docBuilder;
Document doc;
try{
docBuilder = dbfactory.newDocumentBuilder();
ByteArrayInputStream in = new ByteArrayInputStream(xml.getBytes("UTF-8"));
doc = docBuilder.parse(in);
}
catch (ParserConfigurationException ex){
logger.error("",ex);
return;
}catch (SAXException ex){
logger.error("",ex);
return;
}catch (IOException ex){
logger.error("",ex);
return;
}
Element el = XmlUtils.locateElement(doc.getDocumentElement(),"FindMembershipResponse","xmlns",
"http://www.msn.com/webservices/AddressBook");
List membershipsList = XmlUtils.findChildrenByChain(el,new String[] { "FindMembershipResult","Services","Service",
"Memberships" });
Iterator memberIter = membershipsList.iterator();
while (memberIter.hasNext()){
Element e1 = (Element)memberIter.next();
List memberships = XmlUtils.findChildren(e1,"Membership");
Iterator iter = memberships.iterator();
while (iter.hasNext()){
Element m = (Element)iter.next();
Element mr = XmlUtils.findChild(m,"MemberRole");
String role = XmlUtils.getText(mr);
MemberRole memberRole = (MemberRole)membersRoles.get(role);
// there maybe some member roles we are not interested for
if (memberRole == null) continue;
if (role.equals("Pending")
&& XmlUtils.getText(
(Element)XmlUtils.findChildrenByChain((Element)e1.getParentNode(),
new String[] { "Info","Handle","Type" }).get(0)).equals("Messenger")){
List ms = XmlUtils.locateElements(m,"Member","xsi:type","PassportMember");
Iterator i = ms.iterator();
while (i.hasNext()){
Element mem = (Element)i.next();
Element mn = XmlUtils.findChild(mem,"DisplayName");
String name = XmlUtils.getText(mn);
mn = XmlUtils.findChild(mem,"JoinedDate");
Date joinedDate = null;
try{
joinedDate = DatatypeFactory.newInstance().newXMLGregorianCalendar(XmlUtils.getText(mn))
.toGregorianCalendar().getTime();
}catch (DatatypeConfigurationException e){
e.printStackTrace();
}
mn = XmlUtils.findChild(mem,"PassportName");
String email = XmlUtils.getText(mn);
ArrayList<MsnContactPending> pendingList = ((AbstractMessenger)session.getMessenger()).getPendingList();
pendingList.add(new MsnContactPending(Email.parseStr(email),name,joinedDate));
}
}else{
List ms = XmlUtils.locateElements(m,"Member","xsi:type","PassportMember");
Iterator i = ms.iterator();
while (i.hasNext()){
Element mem = (Element)i.next();
Element mn = XmlUtils.findChild(mem,"PassportName");
String name = XmlUtils.getText(mn);
memberRole.addMember(name);
}
}
}
}
}
********************************
Add MsnContactPending.java
********************************
***
Example :
//see
MsnContactPending[] pending= messenger.getPendingList().toArray(new MsnContactPending[] {});
System.out.println(Arrays.toString(pending));
//add
if (pending.length != 0) messenger.addFriend(pending[0].getEmail(),null);
Pending contact