ServiceDescription.java

 1package im.conversations.android.xmpp;
 2
 3import com.google.common.collect.Collections2;
 4import im.conversations.android.xmpp.model.disco.info.Feature;
 5import im.conversations.android.xmpp.model.disco.info.InfoQuery;
 6import java.util.Collection;
 7import java.util.List;
 8
 9public class ServiceDescription {
10    public final List<String> features;
11    public final Identity identity;
12
13    public ServiceDescription(List<String> features, Identity identity) {
14        this.features = features;
15        this.identity = identity;
16    }
17
18    public InfoQuery asInfoQuery() {
19        final var infoQuery = new InfoQuery();
20        final Collection<Feature> features =
21                Collections2.transform(
22                        this.features,
23                        sf -> {
24                            final var feature = new Feature();
25                            feature.setVar(sf);
26                            return feature;
27                        });
28        infoQuery.addExtensions(features);
29        final var identity =
30                infoQuery.addExtension(
31                        new im.conversations.android.xmpp.model.disco.info.Identity());
32        identity.setIdentityName(this.identity.name);
33        identity.setCategory(this.identity.category);
34        identity.setType(this.identity.type);
35        return infoQuery;
36    }
37
38    public static class Identity {
39        public final String name;
40        public final String category;
41        public final String type;
42
43        public Identity(String name, String category, String type) {
44            this.name = name;
45            this.category = category;
46            this.type = type;
47        }
48    }
49}