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 2012/05/23 14:08:26 UTC

svn commit: r1341844 - in /mina/vysper/trunk: nbxml/src/main/java/org/apache/vysper/xml/fragment/ server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ server/extensions/xep0045-muc/src/test/java/org/ap...

Author: berndf
Date: Wed May 23 12:08:26 2012
New Revision: 1341844

URL: http://svn.apache.org/viewvc?rev=1341844&view=rev
Log:
VYSPER-313: Make MUC history accessible from outside, record MUC messages as type MessageStanza

Modified:
    mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.java
    mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistory.java
    mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessage.java
    mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
    mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestUtils.java
    mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java
    mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java

Modified: mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.java?rev=1341844&r1=1341843&r2=1341844&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.java (original)
+++ mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/XMLElement.java Wed May 23 12:08:26 2012
@@ -283,8 +283,7 @@ public class XMLElement implements XMLFr
      * @exception no language attribute may occur more than once for the same element
      */
     public Map<String, XMLElement> getInnerElementsByXMLLangNamed(String name) throws XMLSemanticError {
-        if (name == null)
-            return null;
+        if (name == null) return null;
 
         List<XMLElement> innerElements = getInnerElementsNamed(name);
         Map<String, XMLElement> langMap = new HashMap<String, XMLElement>();

Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistory.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/model/DiscussionHistory.java?rev=1341844&r1=1341843&r2=1341844&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistory.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistory.java Wed May 23 12:08:26 2012
@@ -22,11 +22,13 @@ package org.apache.vysper.xmpp.modules.e
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
 import java.util.TimeZone;
 
 import org.apache.vysper.xml.fragment.Renderer;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.History;
+import org.apache.vysper.xmpp.stanza.MessageStanza;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
 /**
@@ -34,7 +36,7 @@ import org.apache.vysper.xmpp.stanza.Sta
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class DiscussionHistory {
+public class DiscussionHistory implements Iterable<DiscussionMessage> {
 
     public static final int DEFAULT_HISTORY_SIZE = 20;
 
@@ -44,13 +46,13 @@ public class DiscussionHistory {
 
     private List<DiscussionMessage> items = new ArrayList<DiscussionMessage>();
 
-    public void append(Stanza stanza, Occupant sender) {
-        append(stanza, sender, Calendar.getInstance(TimeZone.getTimeZone("UTC")));
+    public void append(MessageStanza message, Occupant sender) {
+        append(message, sender, Calendar.getInstance(TimeZone.getTimeZone("UTC")));
     }
 
-    public void append(Stanza stanza, Occupant sender, Calendar timestamp) {
+    public void append(MessageStanza message, Occupant sender, Calendar timestamp) {
         synchronized (items) {
-            DiscussionMessage discMsg = new DiscussionMessage(stanza, sender, timestamp);
+            DiscussionMessage discMsg = new DiscussionMessage(message, sender, timestamp);
 
             if (discMsg.hasSubject() && !discMsg.hasBody()) {
                 subjectMessage = discMsg;
@@ -60,7 +62,7 @@ public class DiscussionHistory {
 
             // check if size is over limits
             while (maxItems != -1 && getSize() > maxItems) {
-                items.remove(0); // oldest
+                items.remove(0) ; // oldest
             }
         }
     }
@@ -145,4 +147,8 @@ public class DiscussionHistory {
             return stanzas;
         }
     }
+
+    public Iterator<DiscussionMessage> iterator() {
+        return items.iterator();
+    }
 }

Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessage.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/model/DiscussionMessage.java?rev=1341844&r1=1341843&r2=1341844&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessage.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessage.java Wed May 23 12:08:26 2012
@@ -25,23 +25,24 @@ import java.util.TimeZone;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
 import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Delay;
+import org.apache.vysper.xmpp.stanza.MessageStanza;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
 
 public class DiscussionMessage {
 
-    private Stanza message;
+    private MessageStanza message;
 
     private String fromNick;
 
     private Calendar timestamp;
 
-    public DiscussionMessage(Stanza stanza, Occupant from) {
-        this(stanza, from, Calendar.getInstance(TimeZone.getTimeZone("UTC")));
+    public DiscussionMessage(MessageStanza message, Occupant from) {
+        this(message, from, Calendar.getInstance(TimeZone.getTimeZone("UTC")));
     }
 
-    public DiscussionMessage(Stanza stanza, Occupant from, Calendar timestamp) {
-        this.message = stanza;
+    public DiscussionMessage(MessageStanza message, Occupant from, Calendar timestamp) {
+        this.message = message;
         this.fromNick = from.getNick();
 
         this.timestamp = (Calendar) timestamp.clone();
@@ -55,6 +56,10 @@ public class DiscussionMessage {
         return fromNick;
     }
 
+    public MessageStanza getMessage() {
+        return message;
+    }
+
     public Stanza createStanza(Occupant receiver, boolean includeJid) {
 
         //        <message

Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java?rev=1341844&r1=1341843&r2=1341844&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java Wed May 23 12:08:26 2012
@@ -42,7 +42,6 @@ import org.apache.vysper.xmpp.protocol.R
 import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.stanza.MessageStanza;
-import org.apache.vysper.xmpp.stanza.MessageStanzaType;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
 import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
@@ -281,15 +280,9 @@ public class EnterRoomTestCase extends A
     public void testDiscussionHistory() throws Exception {
         // add some messages
         Room room = ConferenceTestUtils.findOrCreateRoom(conference, ROOM1_JID, "Room 1");
-        room.getHistory().append(
-                StanzaBuilder.createMessageStanza(OCCUPANT2_JID, ROOM1_JID, MessageStanzaType.GROUPCHAT, null, "Body")
-                        .build(), new Occupant(OCCUPANT2_JID, "nick2", room, Role.Participant));
-        room.getHistory().append(
-                StanzaBuilder.createMessageStanza(OCCUPANT2_JID, ROOM1_JID, MessageStanzaType.GROUPCHAT, null, "Body2")
-                        .build(), new Occupant(OCCUPANT2_JID, "nick2", room, Role.Participant));
-        room.getHistory().append(
-                StanzaBuilder.createMessageStanza(OCCUPANT2_JID, ROOM1_JID, MessageStanzaType.GROUPCHAT, null, "Body3")
-                        .build(), new Occupant(OCCUPANT2_JID, "nick2", room, Role.Participant));
+        room.getHistory().append(createMessageStanza("Body"), new Occupant(OCCUPANT2_JID, "nick2", room, Role.Participant));
+        room.getHistory().append(createMessageStanza("Body2"), new Occupant(OCCUPANT2_JID, "nick2", room, Role.Participant));
+        room.getHistory().append(createMessageStanza("Body3"), new Occupant(OCCUPANT2_JID, "nick2", room, Role.Participant));
 
         // now, let user 1 enter room
         enterRoom(OCCUPANT1_JID, ROOM1_JID_WITH_NICK, null, new History(2, null, null, null), false);
@@ -317,4 +310,8 @@ public class EnterRoomTestCase extends A
         assertNull(occupant1Queue.getNext());
     }
 
+    protected MessageStanza createMessageStanza(final String body) {
+        return ConferenceTestUtils.createMessageStanza(OCCUPANT2_JID, ROOM1_JID, body);
+    }
+
 }

Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestUtils.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestUtils.java?rev=1341844&r1=1341843&r2=1341844&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestUtils.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/ConferenceTestUtils.java Wed May 23 12:08:26 2012
@@ -1,6 +1,11 @@
 package org.apache.vysper.xmpp.modules.extension.xep0045_muc.model;
 
 import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.stanza.MessageStanza;
+import org.apache.vysper.xmpp.stanza.MessageStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
 
 /**
  */
@@ -14,4 +19,14 @@ public class ConferenceTestUtils {
         return room;
     }
 
+    public static MessageStanza toMessageStanza(Stanza stanza) {
+        return (MessageStanza)XMPPCoreStanza.getWrapper(stanza);
+    }
+    
+    public static MessageStanza createMessageStanza(final Entity from, final Entity to, final String body) {
+        final Stanza stanza = StanzaBuilder.createMessageStanza(from, to, MessageStanzaType.GROUPCHAT, null, body).build();
+        return toMessageStanza(stanza);
+    }
+
+    
 }

Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java?rev=1341844&r1=1341843&r2=1341844&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java Wed May 23 12:08:26 2012
@@ -73,14 +73,14 @@ public class DiscussionHistoryTestCase e
         // add some messages to the history, one more than is handled
         int maxStanzas = DiscussionHistory.DEFAULT_HISTORY_SIZE + 1;
         for (int i = 0; i < maxStanzas; i++) {
-            history.append(StanzaBuilder.createMessageStanza(FROM, ROOM_JID, MessageStanzaType.GROUPCHAT, null,
-                    BODY + i).build(), FROM_OCCUPANT, createTimestamp(maxStanzas - i));
+            history.append(ConferenceTestUtils.createMessageStanza(FROM, ROOM_JID, BODY + i), 
+                           FROM_OCCUPANT, createTimestamp(maxStanzas - i));
         }
 
         // add a subject message
