Jid.java

  1package eu.siacs.conversations.xmpp;
  2
  3import org.jxmpp.jid.impl.JidCreate;
  4import org.jxmpp.jid.parts.Domainpart;
  5import org.jxmpp.jid.parts.Localpart;
  6import org.jxmpp.jid.parts.Resourcepart;
  7import org.jxmpp.stringprep.XmppStringprepException;
  8
  9import java.io.Serializable;
 10
 11public interface Jid extends Comparable<Jid>, Serializable, CharSequence {
 12
 13    static Jid of(CharSequence local, CharSequence domain, CharSequence resource) {
 14        if (resource == null) {
 15            return ofLocalAndDomain(local, domain);
 16        }
 17        try {
 18            return new WrappedJid(JidCreate.entityFullFrom(
 19                    Localpart.fromUnescaped(local.toString()),
 20                    Domainpart.from(domain.toString()),
 21                    Resourcepart.from(resource.toString())
 22            ));
 23        } catch (XmppStringprepException e) {
 24            throw new IllegalArgumentException(e);
 25        }
 26    }
 27
 28    static Jid ofEscaped(CharSequence local, CharSequence domain, CharSequence resource) {
 29        try {
 30            if (resource == null) {
 31                return new WrappedJid(
 32                        JidCreate.bareFrom(
 33                                Localpart.from(local.toString()),
 34                                Domainpart.from(domain.toString())
 35                        )
 36                );
 37            }
 38            return new WrappedJid(JidCreate.entityFullFrom(
 39                    Localpart.from(local.toString()),
 40                    Domainpart.from(domain.toString()),
 41                    Resourcepart.from(resource.toString())
 42            ));
 43        } catch (XmppStringprepException e) {
 44            throw new IllegalArgumentException(e);
 45        }
 46    }
 47
 48
 49    static Jid ofDomain(CharSequence domain) {
 50        try {
 51            return new WrappedJid(JidCreate.domainBareFrom(domain));
 52        } catch (XmppStringprepException e) {
 53            throw new IllegalArgumentException(e);
 54        }
 55    }
 56
 57    static Jid ofLocalAndDomain(CharSequence local, CharSequence domain) {
 58        try {
 59            return new WrappedJid(
 60                    JidCreate.bareFrom(
 61                            Localpart.fromUnescaped(local.toString()),
 62                            Domainpart.from(domain.toString())
 63                    )
 64            );
 65        } catch (XmppStringprepException e) {
 66            throw new IllegalArgumentException(e);
 67        }
 68    }
 69
 70    static Jid ofLocalAndDomainEscaped(CharSequence local, CharSequence domain) {
 71        try {
 72            return new WrappedJid(
 73                    JidCreate.bareFrom(
 74                            Localpart.from(local.toString()),
 75                            Domainpart.from(domain.toString())
 76                    )
 77            );
 78        } catch (XmppStringprepException e) {
 79            throw new IllegalArgumentException(e);
 80        }
 81    }
 82
 83    static Jid of(CharSequence jid) {
 84        if (jid instanceof Jid) {
 85            return (Jid) jid;
 86        }
 87        try {
 88            return new WrappedJid(JidCreate.fromUnescaped(jid));
 89        } catch (XmppStringprepException e) {
 90            throw new IllegalArgumentException(e);
 91        }
 92    }
 93
 94    static Jid ofEscaped(CharSequence jid) {
 95        try {
 96            return new WrappedJid(JidCreate.from(jid));
 97        } catch (XmppStringprepException e) {
 98            e.printStackTrace();
 99            throw new IllegalArgumentException(e);
100        }
101    }
102
103    boolean isFullJid();
104
105    boolean isBareJid();
106
107    boolean isDomainJid();
108
109    Jid asBareJid();
110
111    Jid withResource(CharSequence resource);
112
113    String getLocal();
114
115    String getEscapedLocal();
116
117    String getDomain();
118
119    String getResource();
120
121    String toEscapedString();
122}