You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by be...@apache.org on 2008/04/09 09:27:55 UTC

svn commit: r646210 - in /labs/vysper/src: main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java test/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistryTestCase.java

Author: berndf
Date: Wed Apr  9 00:27:52 2008
New Revision: 646210

URL: http://svn.apache.org/viewvc?rev=646210&view=rev
Log:
[vysper] fix resource unbinding (LABS-111)

Modified:
    labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java
    labs/vysper/src/test/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistryTestCase.java

Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java?rev=646210&r1=646209&r2=646210&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java Wed Apr  9 00:27:52 2008
@@ -66,7 +66,14 @@
     }
 
     public void unbindResource(String resourceId) {
-        boundResources.remove(resourceId);
+        synchronized (boundResources) {
+            synchronized (entityResources) {
+                SessionContext sessionContext = boundResources.get(resourceId);
+                List<String> resourceListForSession = getResourceList(sessionContext.getInitiatingEntity());
+                resourceListForSession.remove(resourceId);
+                boundResources.remove(resourceId);
+            }
+        }
     }
 
     public void unbindSession(SessionContext unbindingSessionContext) {
@@ -79,13 +86,13 @@
 
                 // actually remove from bound resources
                 for (String removeResourceId : removeResourceIds) {
-                    unbindResource(removeResourceId);
+                    boundResources.remove(removeResourceId);
                 }
 
                 // actually remove from entity map
                 List<String> resourceList = getResourceList(unbindingSessionContext.getInitiatingEntity());
                 if (resourceList != null) {
-                    resourceList.remove(removeResourceIds);
+                    resourceList.removeAll(removeResourceIds);
                 }
             }
         }

Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistryTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistryTestCase.java?rev=646210&r1=646209&r2=646210&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistryTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistryTestCase.java Wed Apr  9 00:27:52 2008
@@ -135,7 +135,7 @@
         assertFalse(resourceId1.equals(resourceId2));
     }
     
-    public void testUnbindSimple() throws EntityFormatException {
+    public void testUnbindResourceSimple() throws EntityFormatException {
         EntityImpl entity = EntityImpl.parse("me@test");
         
         TestSessionContext sessionContext1 = createSessionContext(entity);
@@ -143,6 +143,19 @@
         assertEquals(sessionContext1, resourceRegistry.getSessionContext(resourceId1));
         
         resourceRegistry.unbindResource(resourceId1);
+        
+        assertNull(resourceRegistry.getSessionContext(resourceId1));
+        assertEquals(0, resourceRegistry.getBoundResources(entity).size());
+    }
+    
+    public void testUnbindSessionSimple() throws EntityFormatException {
+        EntityImpl entity = EntityImpl.parse("me@test");
+        
+        TestSessionContext sessionContext1 = createSessionContext(entity);
+        String resourceId1 = resourceRegistry.bindSession(sessionContext1);
+        assertEquals(sessionContext1, resourceRegistry.getSessionContext(resourceId1));
+        
+        resourceRegistry.unbindSession(sessionContext1);
         
         assertNull(resourceRegistry.getSessionContext(resourceId1));
         assertEquals(0, resourceRegistry.getBoundResources(entity).size());



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org