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());