You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2010/05/16 23:00:37 UTC
svn commit: r944909 - in
/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc:
MUCStanzaBuilder.java handler/MUCIqAdminHandler.java
handler/MUCPresenceHandler.java
Author: ngn
Date: Sun May 16 21:00:36 2010
New Revision: 944909
URL: http://svn.apache.org/viewvc?rev=944909&view=rev
Log:
Added a StanzaBuilder extension to clean up some redudant code
Added:
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCStanzaBuilder.java
Modified:
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
Added: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCStanzaBuilder.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/MUCStanzaBuilder.java?rev=944909&view=auto
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCStanzaBuilder.java (added)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCStanzaBuilder.java Sun May 16 21:00:36 2010
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper.xmpp.modules.extension.xep0045_muc;
+
+import java.util.List;
+
+import org.apache.vysper.xml.fragment.Attribute;
+import org.apache.vysper.xml.fragment.XMLElement;
+import org.apache.vysper.xml.fragment.XMLFragment;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
+import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+
+/**
+ * Specialized {@link StanzaBuilder} for MUC
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class MUCStanzaBuilder extends StanzaBuilder {
+
+ public static Stanza createPresenceStanza(Entity from, Entity to, PresenceStanzaType type, String xNamespaceUri, List<XMLElement> innerElms) {
+ return createPresenceStanza(from, to, type, xNamespaceUri, innerElms.toArray(new XMLElement[0]));
+ }
+
+ public static Stanza createPresenceStanza(Entity from, Entity to, PresenceStanzaType type, String xNamespaceUri, XMLElement... innerElms) {
+ StanzaBuilder builder = StanzaBuilder.createPresenceStanza(from, to, null,
+ type, null, null);
+ builder.addPreparedElement(new X(xNamespaceUri, innerElms));
+
+ return builder.build();
+ }
+
+
+ public MUCStanzaBuilder(String stanzaName, String namespaceURI,
+ List<Attribute> attributes,
+ List<XMLFragment> innerFragments) {
+ super(stanzaName, namespaceURI, null, attributes, innerFragments);
+ }
+
+ public MUCStanzaBuilder(String stanzaName, String namespaceURI) {
+ super(stanzaName, namespaceURI);
+ }
+}
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.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/MUCIqAdminHandler.java?rev=944909&r1=944908&r2=944909&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java Sun May 16 21:00:36 2010
@@ -27,6 +27,7 @@ import org.apache.vysper.xmpp.addressing
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
import org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler;
+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;
@@ -35,7 +36,6 @@ import org.apache.vysper.xmpp.modules.ex
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.IqAdminItem;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserPresenceItem;
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.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
@@ -109,26 +109,26 @@ public class MUCIqAdminHandler extends D
room.removeOccupant(kicked.getJid());
Entity kickedInRoom = roomAndNick(room, kicked);
+ Status kickedStatus = new Status(StatusCode.BEEN_KICKED);
+
// notify user he got kicked
- StanzaBuilder presenceBuilder = StanzaBuilder.createPresenceStanza(kickedInRoom, kicked.getJid(), null,
- PresenceStanzaType.UNAVAILABLE, null, null);
- presenceBuilder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER,
+ Stanza presenceToKicked = MUCStanzaBuilder.createPresenceStanza(kickedInRoom, kicked.getJid(),
+ PresenceStanzaType.UNAVAILABLE, NamespaceURIs.XEP0045_MUC_USER,
new MucUserPresenceItem(Affiliation.None, Role.None),
// TODO handle <actor>
// TODO handle <reason>
- new Status(StatusCode.BEEN_KICKED)));
+ kickedStatus);
- relayStanza(kicked.getJid(), presenceBuilder.build(), serverRuntimeContext);
+ relayStanza(kicked.getJid(), presenceToKicked, serverRuntimeContext);
// notify remaining users that user got kicked
for(Occupant remaining : room.getOccupants()) {
- StanzaBuilder presenceToRemainingBuilder = StanzaBuilder.createPresenceStanza(kickedInRoom, remaining.getJid(), null,
- PresenceStanzaType.UNAVAILABLE, null, null);
- presenceToRemainingBuilder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER,
+ Stanza presenceToRemaining = MUCStanzaBuilder.createPresenceStanza(kickedInRoom, remaining.getJid(),
+ PresenceStanzaType.UNAVAILABLE, NamespaceURIs.XEP0045_MUC_USER,
new MucUserPresenceItem(Affiliation.None, Role.None),
- new Status(StatusCode.BEEN_KICKED)));
+ kickedStatus);
- relayStanza(remaining.getJid(), presenceToRemainingBuilder.build(), serverRuntimeContext);
+ relayStanza(remaining.getJid(), presenceToRemaining, serverRuntimeContext);
}
}
}
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=944909&r1=944908&r2=944909&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 Sun May 16 21:00:36 2010
@@ -32,6 +32,7 @@ import org.apache.vysper.xmpp.addressing
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
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;
@@ -270,25 +271,21 @@ public class MUCPresenceHandler extends
}
Entity roomAndOccupantNick = new EntityImpl(room.getJID(), existingOccupant.getName());
- StanzaBuilder builder = StanzaBuilder.createPresenceStanza(roomAndOccupantNick, newOccupant.getJid(), null, null, null, null);
-
- builder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER,
- new MucUserPresenceItem(null, null, existingOccupant.getAffiliation(), existingOccupant.getRole())));
-
+ Stanza presenceToNewOccupant = MUCStanzaBuilder.createPresenceStanza(roomAndOccupantNick, newOccupant.getJid(), null,
+ NamespaceURIs.XEP0045_MUC_USER,
+ new MucUserPresenceItem(existingOccupant.getAffiliation(), existingOccupant.getRole()));
logger.debug("Room presence from {} sent to {}", newOccupant, roomAndOccupantNick);
- relayStanza(newOccupant.getJid(), builder.build(), serverRuntimeContext);
+ relayStanza(newOccupant.getJid(), presenceToNewOccupant, serverRuntimeContext);
}
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);
List<XMLElement> inner = new ArrayList<XMLElement>();
-
- // room is non-anonymous or semi-anonmoys and the occupant a moderator, send full user JID
+ // room is non-anonymous or semi-anonymous and the occupant a moderator, send full user JID
boolean includeJid = room.getRoomTypes().contains(RoomType.NonAnonymous) ||
(room.getRoomTypes().contains(RoomType.SemiAnonymous) && existingOccupant.getRole() == Role.Moderator);
inner.add(new MucUserPresenceItem(newOccupant, includeJid, false));
@@ -303,17 +300,17 @@ public class MUCPresenceHandler extends
// send status to indicate that this is the users own presence
inner.add(new Status(StatusCode.OWN_PRESENCE));
}
- builder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER, inner));
+
+ Stanza presenceToExisting = MUCStanzaBuilder.createPresenceStanza(roomAndNewUserNick, existingOccupant.getJid(), null,
+ NamespaceURIs.XEP0045_MUC_USER, inner);
logger.debug("Room presence from {} sent to {}", roomAndNewUserNick, existingOccupant);
- relayStanza(existingOccupant.getJid(), builder.build(), serverRuntimeContext);
+ relayStanza(existingOccupant.getJid(), presenceToExisting, serverRuntimeContext);
}
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,
- PresenceStanzaType.UNAVAILABLE, null, null);
List<XMLElement> inner = new ArrayList<XMLElement>();
@@ -325,10 +322,11 @@ public class MUCPresenceHandler extends
// send status to indicate that this is the users own presence
inner.add(new Status(StatusCode.OWN_PRESENCE));
}
- builder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER, inner));
+ Stanza presenceToReceiver = MUCStanzaBuilder.createPresenceStanza(roomAndOldNick, receiver.getJid(),
+ PresenceStanzaType.UNAVAILABLE, NamespaceURIs.XEP0045_MUC_USER, inner);
logger.debug("Room presence from {} sent to {}", roomAndOldNick, receiver);
- relayStanza(receiver.getJid(), builder.build(), serverRuntimeContext);
+ relayStanza(receiver.getJid(), presenceToReceiver, serverRuntimeContext);
}
@@ -359,7 +357,6 @@ public class MUCPresenceHandler extends
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);
List<XMLElement> inner = new ArrayList<XMLElement>();
boolean includeJid = includeJidInItem(room, receiver);
@@ -369,9 +366,10 @@ public class MUCPresenceHandler extends
// send status to indicate that this is the users own presence
inner.add(new Status(StatusCode.OWN_PRESENCE));
}
- builder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER, inner));
+ Stanza presenceToReceiver = MUCStanzaBuilder.createPresenceStanza(roomAndOldNick, receiver.getJid(), null,
+ NamespaceURIs.XEP0045_MUC_USER, inner);
- relayStanza(receiver.getJid(), builder.build(), serverRuntimeContext);
+ relayStanza(receiver.getJid(), presenceToReceiver, serverRuntimeContext);
}
@@ -379,8 +377,6 @@ public class MUCPresenceHandler extends
String statusMessage, ServerRuntimeContext serverRuntimeContext) {
Entity roomAndNewUserNick = new EntityImpl(room.getJID(), exitingOccupant.getName());
- StanzaBuilder builder = StanzaBuilder.createPresenceStanza(roomAndNewUserNick, existingOccupant.getJid(), null,
- PresenceStanzaType.UNAVAILABLE, null, null);
List<XMLElement> inner = new ArrayList<XMLElement>();
inner.add(new MucUserPresenceItem(null, null, existingOccupant.getAffiliation(), Role.None));
@@ -399,9 +395,11 @@ public class MUCPresenceHandler extends
}
inner.add(status);
}
- builder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER, inner));
- relayStanza(existingOccupant.getJid(), builder.build(), serverRuntimeContext);
+ Stanza presenceToExisting = MUCStanzaBuilder.createPresenceStanza(roomAndNewUserNick, existingOccupant.getJid(),
+ PresenceStanzaType.UNAVAILABLE, NamespaceURIs.XEP0045_MUC_USER, inner);
+
+ relayStanza(existingOccupant.getJid(), presenceToExisting, serverRuntimeContext);
}
protected void relayStanzas(Entity receiver, List<Stanza> stanzas, ServerRuntimeContext serverRuntimeContext) {