-        history.append(StanzaBuilder.createMessageStanza(FROM, ROOM_JID, MessageStanzaType.GROUPCHAT, null, null)
-                .startInnerElement("subject", NamespaceURIs.JABBER_CLIENT).addText(SUBJECT).endInnerElement().build(),
-                FROM_OCCUPANT);
+        final Stanza stanza = StanzaBuilder.createMessageStanza(FROM, ROOM_JID, MessageStanzaType.GROUPCHAT, null, null)
+                .startInnerElement("subject", NamespaceURIs.JABBER_CLIENT).addText(SUBJECT).endInnerElement().build();
+        history.append(ConferenceTestUtils.toMessageStanza(stanza), FROM_OCCUPANT);
     }
 
     public void testGetAllStanzas() throws Exception {

Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java?rev=1341844&r1=1341843&r2=1341844&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java Wed May 23 12:08:26 2012
@@ -30,8 +30,6 @@ import org.apache.vysper.xmpp.addressing
 import org.apache.vysper.xmpp.datetime.DateTimeProfile;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.stanza.MessageStanza;
-import org.apache.vysper.xmpp.stanza.MessageStanzaType;
-import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
 
 /**
@@ -59,8 +57,9 @@ public class DiscussionMessageTestCase e
     public void testSubjectMessage() {
         StanzaBuilder builder = StanzaBuilder.createMessageStanza(FROM, ROOM_JID, null, null);
         builder.startInnerElement("subject", NamespaceURIs.JABBER_CLIENT).addText(SUBJECT).endInnerElement();
+        final MessageStanza messageStanza = ConferenceTestUtils.toMessageStanza(builder.build());
 
-        DiscussionMessage item = new DiscussionMessage(builder.build(), FROM_OCCUPANT, TIMESTAMP);
+        DiscussionMessage item = new DiscussionMessage(messageStanza, FROM_OCCUPANT, TIMESTAMP);
         assertEquals(NICK, item.getNick());
         assertEquals(TIMESTAMP, item.getTimestamp());
         assertFalse(item.hasBody());
@@ -68,9 +67,9 @@ public class DiscussionMessageTestCase e
     }
 
     public void testBodyMessage() {
-        StanzaBuilder builder = StanzaBuilder.createMessageStanza(FROM, ROOM_JID, null, BODY);
+        MessageStanza messageStanza = ConferenceTestUtils.createMessageStanza(FROM, ROOM_JID, BODY);
 
-        DiscussionMessage item = new DiscussionMessage(builder.build(), FROM_OCCUPANT, TIMESTAMP);
+        DiscussionMessage item = new DiscussionMessage(messageStanza, FROM_OCCUPANT, TIMESTAMP);
         assertEquals(NICK, item.getNick());
         assertEquals(TIMESTAMP, item.getTimestamp());
         assertTrue(item.hasBody());
@@ -78,14 +77,12 @@ public class DiscussionMessageTestCase e
     }
 
     public void testCreateStanza() throws Exception {
-        StanzaBuilder builder = StanzaBuilder.createMessageStanza(FROM, ROOM_JID, MessageStanzaType.GROUPCHAT, null,
-                BODY);
-        Stanza inStanza = builder.build();
+        final MessageStanza inStanza = ConferenceTestUtils.createMessageStanza(FROM, ROOM_JID, BODY);
         DiscussionMessage item = new DiscussionMessage(inStanza, FROM_OCCUPANT, TIMESTAMP);
 
         Entity to = EntityImpl.parseUnchecked("user2@vysper.org/res");
         Occupant toOccupant = new Occupant(to, "nick 2", ROOM, Role.Visitor);
-        MessageStanza outStanza = (MessageStanza) MessageStanza.getWrapper(item.createStanza(toOccupant, true));
+        MessageStanza outStanza = (MessageStanza)MessageStanza.getWrapper(item.createStanza(toOccupant, true));
 
         assertEquals(to, outStanza.getTo());
         assertEquals(new EntityImpl(ROOM_JID, NICK), outStanza.getFrom());