CryptoMessage v1.3.2版本的 MD5 值为:66c611ce56a11450659dc23697562928
以下内容为反编译后的 MultipleAddresses.java 源代码,内容仅作参考
package org.jivesoftware.smackx.address.packet;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.namespace.QName;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.FullyQualifiedElement;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jivesoftware.smackx.iot.data.element.NodeElement;
import org.jxmpp.jid.Jid;
public class MultipleAddresses implements ExtensionElement {
private final List<Address> addresses = new ArrayList();
public static final String NAMESPACE = "http://jabber.org/protocol/address";
public static final String ELEMENT = "addresses";
public static final QName QNAME = new QName(NAMESPACE, ELEMENT);
public enum Type {
bcc,
cc,
noreply,
replyroom,
replyto,
to,
ofrom
}
@Override
public String getElementName() {
return ELEMENT;
}
@Override
public String getNamespace() {
return NAMESPACE;
}
public void addAddress(Type type, Jid jid, String str, String str2, boolean z, String str3) {
Address address = new Address(type);
address.setJid(jid);
address.setNode(str);
address.setDescription(str2);
address.setDelivered(z);
address.setUri(str3);
this.addresses.add(address);
}
public void setNoReply() {
this.addresses.add(new Address(Type.noreply));
}
public List<Address> getAddressesOfType(Type type) {
ArrayList arrayList = new ArrayList(this.addresses.size());
for (Address address : this.addresses) {
if (address.getType().equals(type)) {
arrayList.add(address);
}
}
return arrayList;
}
@Override
public XmlStringBuilder toXML(XmlEnvironment xmlEnvironment) {
XmlStringBuilder xmlStringBuilder = new XmlStringBuilder((FullyQualifiedElement) this);
xmlStringBuilder.rightAngleBracket();
Iterator<Address> it = this.addresses.iterator();
while (it.hasNext()) {
xmlStringBuilder.append(it.next().toXML());
}
xmlStringBuilder.closeElement(this);
return xmlStringBuilder;
}
public static final class Address implements ExtensionElement {
public static final String ELEMENT = "address";
private boolean delivered;
private String description;
private Jid jid;
private String node;
private final Type type;
private String uri;
@Override
public String getElementName() {
return ELEMENT;
}
@Override
public String getNamespace() {
return MultipleAddresses.NAMESPACE;
}
private Address(Type type) {
this.type = type;
}
public Type getType() {
return this.type;
}
public Jid getJid() {
return this.jid;
}
public void setJid(Jid jid) {
this.jid = jid;
}
public String getNode() {
return this.node;
}
public void setNode(String str) {
this.node = str;
}
public String getDescription() {
return this.description;
}
public void setDescription(String str) {
this.description = str;
}
public boolean isDelivered() {
return this.delivered;
}
public void setDelivered(boolean z) {
this.delivered = z;
}
public String getUri() {
return this.uri;
}
public void setUri(String str) {
this.uri = str;
}
@Override
public XmlStringBuilder toXML(XmlEnvironment xmlEnvironment) {
XmlStringBuilder xmlStringBuilder = new XmlStringBuilder(this, xmlEnvironment);
xmlStringBuilder.attribute("type", this.type);
xmlStringBuilder.optAttribute("jid", this.jid);
xmlStringBuilder.optAttribute(NodeElement.ELEMENT, this.node);
xmlStringBuilder.optAttribute("desc", this.description);
String str = this.description;
if (str != null && str.trim().length() > 0) {
xmlStringBuilder.append((CharSequence) " desc=\"");
xmlStringBuilder.append((CharSequence) this.description).append('\"');
}
xmlStringBuilder.optBooleanAttribute("delivered", this.delivered);
xmlStringBuilder.optAttribute("uri", this.uri);
xmlStringBuilder.closeEmptyElement();
return xmlStringBuilder;
}
}
}