Bind2.java

 1package eu.siacs.conversations.xmpp.bind;
 2
 3import com.google.common.base.Predicates;
 4import com.google.common.collect.Collections2;
 5
 6import java.util.Arrays;
 7import java.util.Collection;
 8import java.util.Collections;
 9
10import eu.siacs.conversations.xml.Element;
11import eu.siacs.conversations.xml.Namespace;
12
13public class Bind2 {
14
15    public static final Collection<String> QUICKSTART_FEATURES = Arrays.asList(
16            Namespace.CARBONS,
17            Namespace.STREAM_MANAGEMENT
18    );
19
20    public static Collection<String> features(final Element inline) {
21        final Element inlineBind2 =
22                inline != null ? inline.findChild("bind", Namespace.BIND2) : null;
23        final Element inlineBind2Inline =
24                inlineBind2 != null ? inlineBind2.findChild("inline", Namespace.BIND2) : null;
25        if (inlineBind2 == null) {
26            return null;
27        }
28        if (inlineBind2Inline == null) {
29            return Collections.emptyList();
30        }
31        return Collections2.filter(
32                Collections2.transform(
33                        Collections2.filter(
34                                inlineBind2Inline.getChildren(),
35                                c -> "feature".equals(c.getName())),
36                        c -> c.getAttribute("var")),
37                Predicates.notNull());
38    }
39}