From 41733effe91a44f54a7a9996d3a64f9e46515dbe Mon Sep 17 00:00:00 2001 From: Matt Tucker Date: Fri, 21 Nov 2008 04:54:59 +0000 Subject: [PATCH] Updated handling of offline presence. git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@10916 b35dd754-fafc-0310-a699-88a17e54d16e --- source/org/jivesoftware/smack/Roster.java | 18 +++++++++++++++++- test/org/jivesoftware/smack/RosterTest.java | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/source/org/jivesoftware/smack/Roster.java b/source/org/jivesoftware/smack/Roster.java index 8648f9077..bed203ed8 100644 --- a/source/org/jivesoftware/smack/Roster.java +++ b/source/org/jivesoftware/smack/Roster.java @@ -440,6 +440,9 @@ public class Roster { for (String resource : userPresences.keySet()) { Presence p = userPresences.get(resource); + if (!p.isAvailable()) { + continue; + } // Chose presence with highest priority first. if (presence == null || p.getPriority() > presence.getPriority()) { presence = p; @@ -523,7 +526,20 @@ public class Roster { return Arrays.asList(presence).iterator(); } else { - return userPresences.values().iterator(); + Collection answer = new ArrayList(); + for (Presence presence : userPresences.values()) { + if (presence.isAvailable()) { + answer.add(presence); + } + } + if (!answer.isEmpty()) { + return answer.iterator(); + } + else { + Presence presence = new Presence(Presence.Type.unavailable); + presence.setFrom(user); + return Arrays.asList(presence).iterator(); + } } } diff --git a/test/org/jivesoftware/smack/RosterTest.java b/test/org/jivesoftware/smack/RosterTest.java index f0a6445e6..f434d52c0 100644 --- a/test/org/jivesoftware/smack/RosterTest.java +++ b/test/org/jivesoftware/smack/RosterTest.java @@ -523,7 +523,7 @@ public class RosterTest extends SmackTestCase { Presence.Type.unavailable, presence.getType()); // Check that the returned presences are correct - Iterator presences = roster.getPresences(getBareJID(1)); + Iterator presences = roster.getPresences(getBareJID(1)); int count = 0; while (presences.hasNext()) { count++;