You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ra...@apache.org on 2019/09/07 21:59:31 UTC
[mina-vysper] branch master updated: Message archive management: do
not archive message without bodies
This is an automated email from the ASF dual-hosted git repository.
ralaoui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-vysper.git
The following commit(s) were added to refs/heads/master by this push:
new ae7a450 Message archive management: do not archive message without bodies
ae7a450 is described below
commit ae7a45012824228135a07d733903f8f267f8519b
Author: RĂ©da Housni Alaoui <re...@gmail.com>
AuthorDate: Sat Sep 7 23:59:22 2019 +0200
Message archive management: do not archive message without bodies
---
.../xep0313_mam/user/UserMessageStanzaBroker.java | 19 +++++++++++--
.../user/UserMessageStanzaBrokerTest.java | 32 ++++++++++++++++------
2 files changed, 40 insertions(+), 11 deletions(-)
diff --git a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBroker.java b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBroker.java
index 1acac01..9e6f77c 100644
--- a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBroker.java
+++ b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBroker.java
@@ -21,8 +21,11 @@ package org.apache.vysper.xmpp.modules.extension.xep0313_mam.user;
import static java.util.Objects.requireNonNull;
+import java.util.Map;
import java.util.Optional;
+import org.apache.vysper.xml.fragment.XMLElement;
+import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityUtils;
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
@@ -91,8 +94,20 @@ class UserMessageStanzaBroker extends DelegatingStanzaBroker {
LOG.debug("Message {} is neither of type 'normal' or 'chat'. It will not be archived.", messageStanza);
return messageStanza;
}
-
- // TODO Check preferences and no-store element
+
+ Map<String, XMLElement> bodies;
+ try {
+ bodies = messageStanza.getBodies();
+ } catch (XMLSemanticError xmlSemanticError) {
+ return messageStanza;
+ }
+ if (bodies.isEmpty()) {
+ // A server SHOULD include in a user archive all of the messages a user sends
+ // or receives of type 'normal' or 'chat' that contain a <body> element.
+ return messageStanza;
+ }
+
+ // TODO Check preferences
addToSenderArchive(messageStanza, sessionContext);
return addToReceiverArchive(messageStanza).map(MessageStanzaWithId::new).map(MessageStanzaWithId::toStanza)
diff --git a/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBrokerTest.java b/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBrokerTest.java
index dcfb7f7..2c88020 100644
--- a/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBrokerTest.java
+++ b/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBrokerTest.java
@@ -27,8 +27,8 @@ import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.modules.extension.xep0313_mam.ServerRuntimeContextMock;
import org.apache.vysper.xmpp.modules.extension.xep0313_mam.SessionContextMock;
-import org.apache.vysper.xmpp.modules.extension.xep0313_mam.spi.UserMessageArchiveMock;
import org.apache.vysper.xmpp.modules.extension.xep0313_mam.spi.MessageArchivesMock;
+import org.apache.vysper.xmpp.modules.extension.xep0313_mam.spi.UserMessageArchiveMock;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
import org.apache.vysper.xmpp.stanza.MessageStanza;
import org.apache.vysper.xmpp.stanza.MessageStanzaType;
@@ -82,9 +82,8 @@ public class UserMessageStanzaBrokerTest {
return new UserMessageStanzaBroker(delegate, serverRuntimeContext, sessionContext, isOutboundStanza);
}
- private MessageStanza buildMessageStanza(MessageStanzaType messageStanzaType, Entity from, Entity to) {
- return new MessageStanza(
- StanzaBuilder.createMessageStanza(from, to, messageStanzaType, "en", "hello world").build());
+ private MessageStanza buildMessageStanza(MessageStanzaType messageStanzaType, Entity from, Entity to, String body) {
+ return new MessageStanza(StanzaBuilder.createMessageStanza(from, to, messageStanzaType, "en", body).build());
}
@Test
@@ -93,7 +92,8 @@ public class UserMessageStanzaBrokerTest {
Stream.of(MessageStanzaType.values()).filter(messageStanzaType -> messageStanzaType != MessageStanzaType.NORMAL)
.filter(messageStanzaType -> messageStanzaType != MessageStanzaType.CHAT).forEach(messageStanzaType -> {
- MessageStanza stanza = buildMessageStanza(messageStanzaType, null, ALICE_IN_RABBIT_HOLE);
+ MessageStanza stanza = buildMessageStanza(messageStanzaType, null, ALICE_IN_RABBIT_HOLE,
+ "hello world");
tested.writeToSession(stanza);
@@ -105,7 +105,8 @@ public class UserMessageStanzaBrokerTest {
Stream.of(MessageStanzaType.CHAT, MessageStanzaType.NORMAL).forEach(messageStanzaType -> {
julietArchive.clear();
- MessageStanza messageStanza = buildMessageStanza(messageStanzaType, null, ALICE_IN_RABBIT_HOLE);
+ MessageStanza messageStanza = buildMessageStanza(messageStanzaType, null, ALICE_IN_RABBIT_HOLE,
+ "hello world");
tested.writeToSession(messageStanza);
@@ -117,7 +118,7 @@ public class UserMessageStanzaBrokerTest {
public void outboundMessageHavingFrom() {
UserMessageStanzaBroker tested = buildTested(true);
MessageStanza messageStanza = buildMessageStanza(MessageStanzaType.NORMAL, ROMEO_IN_ORCHARD,
- ALICE_IN_RABBIT_HOLE);
+ ALICE_IN_RABBIT_HOLE, "hello world");
tested.writeToSession(messageStanza);
@@ -128,7 +129,8 @@ public class UserMessageStanzaBrokerTest {
public void outboundMessageWithoutFrom() {
UserMessageStanzaBroker tested = buildTested(true);
- MessageStanza messageStanza = buildMessageStanza(MessageStanzaType.NORMAL, null, ALICE_IN_RABBIT_HOLE);
+ MessageStanza messageStanza = buildMessageStanza(MessageStanzaType.NORMAL, null, ALICE_IN_RABBIT_HOLE,
+ "hello world");
tested.writeToSession(messageStanza);
@@ -140,7 +142,7 @@ public class UserMessageStanzaBrokerTest {
UserMessageStanzaBroker tested = buildTested(true);
MessageStanza messageStanza = buildMessageStanza(MessageStanzaType.NORMAL, ALICE_IN_RABBIT_HOLE,
- ALICE_IN_RABBIT_HOLE);
+ ALICE_IN_RABBIT_HOLE, "hello world");
tested.writeToSession(messageStanza);
@@ -149,4 +151,16 @@ public class UserMessageStanzaBrokerTest {
macbethArchive.assertEmpty();
}
+ @Test
+ public void messageWithoutBody() {
+ UserMessageStanzaBroker tested = buildTested(true);
+ MessageStanza messageStanza = buildMessageStanza(MessageStanzaType.NORMAL, JULIET_IN_CHAMBER, ROMEO_IN_ORCHARD,
+ null);
+
+ tested.writeToSession(messageStanza);
+
+ julietArchive.assertEmpty();
+ romeoArchive.assertEmpty();
+ }
+
}
\ No newline at end of file