From 4d298e39e350b4fb7edd04430c96772d98b39b5d Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sat, 31 Aug 2019 19:36:10 +0200 Subject: [PATCH 1/2] XEP-0359: Fix appending origin-ids --- .../smackx/sid/StableUniqueStanzaIdManager.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java index c2674de64..98b8a26a0 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java @@ -27,6 +27,7 @@ import org.jivesoftware.smack.XMPPConnectionRegistry; import org.jivesoftware.smack.filter.AndFilter; import org.jivesoftware.smack.filter.MessageTypeFilter; import org.jivesoftware.smack.filter.NotFilter; +import org.jivesoftware.smack.filter.StanzaExtensionFilter; import org.jivesoftware.smack.filter.StanzaFilter; import org.jivesoftware.smack.filter.ToTypeFilter; import org.jivesoftware.smack.packet.Message; @@ -46,6 +47,9 @@ public final class StableUniqueStanzaIdManager extends Manager { MessageTypeFilter.NORMAL_OR_CHAT_OR_HEADLINE, ToTypeFilter.ENTITY_FULL_OR_BARE_JID); + // Filter that filters for messages with an origin id + private static final StanzaFilter ORIGIN_ID_FILTER = new StanzaExtensionFilter(OriginIdElement.ELEMENT, NAMESPACE); + // Listener for outgoing stanzas that adds origin-ids to outgoing stanzas. private static final StanzaListener ADD_ORIGIN_ID_INTERCEPTOR = new StanzaListener() { @Override @@ -93,7 +97,8 @@ public final class StableUniqueStanzaIdManager extends Manager { */ public synchronized void enable() { ServiceDiscoveryManager.getInstanceFor(connection()).addFeature(NAMESPACE); - StanzaFilter filter = new AndFilter(OUTGOING_FILTER, new NotFilter(OUTGOING_FILTER)); + // We need a filter for outgoing messages that do not carry an origin-id already + StanzaFilter filter = new AndFilter(OUTGOING_FILTER, new NotFilter(ORIGIN_ID_FILTER)); connection().addStanzaInterceptor(ADD_ORIGIN_ID_INTERCEPTOR, filter); } From 3d0e5716e72b5ce6be36ffc93668ccdca138634e Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sat, 31 Aug 2019 19:36:17 +0200 Subject: [PATCH 2/2] Add documentation --- .../smackx/sid/StableUniqueStanzaIdManager.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java index 98b8a26a0..b43cc6078 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/sid/StableUniqueStanzaIdManager.java @@ -36,6 +36,15 @@ import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.sid.element.OriginIdElement; +/** + * Manager class for Stable and Unique Stanza IDs. + * + * In order to start automatically appending origin ids to outgoing messages, use {@link #enable()}. + * This will announce support via the {@link ServiceDiscoveryManager}. If you want to stop appending origin-ids + * and de-announce support, call {@link #disable()}. + * + * @see XEP-0359: Stable and Unique Stanza IDs + */ public final class StableUniqueStanzaIdManager extends Manager { public static final String NAMESPACE = "urn:xmpp:sid:0"; @@ -70,7 +79,7 @@ public final class StableUniqueStanzaIdManager extends Manager { /** * Private constructor. - * @param connection TODO javadoc me please + * @param connection XMPP connection */ private StableUniqueStanzaIdManager(XMPPConnection connection) { super(connection);