1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-26 16:22:06 +01:00

Added RosterEntry#getStatus. SMACK-105

git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@3026 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Gaston Dombiak 2005-11-03 16:53:07 +00:00 committed by gato
parent 90ada2fc42
commit 1cdefcc796
2 changed files with 23 additions and 4 deletions

View file

@ -671,7 +671,7 @@ public class Roster {
for (Iterator i=rosterPacket.getRosterItems(); i.hasNext(); ) { for (Iterator i=rosterPacket.getRosterItems(); i.hasNext(); ) {
RosterPacket.Item item = (RosterPacket.Item)i.next(); RosterPacket.Item item = (RosterPacket.Item)i.next();
RosterEntry entry = new RosterEntry(item.getUser(), item.getName(), RosterEntry entry = new RosterEntry(item.getUser(), item.getName(),
item.getItemType(), connection); item.getItemType(), item.getItemStatus(), connection);
// If the packet is of the type REMOVE then remove the entry // If the packet is of the type REMOVE then remove the entry
if (RosterPacket.ItemType.REMOVE.equals(item.getItemType())) { if (RosterPacket.ItemType.REMOVE.equals(item.getItemType())) {
@ -700,7 +700,8 @@ public class Roster {
// If the entry was in then list then update its state with the new values // If the entry was in then list then update its state with the new values
RosterEntry existingEntry = RosterEntry existingEntry =
(RosterEntry) entries.get(entries.indexOf(entry)); (RosterEntry) entries.get(entries.indexOf(entry));
existingEntry.updateState(entry.getName(), entry.getType()); existingEntry
.updateState(entry.getName(), entry.getType(), entry.getStatus());
} }
// If the roster entry belongs to any groups, remove it from the // If the roster entry belongs to any groups, remove it from the
// list of unfiled entries. // list of unfiled entries.

View file

@ -36,6 +36,7 @@ public class RosterEntry {
private String user; private String user;
private String name; private String name;
private RosterPacket.ItemType type; private RosterPacket.ItemType type;
private RosterPacket.ItemStatus status;
private XMPPConnection connection; private XMPPConnection connection;
/** /**
@ -44,12 +45,15 @@ public class RosterEntry {
* @param user the user. * @param user the user.
* @param name the nickname for the entry. * @param name the nickname for the entry.
* @param type the subscription type. * @param type the subscription type.
* @param status the subscription status (related to subscriptions pending to be approbed).
* @param connection a connection to the XMPP server. * @param connection a connection to the XMPP server.
*/ */
RosterEntry(String user, String name, RosterPacket.ItemType type, XMPPConnection connection) { RosterEntry(String user, String name, RosterPacket.ItemType type,
RosterPacket.ItemStatus status, XMPPConnection connection) {
this.user = user; this.user = user;
this.name = name; this.name = name;
this.type = type; this.type = type;
this.status = status;
this.connection = connection; this.connection = connection;
} }
@ -93,10 +97,12 @@ public class RosterEntry {
* *
* @param name the nickname for the entry. * @param name the nickname for the entry.
* @param type the subscription type. * @param type the subscription type.
* @param status the subscription status (related to subscriptions pending to be approbed).
*/ */
void updateState(String name, RosterPacket.ItemType type) { void updateState(String name, RosterPacket.ItemType type, RosterPacket.ItemStatus status) {
this.name = name; this.name = name;
this.type = type; this.type = type;
this.status = status;
} }
/** /**
@ -127,6 +133,17 @@ public class RosterEntry {
return type; return type;
} }
/**
* Returns the roster subscription status of the entry. When the status is
* RosterPacket.ItemStatus.SUBSCRIPTION_PENDING, the contact has to answer the subscription
* request.
*
* @return the status.
*/
public RosterPacket.ItemStatus getStatus() {
return status;
}
public String toString() { public String toString() {
StringBuffer buf = new StringBuffer(); StringBuffer buf = new StringBuffer();
if (name != null) { if (name != null) {
@ -163,6 +180,7 @@ public class RosterEntry {
static RosterPacket.Item toRosterItem(RosterEntry entry) { static RosterPacket.Item toRosterItem(RosterEntry entry) {
RosterPacket.Item item = new RosterPacket.Item(entry.getUser(), entry.getName()); RosterPacket.Item item = new RosterPacket.Item(entry.getUser(), entry.getName());
item.setItemType(entry.getType()); item.setItemType(entry.getType());
item.setItemStatus(entry.getStatus());
// Set the correct group names for the item. // Set the correct group names for the item.
for (Iterator j=entry.getGroups(); j.hasNext(); ) { for (Iterator j=entry.getGroups(); j.hasNext(); ) {
RosterGroup group = (RosterGroup)j.next(); RosterGroup group = (RosterGroup)j.next();