Author: ngn
Date: Tue Aug 24 19:54:39 2010
New Revision: 988692

URL: http://svn.apache.org/viewvc?rev=988692&view=rev
Log:
With ad-hoc room creation, the creator should become moderator (VYSPER-244)

Modified:
    
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
    
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java

Modified: 
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java?rev=988692&r1=988691&r2=988692&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
 (original)
+++ 
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
 Tue Aug 24 19:54:39 2010
@@ -33,7 +33,6 @@ import org.apache.vysper.xmpp.delivery.f
 import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
 import org.apache.vysper.xmpp.modules.core.base.handler.DefaultPresenceHandler;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.MUCStanzaBuilder;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Affiliation;
 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.Role;
@@ -129,8 +128,13 @@ public class MUCPresenceHandler extends 
     private Stanza available(PresenceStanza stanza, Entity roomJid, Entity 
newOccupantJid, String nick,
             ServerRuntimeContext serverRuntimeContext) {
 
+        boolean newRoom = false;
         // TODO what to use for the room name?
-        Room room = conference.findOrCreateRoom(roomJid, roomJid.getNode());
+        Room room = conference.findRoom(roomJid);
+        if(room == null) {
+            room = conference.createRoom(roomJid, roomJid.getNode());
+            newRoom = true;
+        }
 
         if (room.isInRoom(newOccupantJid)) {
             // user is already in room, change nick
@@ -193,6 +197,10 @@ public class MUCPresenceHandler extends 
             } catch(RuntimeException e) {
                 return createPresenceErrorStanza(roomJid, newOccupantJid, 
stanza.getID(), "auth", e.getMessage());
             }
+            
+            if(newRoom) {
+                newOccupant.setRole(Role.Moderator);
+            }
 
             // relay presence of all existing room occupants to the now joined 
occupant
             for (Occupant occupant : room.getOccupants()) {

Modified: 
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java?rev=988692&r1=988691&r2=988692&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
 (original)
+++ 
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
 Tue Aug 24 19:54:39 2010
@@ -176,6 +176,7 @@ public class EnterRoomTestCase extends A
 
         assertEquals(OCCUPANT1_JID, occupant.getJid());
         assertEquals("nick", occupant.getNick());
+        assertEquals(Role.Moderator, occupant.getRole());
     }
 
     public void testEnterWithoutNick() throws Exception {


Reply via email to