public void applyInfoToFriendFromBuddyInfo(final Friend friend, BuddyInfo info) { friend.setIsAvailable(true); long status = info.getIcqStatus(); if ((status & FullUserInfo.ICQSTATUS_AWAY) == 1) { friend.setStatus(Friend.Status.AWAY); } else if (((status & FullUserInfo.ICQSTATUS_DND) == 1)) { friend.setStatus(Friend.Status.DND); } else if ((status & FullUserInfo.ICQSTATUS_OCCUPIED) == 1) { friend.setStatus(Friend.Status.DND); } else if ((status & FullUserInfo.ICQSTATUS_NA) == 1) { friend.setStatus(Friend.Status.NA); } else if ((status & FullUserInfo.ICQSTATUS_DEFAULT) == 1) { friend.setStatus(Friend.Status.AVAILABLE); } else if ((status & FullUserInfo.ICQSTATUS_FFC) == 1) { friend.setStatus(Friend.Status.AVAILABLE); } friend.setStatusMessage(info.getStatusMessage()); // Screenname buddy = new Screenname(friend.getUserName()); // connection.getInfoService().requestDirectoryInfo(buddy); // connection.getInfoService().requestUserProfile(buddy); // int requestId = nextSeqId(); long buddyUIN = Long.parseLong(friend.getUserName()); long ownerUIN = Long.parseLong(getUserName()); MetaShortInfoRequest req = new MetaShortInfoRequest(ownerUIN, 2, buddyUIN); // ShortInfoResponseRetriever responseRetriever = new ShortInfoResponseRetriever(); connection .getInfoService() .getOscarConnection() .sendSnacRequest( req, new SnacRequestAdapter() { public void handleResponse(SnacResponseEvent e) { SnacCommand snac = e.getSnacCommand(); if (snac instanceof MetaShortInfoCmd) { MetaShortInfoCmd infoSnac = (MetaShortInfoCmd) snac; String nick = infoSnac.getNickname(); String firstName = infoSnac.getFirstName(); String lastName = infoSnac.getLastName(); String fullname = firstName + " " + lastName; if (fullname.length() < 2) fullname = nick; friend.setName(fullname); } } }); // synchronized(responseRetriever) // { // try{ // responseRetriever.wait(30000); // } // catch (InterruptedException ex) // { // } // } }