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 ([email protected])
+ */
+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) {


Reply via email to