You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by be...@apache.org on 2010/12/29 10:11:34 UTC
svn commit: r1053574 -
/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
Author: berndf
Date: Wed Dec 29 09:11:34 2010
New Revision: 1053574
URL: http://svn.apache.org/viewvc?rev=1053574&view=rev
Log:
server admins will become room admins when joining a room
Modified:
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.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=1053574&r1=1053573&r2=1053574&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 Wed Dec 29 09:11:34 2010
@@ -19,12 +19,6 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
import org.apache.vysper.compliance.SpecCompliant;
import org.apache.vysper.xml.fragment.XMLElement;
import org.apache.vysper.xml.fragment.XMLSemanticError;
@@ -35,6 +29,7 @@ import org.apache.vysper.xmpp.delivery.f
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.Affiliations;
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;
@@ -43,8 +38,9 @@ import org.apache.vysper.xmpp.modules.ex
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.History;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserItem;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.StatusCode;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
+import org.apache.vysper.xmpp.modules.extension.xep0133_service_administration.ServerAdministrationService;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -55,6 +51,11 @@ import org.apache.vysper.xmpp.stanza.Sta
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
/**
* Implementation of <a href="http://xmpp.org/extensions/xep-0045.html">XEP-0045 Multi-user chat</a>.
*
@@ -220,6 +221,16 @@ public class MUCPresenceHandler extends
newOccupant.setRole(Role.Moderator);
}
+ // if the new occupant is a server admin, he will be for the room, too
+ final ServerAdministrationService adhocCommandsService = (ServerAdministrationService)serverRuntimeContext.getServerRuntimeContextService(ServerAdministrationService.SERVICE_ID);
+ if (adhocCommandsService != null && adhocCommandsService.isAdmin(newOccupantJid.getBareJID())) {
+ final Affiliations roomAffiliations = room.getAffiliations();
+ // make new occupant an Admin, but do not downgrade from Owner
+ if (roomAffiliations.getAffiliation(newOccupantJid) != Affiliation.Owner) {
+ roomAffiliations.add(newOccupantJid, Affiliation.Admin);
+ }
+ }
+
// relay presence of all existing room occupants to the now joined occupant
for (Occupant occupant : room.getOccupants()) {
sendExistingOccupantToNewOccupant(newOccupant, occupant, room, serverRuntimeContext);