WrappedJid.java

  1package eu.siacs.conversations.xmpp;
  2
  3
  4import android.support.annotation.NonNull;
  5
  6import org.jxmpp.jid.Jid;
  7import org.jxmpp.jid.impl.JidCreate;
  8import org.jxmpp.jid.parts.Domainpart;
  9import org.jxmpp.jid.parts.Localpart;
 10import org.jxmpp.jid.parts.Resourcepart;
 11import org.jxmpp.stringprep.XmppStringprepException;
 12
 13
 14public class WrappedJid implements eu.siacs.conversations.xmpp.Jid {
 15    private final Jid inner;
 16
 17    WrappedJid(Jid inner) {
 18        this.inner = inner;
 19    }
 20
 21    @Override
 22    public boolean isFullJid() {
 23        return inner.isEntityFullJid() || inner.isDomainFullJid();
 24    }
 25
 26    @Override
 27    public boolean isBareJid() {
 28        return inner.isDomainBareJid() || inner.isEntityBareJid();
 29    }
 30
 31    @Override
 32    public boolean isDomainJid() {
 33        return inner.isDomainBareJid() || inner.isDomainFullJid();
 34    }
 35
 36    @Override
 37    public eu.siacs.conversations.xmpp.Jid asBareJid() {
 38        return new WrappedJid(inner.asBareJid());
 39    }
 40
 41    @Override
 42    public eu.siacs.conversations.xmpp.Jid withResource(CharSequence resource) {
 43        try {
 44            return new WrappedJid(
 45                    JidCreate.fullFrom(
 46                            inner.getLocalpartOrThrow(),
 47                            inner.getDomain(),
 48                            Resourcepart.from(resource.toString())
 49                    ));
 50        } catch (XmppStringprepException e) {
 51            throw new IllegalArgumentException(e);
 52        }
 53    }
 54
 55    @Override
 56    public String getLocal() {
 57        final Localpart localpart = inner.getLocalpartOrNull();
 58        return localpart == null ? null : localpart.asUnescapedString();
 59    }
 60
 61    @Override
 62    public String getEscapedLocal() {
 63        final Localpart localpart = inner.getLocalpartOrNull();
 64        return localpart == null ? null : localpart.toString();
 65    }
 66
 67    @Override
 68    public String getDomain() {
 69        final Domainpart domainpart = inner.getDomain();
 70        return domainpart == null ? null : domainpart.toString();
 71    }
 72
 73    @Override
 74    public String getResource() {
 75        final Resourcepart resourcepart = inner.getResourceOrNull();
 76        return resourcepart == null ? null : resourcepart.toString();
 77    }
 78
 79    @Override
 80    public String toEscapedString() {
 81        return inner.toString();
 82    }
 83
 84    @NonNull
 85    @Override
 86    public String toString() {
 87        return inner.asUnescapedString();
 88    }
 89
 90    @Override
 91    public int length() {
 92        return inner.length();
 93    }
 94
 95    @Override
 96    public char charAt(int i) {
 97        return inner.charAt(i);
 98    }
 99
100    @Override
101    public CharSequence subSequence(int i, int i1) {
102        return inner.subSequence(i,i1);
103    }
104
105    @Override
106    public int compareTo(eu.siacs.conversations.xmpp.Jid jid) {
107        if (jid instanceof WrappedJid) {
108            return inner.compareTo(((WrappedJid) jid).inner);
109        } else {
110            return 0;
111        }
112    }
113
114    @Override
115    public boolean equals(Object o) {
116        if (this == o) return true;
117        if (o == null || getClass() != o.getClass()) return false;
118        WrappedJid that = (WrappedJid) o;
119        return inner.equals(that.inner);
120    }
121
122    @Override
123    public int hashCode() {
124        return inner.hashCode();
125    }
126}