Author: ngn
Date: Fri Aug 14 09:18:53 2009
New Revision: 804134

URL: http://svn.apache.org/viewvc?rev=804134&view=rev
Log:
Implement exit room (VYSPER-110)
Implementing HandlerDictionary for the module

Added:
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
      - copied, changed from r802822, 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandler.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCPresenceHandlerTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java
      - copied, changed from r802822, 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandlerTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerExitRoomTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerVerifyTestCase.java
Removed:
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandler.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestUtil.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandlerTestCase.java
Modified:
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Conference.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/InMemoryRoomStorageProvider.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/RoomStorageProvider.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractServerInfoDiscoTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCItemsDiscoTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCRoomInfoDiscoTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCServerInfoDiscoTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/RoomTestCase.java

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
 Fri Aug 14 09:18:53 2009
@@ -19,17 +19,15 @@
  */
 package org.apache.vysper.xmpp.modules.extension.xep0045_muc;
 
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
+import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.modules.DefaultDiscoAwareModule;
+import 
org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler.MUCPresenceHandler;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
 import 
org.apache.vysper.xmpp.modules.extension.xep0045_muc.storage.OccupantStorageProvider;
 import 
org.apache.vysper.xmpp.modules.extension.xep0045_muc.storage.RoomStorageProvider;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.Feature;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.Identity;
 import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoElement;
 import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequestListener;
@@ -38,7 +36,7 @@
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ServerInfoRequestListener;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscoveryRequestException;
 import org.apache.vysper.xmpp.protocol.HandlerDictionary;
-import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.SubdomainHandlerDictionary;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -51,14 +49,17 @@
 public class MUCModule extends DefaultDiscoAwareModule implements 
