1package im.conversations.android.xmpp.model.unique;
 2
 3import com.google.common.collect.ImmutableMap;
 4import eu.siacs.conversations.xmpp.Jid;
 5import im.conversations.android.annotation.XmlElement;
 6import im.conversations.android.xmpp.model.Extension;
 7import java.util.Map;
 8
 9@XmlElement
10public class StanzaId extends Extension {
11
12    public StanzaId() {
13        super(StanzaId.class);
14    }
15
16    public Jid getBy() {
17        return this.getAttributeAsJid("by");
18    }
19
20    public String getId() {
21        return this.getAttribute("id");
22    }
23
24    public static String get(
25            final im.conversations.android.xmpp.model.stanza.Message packet, final Jid by) {
26        final var builder = new ImmutableMap.Builder<Jid, String>();
27        for (final var stanzaId : packet.getExtensions(StanzaId.class)) {
28            final var id = stanzaId.getId();
29            final var byAttribute = Jid.Invalid.getNullForInvalid(stanzaId.getBy());
30            if (byAttribute != null && id != null) {
31                builder.put(byAttribute, id);
32            }
33        }
34        final Map<Jid, String> byToId;
35        try {
36            byToId = builder.buildOrThrow();
37        } catch (final IllegalArgumentException e) {
38            return null;
39        }
40        return byToId.get(by);
41    }
42}