Message archive management: do not filter out origin-id
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 efdf316..5de0fd2 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
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.function.Predicate;
import org.apache.vysper.xml.fragment.Attribute;
import org.apache.vysper.xml.fragment.XMLElement;
@@ -58,9 +59,7 @@
MessageStanza archivedMessageStanza = archivedMessage.stanza();
List<XMLElement> innerElements = new ArrayList<>();
- archivedMessageStanza.getInnerElements().stream().filter(xmlElement -> !STANZA_ID.equals(xmlElement.getName()))
- .filter(xmlElement -> !NamespaceURIs.XEP0359_STANZA_IDS.equals(xmlElement.getNamespaceURI()))
- .forEach(innerElements::add);
+ archivedMessageStanza.getInnerElements().stream().filter(notStanzaId()).forEach(innerElements::add);
List<Attribute> stanzaIdAttributes = new ArrayList<>();
if (archiveId != null) {
stanzaIdAttributes.add(new Attribute("by", archiveId.getFullQualifiedName()));
@@ -76,4 +75,9 @@
return archivedMessageStanzaWithIdBuilder.build();
}
+ private Predicate<XMLElement> notStanzaId() {
+ return xmlElement -> !STANZA_ID.equals(xmlElement.getName())
+ || !NamespaceURIs.XEP0359_STANZA_IDS.equals(xmlElement.getNamespaceURI());
+ }
+
}