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);
}
-}
+ }
}