ServerInfoRequestListener, InfoRequestListener, ItemRequestListener {
 
     private Conference conference;
+    private Entity domain;
     
     private final Logger logger = LoggerFactory.getLogger(MUCModule.class);
     
-    public MUCModule() {
+    public MUCModule(Entity domain) {
+        this.domain = domain;
         this.conference = new Conference("Conference");
     }
     
-    public MUCModule(Conference conference) {
+    public MUCModule(Entity domain, Conference conference) {
+        this.domain = domain;
         this.conference = conference;
     }
 
@@ -136,8 +137,13 @@
     }
     
     @Override
-    protected void addHandlerDictionaries(List<HandlerDictionary> dictionary) {
+    protected void addHandlerDictionaries(List<HandlerDictionary> 
dictionaries) {
+        // MUC is only supported for running on a subdomain
         
+        SubdomainHandlerDictionary dictionary = new 
SubdomainHandlerDictionary(domain);
+        dictionary.register(new MUCPresenceHandler(conference));
+        
+        dictionaries.add(dictionary);
     }
 
     /**

Copied: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
 (from r802822, 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandler.java)
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java?p2=mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java&p1=mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandler.java&r1=802822&r2=804134&rev=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandler.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
 Fri Aug 14 09:18:53 2009
@@ -19,6 +19,8 @@
  */
 package org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler;
 
+import java.util.Set;
+
 import org.apache.vysper.compliance.SpecCompliant;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
@@ -49,19 +51,34 @@
  * @author The Apache MINA Project ([email protected])
  */
 @SpecCompliant(spec="xep-0045", section="7.1", status= 
SpecCompliant.ComplianceStatus.IN_PROGRESS, coverage = 
SpecCompliant.ComplianceCoverage.PARTIAL)
-public class MUCEnterRoomHandler extends DefaultPresenceHandler {
+public class MUCPresenceHandler extends DefaultPresenceHandler {
 
-    final Logger logger = LoggerFactory.getLogger(MUCEnterRoomHandler.class);
+    final Logger logger = LoggerFactory.getLogger(MUCPresenceHandler.class);
 
     private Conference conference;
     
-    public MUCEnterRoomHandler(Conference conference) {
+    public MUCPresenceHandler(Conference conference) {
         this.conference = conference;
     }
 
     @Override
     protected boolean verifyNamespace(Stanza stanza) {
-        return verifyInnerNamespace(stanza, NamespaceURIs.XEP0045_MUC);
+        // either, the stanza should have a x element with the MUC namespace. 
Or, no extension 
+        // element at all. Else, return false
+        
+        XMLElement xElement = stanza.getFirstInnerElement();
+        if(xElement != null && xElement.getName().equals("x") 
+                && 
xElement.getNamespaceURI().equals(NamespaceURIs.XEP0045_MUC)) {
+            // got x element and in the correct namespace
+            return true;
+        } else if(xElement != null && xElement.getNamespaceURI() == null) {
+            // no extension namespace, ok
+            return true;
+        } else if(xElement == null) {
+            return true;
+        } else {
+            return false;
+        }
     }
 
     private Stanza sendError(Entity roomJid, Entity occupantJid, String type, 
String error) {
@@ -92,18 +109,31 @@
     protected Stanza executePresenceLogic(PresenceStanza stanza, 
ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext) {
         // TODO handle null
         Entity roomAndNick = stanza.getTo();
+        // TODO handle null
+        Entity occupantJid = stanza.getFrom();
         
         Entity roomJid = roomAndNick.getBareJID();
         String nick = roomAndNick.getResource();
         
-        // TODO handle null
-        Entity newOccupantJid = stanza.getFrom();
-        
         // user did not send nick name
         if(nick == null) {
-            return sendError(roomJid, newOccupantJid, "modify", 
"jid-malformed");
+            return sendError(roomJid, occupantJid, "modify", "jid-malformed");
+        }
+
+        String type = stanza.getType();
+        
+        if(type == null) {
+            return enterRoom(stanza, roomJid, occupantJid, nick, 
sessionContext);
+        } else if(type.equals("unavailable")) {
+            return exitRoom(stanza, roomJid, occupantJid, nick, 
sessionContext);
+        } else {
+            throw new RuntimeException("Presence type not handled by MUC 
module: " + type);
         }
         
+    }
+
+    private Stanza enterRoom(PresenceStanza stanza, Entity roomJid,
+            Entity newOccupantJid, String nick, SessionContext sessionContext) 
{
         // TODO what to use for the room name?
         Room room = conference.findOrCreateRoom(roomJid, roomJid.getNode());
         
@@ -145,6 +175,34 @@
         return null;
     }
     
+    private Stanza exitRoom(PresenceStanza stanza, Entity roomJid,
+            Entity occupantJid, String nick, SessionContext sessionContext) {
+        Room room = conference.findRoom(roomJid);
+        
+        // room must exist, or we do nothing
+        if(room != null) {
+            Occupant exitingOccupant = room.findOccupant(occupantJid);
+            
+            // user must by in room, or we do nothing
+            if(exitingOccupant != null) {
+                Set<Occupant> allOccupants = room.getOccupants(); 
+                
+                room.removeOccupant(occupantJid);
+                
+                // relay presence of the newly added occupant to all existing 
occupants
+                for(Occupant occupant : allOccupants) {
+                    sendExitRoomPresenceToExisting(exitingOccupant, occupant, 
room, sessionContext);
+                }
+                
+                if(room.isRoomType(RoomType.Temporary) && room.isEmpty()) {
+                    conference.deleteRoom(roomJid);                    
+                }
+            }
+        }
+        
+        return null;
+    }
+
     private void sendExistingOccupantToNewOccupant(Occupant newOccupant, 
Occupant existingOccupant, Room room, SessionContext sessionContext) {
         //            <presence
         //            from='[email protected]/firstwitch'
@@ -205,6 +263,28 @@
         relayStanza(existingOccupant.getJid(), builder.getFinalStanza(), 
sessionContext);
     }
     
+    private void sendExitRoomPresenceToExisting(Occupant exitingOccupant, 
Occupant existingOccupant, Room room, SessionContext sessionContext) {
+        Entity roomAndNewUserNick = new EntityImpl(room.getJID(), 
exitingOccupant.getName());
+        
+        StanzaBuilder builder = 
StanzaBuilder.createPresenceStanza(roomAndNewUserNick, 
existingOccupant.getJid(), null, 
+                PresenceStanzaType.UNAVAILABLE, null, null);
+        builder.startInnerElement("x", NamespaceURIs.XEP0045_MUC_USER);
+        builder.startInnerElement("item")
+            .addAttribute("affiliation", 
exitingOccupant.getAffiliation().toString())
+            // must be none since the user is leaving
+            .addAttribute("role", "none");
+            
+        builder.endInnerElement();
+        
+        if(existingOccupant.getJid().equals(exitingOccupant.getJid())) {
+            // send status to indicate that this is the users own presence
+            builder.startInnerElement("status").addAttribute("code", 
"110").endInnerElement();
+        }
+        builder.endInnerElement();
+
+        relayStanza(existingOccupant.getJid(), builder.getFinalStanza(), 
sessionContext);
+    }
+    
     protected void relayStanza(Entity receiver, Stanza stanza, SessionContext 
sessionContext) {
         try {
                 
sessionContext.getServerRuntimeContext().getStanzaRelay().relay(receiver, 
stanza, new IgnoreFailureStrategy());

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Conference.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Conference.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Conference.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Conference.java
 Fri Aug 14 09:18:53 2009
@@ -74,6 +74,12 @@
         return roomStorageProvider.createRoom(jid, name, types);
     }
     
+
+    public void deleteRoom(Entity jid) {
+        roomStorageProvider.deleteRoom(jid);
+        
+    }
+    
     public Room findRoom(Entity jid) {
         return roomStorageProvider.findRoom(jid);
     }
@@ -125,4 +131,5 @@
         
         return items;
     }
+
 }

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java
 Fri Aug 14 09:18:53 2009
@@ -109,12 +109,22 @@
         return occupant;
     }
 
-    
+    public Occupant findOccupant(Entity occupantJid) {
+        return occupants.get(occupantJid);
+    }
     
     public void removeOccupant(Entity occupantJid) {
         occupants.remove(occupantJid);
     }
     
+    public int getOccupantCount() {
+        return occupants.size();
+    }
+    
+    public boolean isEmpty() {
+        return occupants.isEmpty();
+    }
+    
     public Set<Occupant> getOccupants() {
         Set<Occupant> set = new HashSet<Occupant>();
         for(Occupant occupant : occupants.values()) {

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/InMemoryRoomStorageProvider.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/InMemoryRoomStorageProvider.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/InMemoryRoomStorageProvider.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/InMemoryRoomStorageProvider.java
 Fri Aug 14 09:18:53 2009
@@ -59,6 +59,11 @@
         return rooms.containsKey(jid);
     }
 
+    public void deleteRoom(Entity jid) {
+        rooms.remove(jid);
+        
+    }
+
 
 
     

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/RoomStorageProvider.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/RoomStorageProvider.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/RoomStorageProvider.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/storage/RoomStorageProvider.java
 Fri Aug 14 09:18:53 2009
@@ -37,4 +37,6 @@
     boolean roomExists(Entity jid);
     
     Room findRoom(Entity jid);
+    
+    void deleteRoom(Entity jid);
 }

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -21,6 +21,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.vysper.TestUtil;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.modules.Module;
 import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
@@ -40,6 +41,7 @@
 public abstract class AbstractDiscoTestCase extends TestCase {
     
     protected static final Entity SERVER_JID = 
TestUtil.parseUnchecked("vysper.org");
+    protected static final Entity MODULE_JID = 
TestUtil.parseUnchecked("chat.vysper.org");
     protected static final Entity USER_JID = 
TestUtil.parseUnchecked("[email protected]");
 
     protected abstract Module getModule();

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractServerInfoDiscoTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractServerInfoDiscoTestCase.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractServerInfoDiscoTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractServerInfoDiscoTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -19,20 +19,10 @@
  */
 package org.apache.vysper.xmpp.modules.extension.xep0045_muc;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.modules.Module;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.Identity;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ServerInfoRequestListener;
-import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.stanza.IQStanzaType;
-import org.apache.vysper.xmpp.stanza.StanzaBuilder;
-import org.apache.vysper.xmpp.xmlfragment.XMLElement;
-import org.apache.vysper.xmpp.xmlfragment.XMLSemanticError;
 
 /**
  * 

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCItemsDiscoTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCItemsDiscoTestCase.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCItemsDiscoTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCItemsDiscoTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -51,7 +51,7 @@
         Conference conference = new Conference("Foo");
         conference.createRoom(jid1, "room1");
         conference.createRoom(jid2, "room2");
-        return new MUCModule(conference);
+        return new MUCModule(MODULE_JID, conference);
     }
 
     @Override

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCRoomInfoDiscoTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCRoomInfoDiscoTestCase.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCRoomInfoDiscoTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCRoomInfoDiscoTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -22,6 +22,7 @@
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.vysper.TestUtil;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.modules.Module;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
@@ -41,7 +42,7 @@
     protected Module getModule() {
         Conference conference = new Conference("Foo");
         conference.createRoom(ROOM_JID, "Room1", RoomType.Hidden, 
RoomType.PasswordProtected);
-        return new MUCModule(conference);
+        return new MUCModule(MODULE_JID, conference);
     }
     
     @Override

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCServerInfoDiscoTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCServerInfoDiscoTestCase.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCServerInfoDiscoTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCServerInfoDiscoTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -36,7 +36,7 @@
     @Override
     protected Module getModule() {
         Conference conference = new Conference("Foo");
-        return new MUCModule(conference);
+        return new MUCModule(MODULE_JID, conference);
     }
 
     @Override

Added: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCPresenceHandlerTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCPresenceHandlerTestCase.java?rev=804134&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCPresenceHandlerTestCase.java
 (added)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCPresenceHandlerTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -0,0 +1,47 @@
+package org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler;
+
+import junit.framework.TestCase;
+
+import org.apache.vysper.TestUtil;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.delivery.StanzaReceiverQueue;
+import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
+import org.apache.vysper.xmpp.server.TestSessionContext;
+
+/**
+ */
+public abstract class AbstractMUCPresenceHandlerTestCase extends TestCase {
+    
+    protected TestSessionContext sessionContext;
+
+    protected Entity room1Jid = TestUtil.parseUnchecked("[email protected]");
+    protected Entity room2Jid = TestUtil.parseUnchecked("[email protected]");
+
+    protected Entity room1JidWithNick = 
TestUtil.parseUnchecked("[email protected]/nick");
+    protected Entity room2JidWithNick = 
TestUtil.parseUnchecked("[email protected]/nick");
+    
+    protected Entity occupant1Jid = 
TestUtil.parseUnchecked("[email protected]");
+    protected Entity occupant2Jid = 
TestUtil.parseUnchecked("[email protected]");
+    protected MUCPresenceHandler handler;
+
+    protected Conference conference = new Conference("foo");
+
+    protected StanzaReceiverQueue occupant1Queue = new StanzaReceiverQueue();
+
+    protected StanzaReceiverQueue occupant2Queue = new StanzaReceiverQueue();
+    
+    @Override
+    protected void setUp() throws Exception {
+        sessionContext = 
TestSessionContext.createWithStanzaReceiverRelayAuthenticated();
+        sessionContext.setInitiatingEntity(occupant1Jid);
+        
+        StanzaReceiverRelay stanzaRelay = (StanzaReceiverRelay) 
sessionContext.getServerRuntimeContext().getStanzaRelay();
+        stanzaRelay.add(occupant1Jid, occupant1Queue);
+        stanzaRelay.add(occupant2Jid, occupant2Queue);
+        
+        conference.createRoom(room1Jid, "Room 1");
+        
+        handler = new MUCPresenceHandler(conference);
+    }
+}

Copied: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java
 (from r802822, 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandlerTestCase.java)
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java?p2=mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java&p1=mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandlerTestCase.java&r1=802822&r2=804134&rev=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCEnterRoomHandlerTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -1,22 +1,13 @@
 package org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestCase;
 
 import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.delivery.StanzaReceiverQueue;
-import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.TestUtil;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.RoomType;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.server.TestSessionContext;
 import org.apache.vysper.xmpp.stanza.PresenceStanza;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
@@ -24,44 +15,7 @@
 
 /**
  */
-public class MUCEnterRoomHandlerTestCase extends TestCase {
-    
-    private TestSessionContext sessionContext;
-
-    protected Entity room1Jid = TestUtil.parseUnchecked("[email protected]");
-    protected Entity room2Jid = TestUtil.parseUnchecked("[email protected]");
-
-    protected Entity room1JidWithNick = 
TestUtil.parseUnchecked("[email protected]/nick");
-    protected Entity room2JidWithNick = 
TestUtil.parseUnchecked("[email protected]/nick");
-    
-    protected Entity occupant1Jid = 
TestUtil.parseUnchecked("[email protected]");
-    protected Entity occupant2Jid = 
TestUtil.parseUnchecked("[email protected]");
-    protected MUCEnterRoomHandler handler;
-
-    private Conference conference;
-
-    private StanzaReceiverQueue occupant1Queue;
-
-    private StanzaReceiverQueue occupant2Queue;
-    
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        
-        sessionContext = 
TestSessionContext.createWithStanzaReceiverRelayAuthenticated();
-        sessionContext.setInitiatingEntity(occupant1Jid);
-        
-        StanzaReceiverRelay stanzaRelay = (StanzaReceiverRelay) 
sessionContext.getServerRuntimeContext().getStanzaRelay();
-        occupant1Queue = new StanzaReceiverQueue();
-        occupant2Queue = new StanzaReceiverQueue();
-        stanzaRelay.add(occupant1Jid, occupant1Queue);
-        stanzaRelay.add(occupant2Jid, occupant2Queue);
-        
-        conference = new Conference("foo");
-        conference.createRoom(room1Jid, "Room 1");
-        
-        handler = new MUCEnterRoomHandler(conference);
-    }
+public class MUCPresenceHandlerEnterRoomTestCase extends 
AbstractMUCPresenceHandlerTestCase {
 
     private Stanza enterRoom(Entity occupantJid, Entity roomJid) {
         return enterRoom(occupantJid, roomJid, null);

Added: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerExitRoomTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerExitRoomTestCase.java?rev=804134&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerExitRoomTestCase.java
 (added)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerExitRoomTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -0,0 +1,115 @@
+package org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler;
+
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.RoomType;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+import org.apache.vysper.xmpp.xmlfragment.XMLSemanticError;
+
+/**
+ */
+public class MUCPresenceHandlerExitRoomTestCase extends 
AbstractMUCPresenceHandlerTestCase {
+    
+    private Stanza exitRoom(Entity occupantJid, Entity roomJid) {
+        StanzaBuilder stanzaBuilder = 
StanzaBuilder.createPresenceStanza(occupantJid, roomJid, null, 
PresenceStanzaType.UNAVAILABLE, null, null);
+
+        Stanza presenceStanza = stanzaBuilder.getFinalStanza();
+        ResponseStanzaContainer container = handler.execute(presenceStanza, 
sessionContext.getServerRuntimeContext(), true, sessionContext, null);
+        if(container != null) {
+            return container.getResponseStanza();
+        } else {
+            return null;
+        }
+    }
+    
+    public void testExitRoom() {
+        Room room = conference.findRoom(room1Jid);
+        room.addOccupant(occupant1Jid, "Nick1");
+        room.addOccupant(occupant2Jid, "Nick2");
+
+        assertNull(exitRoom(occupant1Jid, room1JidWithNick));
+
+        assertEquals(1, room.getOccupants().size());
+        Occupant occupant = room.getOccupants().iterator().next();
+        
+        assertEquals(occupant2Jid, occupant.getJid());
+    }
+
+    public void testExitNonexistingRoom() {
+        // Quietly ignore
+        assertNull(exitRoom(occupant1Jid, room2JidWithNick));
+    }
+
+    public void testExitRoomWithoutEntering() {
+        // Exit a room where the user is not a participant, quietly ignore
+        assertNull(exitRoom(occupant1Jid, room1JidWithNick));
+    }
+
+    public void testTemporaryRoomDeleted() {
+        // Room1 is temporary
+        Room room = conference.findRoom(room1Jid);
+        assertTrue(room.isRoomType(RoomType.Temporary));
+        room.addOccupant(occupant1Jid, "Nick1");
+
+        // exit room, room should be deleted
+        assertNull(exitRoom(occupant1Jid, room1JidWithNick));
+        assertNull(conference.findRoom(room1Jid));
+    }
+    
+
+    public void testPersistentRoomNotDeleted() {
+        // Room2 is persistent
+        Room room = conference.createRoom(room2Jid, "Room 2", 
RoomType.Persistent);
+        room.addOccupant(occupant1Jid, "Nick1");
+
+        // exit room, room should be deleted
+        assertNull(exitRoom(occupant1Jid, room1JidWithNick));
+        assertNotNull(conference.findRoom(room1Jid));
+    }
+    
+    public void testExitRoomWithRelays() throws Exception {
+        // add occupants to the room
+        Room room = conference.findOrCreateRoom(room1Jid, "Room 1");
+        room.addOccupant(occupant1Jid, "Nick 1");
+        room.addOccupant(occupant2Jid, "Nick 2");
+        
+        // now, let user 2 exit room
+        exitRoom(occupant2Jid, room1JidWithNick);
+
+        // verify stanzas to existing occupants on the exiting user
+        assertExitPresenceStanza(room1Jid, "Nick 2", occupant1Jid, 
occupant1Queue.getNext(), false);
+        assertExitPresenceStanza(room1Jid, "Nick 2", occupant2Jid, 
occupant2Queue.getNext(), true);
+
+    }
+
+    private void assertExitPresenceStanza(Entity roomJid, String nick, Entity 
to, Stanza stanza, boolean own) throws XMLSemanticError {
+        // should be from room + nick name
+        assertEquals(roomJid.getFullQualifiedName() + "/" + nick, 
stanza.getFrom().getFullQualifiedName());
+        // should be to the existing user
+        assertEquals(to, stanza.getTo());
+        
+        assertEquals("unavailable", stanza.getAttributeValue("type"));
+        
+        XMLElement xElement = stanza.getSingleInnerElementsNamed("x");
+        assertEquals(NamespaceURIs.XEP0045_MUC_USER, 
xElement.getNamespaceURI());
+        
+        // since this room is non-anonymous, x must contain an item element 
with the users full JID
+        XMLElement itemElement = xElement.getSingleInnerElementsNamed("item");
+        assertEquals("none", itemElement.getAttributeValue("affiliation"));
+        assertEquals("none", itemElement.getAttributeValue("role"));
+        
+        if(own) {
+            List<XMLElement> statuses = 
xElement.getInnerElementsNamed("status");
+            assertEquals(1, statuses.size());
+            assertEquals("110", statuses.get(0).getAttributeValue("code"));
+        }
+    }
+}

Added: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerVerifyTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerVerifyTestCase.java?rev=804134&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerVerifyTestCase.java
 (added)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerVerifyTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -0,0 +1,65 @@
+package org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler;
+
+import junit.framework.TestCase;
+
+import org.apache.vysper.TestUtil;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+
+/**
+ */
+public class MUCPresenceHandlerVerifyTestCase extends TestCase {
+
+    private static final Entity FROM = 
TestUtil.parseUnchecked("[email protected]");
+    private static final Entity TO = 
TestUtil.parseUnchecked("[email protected]");
+
+    private MUCPresenceHandler presenceHandler;
+    
+    @Override
+    protected void setUp() throws Exception {
+        Conference conference = new Conference("foo");
+        presenceHandler = new MUCPresenceHandler(conference);
+    }
+
+    public void testVerifyNonPresence() {
+        StanzaBuilder builder = StanzaBuilder.createMessageStanza(FROM, TO, 
"en", "foo");
+        builder.startInnerElement("x", NamespaceURIs.XEP0045_MUC);
+        builder.endInnerElement();
+        
+        assertFalse(presenceHandler.verify(builder.getFinalStanza()));
+    }
+
+
+    public void testVerifyWithMUCNamespace() {
+        StanzaBuilder builder = StanzaBuilder.createPresenceStanza(FROM, TO, 
null, null, null, null);
+        builder.startInnerElement("x", NamespaceURIs.XEP0045_MUC);
+        builder.endInnerElement();
+        
+        assertTrue(presenceHandler.verify(builder.getFinalStanza()));
+    }
+
+    public void testVerifyWithNonMUCNamespace() {
+        StanzaBuilder builder = StanzaBuilder.createPresenceStanza(FROM, TO, 
null, null, null, null);
+        builder.startInnerElement("x", "foo");
+        builder.endInnerElement();
+        
+        assertFalse(presenceHandler.verify(builder.getFinalStanza()));
+    }
+
+    
+    public void testVerifyWithoutMUCNamespace() {
+        StanzaBuilder builder = StanzaBuilder.createPresenceStanza(FROM, TO, 
null, null, null, null);
+        
+        assertTrue(presenceHandler.verify(builder.getFinalStanza()));
+    }
+    
+    
+    public void testVerifyWithoutMUCNamespaceInnerElement() {
+        StanzaBuilder builder = StanzaBuilder.createPresenceStanza(FROM, TO, 
null, null, null, null);
+        builder.startInnerElement("foo").endInnerElement();
+        
+        assertTrue(presenceHandler.verify(builder.getFinalStanza()));
+    }
+}

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestCase.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -25,9 +25,9 @@
 
 import junit.framework.TestCase;
 
+import org.apache.vysper.TestUtil;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.TestUtil;
 
 /**
  * 

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/RoomTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/RoomTestCase.java?rev=804134&r1=804133&r2=804134&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/RoomTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/RoomTestCase.java
 Fri Aug 14 09:18:53 2009
@@ -23,9 +23,8 @@
 
 import junit.framework.TestCase;
 
+import org.apache.vysper.TestUtil;
 import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.TestUtil;
-import org.jivesoftware.smackx.workgroup.packet.RoomTransfer;
 
 /**
  * 


Reply via email to