EntityCapabilities.java

 1package im.conversations.android.xmpp.model.capabilties;
 2
 3import androidx.annotation.NonNull;
 4import androidx.annotation.Nullable;
 5import im.conversations.android.xmpp.model.Extension;
 6
 7public interface EntityCapabilities {
 8
 9    <E extends Extension> E getExtension(final Class<E> clazz);
10
11    default NodeHash getCapabilities() {
12        final String node;
13        final im.conversations.android.xmpp.EntityCapabilities.Hash hash;
14        final var capabilities = this.getExtension(Capabilities.class);
15        final var legacyCapabilities = this.getExtension(LegacyCapabilities.class);
16        if (capabilities != null) {
17            node = null;
18            hash = capabilities.getHash();
19        } else if (legacyCapabilities != null) {
20            node = legacyCapabilities.getNode();
21            hash = legacyCapabilities.getHash();
22        } else {
23            return null;
24        }
25        return hash == null ? null : new NodeHash(node, hash);
26    }
27
28    class NodeHash {
29        public final String node;
30        public final im.conversations.android.xmpp.EntityCapabilities.Hash hash;
31
32        private NodeHash(
33                @Nullable String node,
34                @NonNull final im.conversations.android.xmpp.EntityCapabilities.Hash hash) {
35            this.node = node;
36            this.hash = hash;
37        }
38    }
39}