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 64f557e XEP-0313 MAM: missing attribute "by" on stanza-id element
64f557e is described below
commit 64f557ef00a8520b4116ac159f515b7aa5c6ac81
Author: Réda Housni Alaoui <[email protected]>
AuthorDate: Sun Sep 8 20:24:41 2019 +0200
XEP-0313 MAM: missing attribute "by" on stanza-id element
---
.../extension/xep0313_mam/MessageStanzaWithId.java | 4 ---
.../xep0313_mam/user/UserMessageStanzaBroker.java | 8 ++---
.../xep0313_mam/user/UserArchiveTest.java | 36 ++++++++++++++++------
3 files changed, 31 insertions(+), 17 deletions(-)
diff --git
a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MessageStanzaWithId.java
b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MessageStanzaWithId.java
index 5de0fd2..73ad748 100644
---
a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MessageStanzaWithId.java
+++
b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/MessageStanzaWithId.java
@@ -46,10 +46,6 @@ public class MessageStanzaWithId {
private final Entity archiveId;
- public MessageStanzaWithId(ArchivedMessage archivedMessage) {
- this(archivedMessage, null);
- }
-
public MessageStanzaWithId(ArchivedMessage archivedMessage, Entity
archiveId) {
this.archivedMessage = requireNonNull(archivedMessage);
this.archiveId = archiveId;
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 b818253..4fcc1bc 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
@@ -108,8 +108,7 @@ class UserMessageStanzaBroker extends
DelegatingStanzaBroker {
addToSenderArchive(messageStanza, sessionContext);
return messageStanza;
} else {
- return
addToReceiverArchive(messageStanza).map(MessageStanzaWithId::new).map(MessageStanzaWithId::toStanza)
- .orElse(stanza);
+ return
addToReceiverArchive(messageStanza).map(MessageStanzaWithId::toStanza).orElse(stanza);
}
}
@@ -125,7 +124,7 @@ class UserMessageStanzaBroker extends
DelegatingStanzaBroker {
senderArchive.get().archive(new SimpleMessage(messageStanza));
}
- private Optional<ArchivedMessage> addToReceiverArchive(MessageStanza
messageStanza) {
+ private Optional<MessageStanzaWithId> addToReceiverArchive(MessageStanza
messageStanza) {
// Servers that expose archive messages of sent/received messages on
behalf of
// local users MUST expose these archives to the user on the user's
bare JID.
Entity receiverArchiveId = requireNonNull(messageStanza.getTo(), "No
'to' found in " + messageStanza)
@@ -136,7 +135,8 @@ class UserMessageStanzaBroker extends
DelegatingStanzaBroker {
return Optional.empty();
}
- return Optional.ofNullable(receiverArchive.get().archive(new
SimpleMessage(messageStanza)));
+ ArchivedMessage archivedMessage = receiverArchive.get().archive(new
SimpleMessage(messageStanza));
+ return Optional.of(new MessageStanzaWithId(archivedMessage,
receiverArchiveId));
}
private MessageArchives messageArchives() {
diff --git
a/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserArchiveTest.java
b/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserArchiveTest.java
index 9e1fbb4..ba577ed 100644
---
a/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserArchiveTest.java
+++
b/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserArchiveTest.java
@@ -22,7 +22,6 @@ package
org.apache.vysper.xmpp.modules.extension.xep0313_mam.user;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -69,6 +68,25 @@ public class UserArchiveTest extends IntegrationTest {
}
@Test
+ public void receivedArchivedMessageShouldHaveAStanzaId() throws
SmackException.NotConnectedException, InterruptedException {
+ AtomicReference<Message> carolReceivedMessage = new
AtomicReference<>();
+ ChatManager.getInstanceFor(carol())
+ .addIncomingListener((from, message, chat) ->
carolReceivedMessage.set(message));
+
+ Chat chatFromAliceToCarol =
ChatManager.getInstanceFor(alice()).chatWith(carol().getUser().asEntityBareJid());
+ chatFromAliceToCarol.send("Hello carol");
+
+ Thread.sleep(200);
+
+ assertNotNull(carolReceivedMessage.get());
+
+ StanzaIdElement stanzaIdElement =
extractStanzaId(carolReceivedMessage.get());
+ assertNotNull(stanzaIdElement);
+ assertNotNull(stanzaIdElement.getId());
+ assertEquals(carol().getUser().asEntityBareJid(),
stanzaIdElement.getBy());
+ }
+
+ @Test
public void sendMessageAndQuerySenderAndReceiverArchive()
throws SmackException.NotConnectedException, InterruptedException,
SmackException.NotLoggedInException,
XMPPException.XMPPErrorException,
SmackException.NoResponseException {
@@ -89,7 +107,7 @@ public class UserArchiveTest extends IntegrationTest {
assertEquals(alice().getUser(), toCarolArchivedMessage.getFrom());
assertEquals(carol().getUser().asEntityBareJidOrThrow(),
toCarolArchivedMessage.getTo().asEntityBareJidOrThrow());
- String toCarolArchivedMessageId =
extractStanzaId(toCarolArchivedMessage);
+ String toCarolArchivedMessageId =
extractStanzaId(toCarolArchivedMessage).getId();
MamManager.MamQuery carolArchive =
MamManager.getInstanceFor(carol()).queryArchive(fullQuery);
@@ -100,10 +118,10 @@ public class UserArchiveTest extends IntegrationTest {
assertEquals(alice().getUser(), fromAliceArchivedMessage.getFrom());
assertEquals(carol().getUser().asEntityBareJidOrThrow(),
fromAliceArchivedMessage.getTo().asEntityBareJidOrThrow());
- String fromAliceArchivedMessageId =
extractStanzaId(fromAliceArchivedMessage);
+ String fromAliceArchivedMessageId =
extractStanzaId(fromAliceArchivedMessage).getId();
assertFalse(toCarolArchivedMessageId.equals(fromAliceArchivedMessageId));
- assertEquals(extractStanzaId(carolReceivedMessage.get()),
fromAliceArchivedMessageId);
+ assertEquals(extractStanzaId(carolReceivedMessage.get()).getId(),
fromAliceArchivedMessageId);
}
@Test
@@ -193,10 +211,10 @@ public class UserArchiveTest extends IntegrationTest {
assertEquals("Hello carol", carolReceivedMessage.get().getBody());
Message archivedMessage = fetchUniqueArchivedMessage(carol());
- String storedStanzaId = extractStanzaId(archivedMessage);
+ String storedStanzaId = extractStanzaId(archivedMessage).getId();
assertNotNull(storedStanzaId);
- String receivedStanzaId = extractStanzaId(carolReceivedMessage.get());
+ String receivedStanzaId =
extractStanzaId(carolReceivedMessage.get()).getId();
assertEquals(storedStanzaId, receivedStanzaId);
}
@@ -220,7 +238,7 @@ public class UserArchiveTest extends IntegrationTest {
Thread.sleep(200);
Message archivedMessage = fetchUniqueArchivedMessage(carol());
- String storedStanzaId = extractStanzaId(archivedMessage);
+ String storedStanzaId = extractStanzaId(archivedMessage).getId();
assertNotNull(storedStanzaId);
}
@@ -284,14 +302,14 @@ public class UserArchiveTest extends IntegrationTest {
return archive.getMessages().get(0);
}
- private String extractStanzaId(Stanza stanza) {
+ private StanzaIdElement extractStanzaId(Stanza stanza) {
assertNotNull(stanza);
ExtensionElement extensionElement =
stanza.getExtension(NamespaceURIs.XEP0359_STANZA_IDS);
if (!(extensionElement instanceof StanzaIdElement)) {
fail("No stanza id in " + stanza);
}
- return ((StanzaIdElement) extensionElement).getId();
+ return (StanzaIdElement) extensionElement;
}
}