IbbTransportInfo.java

 1package eu.siacs.conversations.xmpp.jingle.stanzas;
 2
 3import com.google.common.base.Preconditions;
 4import com.google.common.base.Strings;
 5import com.google.common.primitives.Longs;
 6
 7import eu.siacs.conversations.xml.Element;
 8import eu.siacs.conversations.xml.Namespace;
 9
10public class IbbTransportInfo extends GenericTransportInfo {
11
12    private IbbTransportInfo(final String name, final String xmlns) {
13        super(name, xmlns);
14    }
15
16    public IbbTransportInfo(final String transportId, final int blockSize) {
17        super("transport", Namespace.JINGLE_TRANSPORTS_IBB);
18        Preconditions.checkNotNull(transportId, "Transport ID can not be null");
19        Preconditions.checkArgument(blockSize > 0, "Block size must be larger than 0");
20        this.setAttribute("block-size", blockSize);
21        this.setAttribute("sid", transportId);
22    }
23
24    public String getTransportId() {
25        return this.getAttribute("sid");
26    }
27
28    public Long getBlockSize() {
29        final String blockSize = this.getAttribute("block-size");
30        return Strings.isNullOrEmpty(blockSize) ? null : Longs.tryParse(blockSize);
31    }
32
33    public static IbbTransportInfo upgrade(final Element element) {
34        Preconditions.checkArgument("transport".equals(element.getName()), "Name of provided element is not transport");
35        Preconditions.checkArgument(Namespace.JINGLE_TRANSPORTS_IBB.equals(element.getNamespace()), "Element does not match ibb transport namespace");
36        final IbbTransportInfo transportInfo = new IbbTransportInfo("transport", Namespace.JINGLE_TRANSPORTS_IBB);
37        transportInfo.setAttributes(element.getAttributes());
38        transportInfo.setChildren(element.getChildren());
39        return transportInfo;
40    }
41}