Author: berndf
Date: Fri Aug 28 10:13:11 2009
New Revision: 808835

URL: http://svn.apache.org/viewvc?rev=808835&view=rev
Log:
VYSPER-108: MUC presence stanza handling: use server context to relay stanza. 
joining room now works properly.

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

Modified: 
mina/sandbox/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/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java?rev=808835&r1=808834&r2=808835&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.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 28 10:13:11 2009
@@ -100,9 +100,9 @@
         String type = stanza.getType();
         
         if(type == null) {
-            return available(stanza, roomJid, occupantJid, nick, 
sessionContext);
+            return available(stanza, roomJid, occupantJid, nick, 
serverRuntimeContext);
         } else if(type.equals("unavailable")) {
-            return unavailable(stanza, roomJid, occupantJid, nick, 
sessionContext);
+            return unavailable(stanza, roomJid, occupantJid, nick, 
serverRuntimeContext);
         } else {
             throw new RuntimeException("Presence type not handled by MUC 
module: " + type);
         }
@@ -123,7 +123,7 @@
     }
     
     private Stanza available(PresenceStanza stanza, Entity roomJid,
-            Entity newOccupantJid, String nick, SessionContext sessionContext) 
{
+            Entity newOccupantJid, String nick, ServerRuntimeContext 
serverRuntimeContext) {
         
         // TODO what to use for the room name?
         Room room = conference.findOrCreateRoom(roomJid, roomJid.getNode());
@@ -139,7 +139,7 @@
                 // nick unchanged, change show and status
                 for(Occupant receiver : room.getOccupants()) {
                     sendChangeShowStatus(occupant, receiver, room, 
getInnerElementText(stanza, "show"), 
-                            getInnerElementText(stanza, "status"), 
sessionContext);
+                            getInnerElementText(stanza, "status"), 
serverRuntimeContext);
                 }
             } else {
                 if(room.isInRoom(nick)) {
@@ -153,12 +153,12 @@
                 
                 // send out unavailable presences to all existing occupants
                 for(Occupant receiver : room.getOccupants()) {
-                    sendChangeNickUnavailable(occupant, oldNick, receiver, 
room, sessionContext);
+                    sendChangeNickUnavailable(occupant, oldNick, receiver, 
room, serverRuntimeContext);
                 }
                 
                 // send out available presences to all existing occupants
                 for(Occupant receiver : room.getOccupants()) {
-                    sendChangeNickAvailable(occupant, receiver, room, 
sessionContext);
+                    sendChangeNickAvailable(occupant, receiver, room, 
serverRuntimeContext);
                 }
 
             }
@@ -195,12 +195,12 @@
             
             // relay presence of all existing room occupants to the now joined 
occupant
             for(Occupant occupant : room.getOccupants()) {
-                sendExistingOccupantToNewOccupant(newOccupant, occupant, room, 
sessionContext);
+                sendExistingOccupantToNewOccupant(newOccupant, occupant, room, 
serverRuntimeContext);
             }
             
             // relay presence of the newly added occupant to all existing 
occupants
             for(Occupant occupant : room.getOccupants()) {
-                sendNewOccupantPresenceToExisting(newOccupant, occupant, room, 
sessionContext);
+                sendNewOccupantPresenceToExisting(newOccupant, occupant, room, 
serverRuntimeContext);
             }
             
             logger.debug("{} successfully entered room {}", newOccupantJid, 
roomJid);
@@ -209,7 +209,7 @@
     }   
     
     private Stanza unavailable(PresenceStanza stanza, Entity roomJid,
-            Entity occupantJid, String nick, SessionContext sessionContext) {
+            Entity occupantJid, String nick, ServerRuntimeContext 
serverRuntimeContext) {
         Room room = conference.findRoom(roomJid);
         
         // room must exist, or we do nothing
@@ -234,7 +234,7 @@
                 
                 // relay presence of the newly added occupant to all existing 
occupants
                 for(Occupant occupant : allOccupants) {
-                    sendExitRoomPresenceToExisting(exitingOccupant, occupant, 
room, statusMessage, sessionContext);
+                    sendExitRoomPresenceToExisting(exitingOccupant, occupant, 
room, statusMessage, serverRuntimeContext);
                 }
                 
                 if(room.isRoomType(RoomType.Temporary) && room.isEmpty()) {
@@ -246,7 +246,7 @@
         return null;
     }
 
-    private void sendExistingOccupantToNewOccupant(Occupant newOccupant, 
Occupant existingOccupant, Room room, SessionContext sessionContext) {
+    private void sendExistingOccupantToNewOccupant(Occupant newOccupant, 
Occupant existingOccupant, Room room, ServerRuntimeContext 
serverRuntimeContext) {
         //            <presence
         //            from='[email protected]/firstwitch'
         //            to='[email protected]/pda'>
@@ -270,10 +270,10 @@
         builder.endInnerElement();
         
         logger.debug("Room presence from {} sent to {}", newOccupant, 
roomAndOccupantNick);
-        relayStanza(newOccupant.getJid(), builder.getFinalStanza(), 
sessionContext);
+        relayStanza(newOccupant.getJid(), builder.getFinalStanza(), 
serverRuntimeContext);
     }
     
-    private void sendNewOccupantPresenceToExisting(Occupant newOccupant, 
Occupant existingOccupant, Room room, SessionContext sessionContext) {
+    private void sendNewOccupantPresenceToExisting(Occupant newOccupant, 
Occupant existingOccupant, Room room, ServerRuntimeContext 
serverRuntimeContext) {
         Entity roomAndNewUserNick = new EntityImpl(room.getJID(), 
newOccupant.getName());
         
         StanzaBuilder builder = 
StanzaBuilder.createPresenceStanza(roomAndNewUserNick, 
existingOccupant.getJid(), null, null, null, null);
@@ -297,10 +297,10 @@
         builder.endInnerElement();
 
         logger.debug("Room presence from {} sent to {}", roomAndNewUserNick, 
existingOccupant);
-        relayStanza(existingOccupant.getJid(), builder.getFinalStanza(), 
sessionContext);
+        relayStanza(existingOccupant.getJid(), builder.getFinalStanza(), 
serverRuntimeContext);
     }
 
-    private void sendChangeNickUnavailable(Occupant changer, String oldNick, 
Occupant receiver, Room room, SessionContext sessionContext) {
+    private void sendChangeNickUnavailable(Occupant changer, String oldNick, 
Occupant receiver, Room room, ServerRuntimeContext serverRuntimeContext) {
         Entity roomAndOldNick = new EntityImpl(room.getJID(), oldNick);
         
         StanzaBuilder builder = 
StanzaBuilder.createPresenceStanza(roomAndOldNick, receiver.getJid(), null, 
@@ -319,11 +319,11 @@
         builder.endInnerElement();
 
         logger.debug("Room presence from {} sent to {}", roomAndOldNick, 
receiver);
-        relayStanza(receiver.getJid(), builder.getFinalStanza(), 
sessionContext);
+        relayStanza(receiver.getJid(), builder.getFinalStanza(), 
serverRuntimeContext);
     }
     
 
-    private void sendChangeShowStatus(Occupant changer, Occupant receiver, 
Room room, String show, String status, SessionContext sessionContext) {
+    private void sendChangeShowStatus(Occupant changer, Occupant receiver, 
Room room, String show, String status, ServerRuntimeContext 
serverRuntimeContext) {
         Entity roomAndNick = new EntityImpl(room.getJID(), changer.getName());
         
         StanzaBuilder builder = 
StanzaBuilder.createPresenceStanza(roomAndNick, receiver.getJid(), null, 
@@ -341,7 +341,7 @@
         builder.endInnerElement();
 
         logger.debug("Room presence from {} sent to {}", roomAndNick, 
receiver);
-        relayStanza(receiver.getJid(), builder.getFinalStanza(), 
sessionContext);
+        relayStanza(receiver.getJid(), builder.getFinalStanza(), 
serverRuntimeContext);
     }
 
     
@@ -350,7 +350,7 @@
         return room.getRoomTypes().contains(RoomType.NonAnonymous) ||
             (room.getRoomTypes().contains(RoomType.SemiAnonymous) && 
receiver.getRole() == Role.Moderator);
     }
-    private void sendChangeNickAvailable(Occupant changer, Occupant receiver, 
Room room, SessionContext sessionContext) {
+    private void sendChangeNickAvailable(Occupant changer, Occupant receiver, 
Room room, ServerRuntimeContext serverRuntimeContext) {
         Entity roomAndOldNick = new EntityImpl(room.getJID(), 
changer.getName());
         
         StanzaBuilder builder = 
StanzaBuilder.createPresenceStanza(roomAndOldNick, receiver.getJid(), null, 
null, null, null);
@@ -365,12 +365,12 @@
         }
         builder.endInnerElement();
 
-        relayStanza(receiver.getJid(), builder.getFinalStanza(), 
sessionContext);
+        relayStanza(receiver.getJid(), builder.getFinalStanza(), 
serverRuntimeContext);
     }
 
     
     private void sendExitRoomPresenceToExisting(Occupant exitingOccupant, 
Occupant existingOccupant, Room room, 
-            String statusMessage, SessionContext sessionContext) {
+            String statusMessage, ServerRuntimeContext serverRuntimeContext) {
         Entity roomAndNewUserNick = new EntityImpl(room.getJID(), 
exitingOccupant.getName());
         
         StanzaBuilder builder = 
StanzaBuilder.createPresenceStanza(roomAndNewUserNick, 
existingOccupant.getJid(), null, 
@@ -399,14 +399,14 @@
         }
         builder.endInnerElement();
 
-        relayStanza(existingOccupant.getJid(), builder.getFinalStanza(), 
sessionContext);
+        relayStanza(existingOccupant.getJid(), builder.getFinalStanza(), 
serverRuntimeContext);
     }
     
-    protected void relayStanza(Entity receiver, Stanza stanza, SessionContext 
sessionContext) {
+    protected void relayStanza(Entity receiver, Stanza stanza, 
ServerRuntimeContext serverRuntimeContext) {
         try {
-                
sessionContext.getServerRuntimeContext().getStanzaRelay().relay(receiver, 
stanza, new IgnoreFailureStrategy());
+                serverRuntimeContext.getStanzaRelay().relay(receiver, stanza, 
new IgnoreFailureStrategy());
         } catch (DeliveryException e) {
                 logger.warn("presence relaying failed ", e);
         }
-}
+    }
 }


Reply via email to