summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/isode/stroke/roster/XMPPRosterImpl.java6
-rw-r--r--src/com/isode/stroke/roster/XMPPRosterItem.java10
2 files changed, 15 insertions, 1 deletions
diff --git a/src/com/isode/stroke/roster/XMPPRosterImpl.java b/src/com/isode/stroke/roster/XMPPRosterImpl.java
index d87a20e..7b80104 100644
--- a/src/com/isode/stroke/roster/XMPPRosterImpl.java
+++ b/src/com/isode/stroke/roster/XMPPRosterImpl.java
@@ -75,3 +75,7 @@ public class XMPPRosterImpl extends XMPPRoster {
public Collection<XMPPRosterItem> getItems() {
- return entries_.values();
+ Collection<XMPPRosterItem> items = new ArrayList<XMPPRosterItem>(entries_.size());
+ for (XMPPRosterItem item : entries_.values()) {
+ items.add(new XMPPRosterItem(item));
+ }
+ return items;
}
diff --git a/src/com/isode/stroke/roster/XMPPRosterItem.java b/src/com/isode/stroke/roster/XMPPRosterItem.java
index 1412f83..25ebc47 100644
--- a/src/com/isode/stroke/roster/XMPPRosterItem.java
+++ b/src/com/isode/stroke/roster/XMPPRosterItem.java
@@ -7,2 +7,3 @@ package com.isode.stroke.roster;
import java.util.Collection;
+import java.util.ArrayList;
@@ -23,2 +24,11 @@ public class XMPPRosterItem {
}
+
+ // Copy constructor
+ public XMPPRosterItem(XMPPRosterItem from) {
+ this(from.jid, from.name, null, from.subscription);
+ if (from.groups != null) {
+ groups = new ArrayList<String>(from.groups.size());
+ groups.addAll(from.groups);
+ }
+ }