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 eu.siacs.conversations.xmpp.Jid getDomain() {
 69        return new WrappedJid(inner.asDomainBareJid());
 70    }
 71
 72    @Override
 73    public String getResource() {
 74        final Resourcepart resourcepart = inner.getResourceOrNull();
 75        return resourcepart == null ? null : resourcepart.toString();
 76    }
 77
 78    @Override
 79    public String toEscapedString() {
 80        return inner.toString();
 81    }
 82
 83    @NonNull
 84    @Override
 85    public String toString() {
 86        return inner.asUnescapedString();
 87    }
 88
 89    @Override
 90    public int length() {
 91        return inner.length();
 92    }
 93
 94    @Override
 95    public char charAt(int i) {
 96        return inner.charAt(i);
 97    }
 98
 99    @Override
100    public CharSequence subSequence(int i, int i1) {
101        return inner.subSequence(i,i1);
102    }
103
104    @Override
105    public int compareTo(eu.siacs.conversations.xmpp.Jid jid) {
106        if (jid instanceof WrappedJid) {
107            return inner.compareTo(((WrappedJid) jid).inner);
108        } else {
109            return 0;
110        }
111    }
112
113    @Override
114    public boolean equals(Object o) {
115        if (this == o) return true;
116        if (o == null || getClass() != o.getClass()) return false;
117        WrappedJid that = (WrappedJid) o;
118        return inner.equals(that.inner);
119    }
120
121    @Override
122    public int hashCode() {
123        return inner.hashCode();
124    }
125}