Author: berndf
Date: Fri Sep 16 07:16:31 2011
New Revision: 1171408

URL: http://svn.apache.org/viewvc?rev=1171408&view=rev
Log:
VYSPER-293: remove a contact from in-memory roster

Modified:
    
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java
    
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/AbstractRosterManager.java

Modified: 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java?rev=1171408&r1=1171407&r2=1171408&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java
 (original)
+++ 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java
 Fri Sep 16 07:16:31 2011
@@ -26,7 +26,7 @@ import java.util.Map;
 import org.apache.vysper.xmpp.addressing.Entity;
 
 /**
- * a mutable roster implementation
+ * a mutable roster implementation, only holding items in memory
  *
  * @author The Apache MINA Project ([email protected])
  */
@@ -46,4 +46,8 @@ public class MutableRoster implements Ro
             throw new RuntimeException("roster item and item's jid must not be 
null.");
         items.put(rosterItem.getJid().getBareJID(), rosterItem);
     }
+
+    public boolean removeItem(Entity contact) {
+        return items.remove(contact) != null;
+    }
 }

Modified: 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/AbstractRosterManager.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/AbstractRosterManager.java?rev=1171408&r1=1171407&r2=1171408&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/AbstractRosterManager.java
 (original)
+++ 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/AbstractRosterManager.java
 Fri Sep 16 07:16:31 2011
@@ -44,7 +44,9 @@ public abstract class AbstractRosterMana
     public void addContact(Entity jid, RosterItem rosterItem) throws 
RosterException {
         if (jid == null)
             throw new RosterException("jid not provided");
-        MutableRoster mutableRoster = (MutableRoster) retrieve(jid);
+        final Roster roster = retrieve(jid);
+        if (roster instanceof MutableRoster) throw new RosterException("roster 
is not mutable");
+        MutableRoster mutableRoster = (MutableRoster)roster;
         if (mutableRoster == null) {
             mutableRoster = (MutableRoster) addNewRosterInternal(jid);
         }
@@ -66,6 +68,9 @@ public abstract class AbstractRosterMana
         Roster roster = retrieve(jidUser);
         if (roster == null)
             throw new RosterException("roster not available for jid = " + 
jidUser.getFullQualifiedName());
+        if (!(roster instanceof MutableRoster)) throw new 
RosterException("roster is not mutable");
+        MutableRoster mutableRoster = (MutableRoster)roster;
+        final boolean success = mutableRoster.removeItem(jidContact);
     }
 
     public String getServiceName() {


Reply via email to