CryptoMessage v1.3.2版本的 MD5 值为:66c611ce56a11450659dc23697562928
以下内容为反编译后的 StreamInitiation.java 源代码,内容仅作参考
package org.jivesoftware.smackx.si.packet;
import java.util.Date;
import java.util.Objects;
import org.jivesoftware.smack.db.entities.AccountEntity;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smackx.filetransfer.FileTransferNegotiator;
import org.jivesoftware.smackx.jingle_filetransfer.element.JingleFileTransferChild;
import org.jivesoftware.smackx.xdata.packet.DataForm;
import org.jxmpp.util.XmppDateTime;
public class StreamInitiation extends IQ {
public static final String ELEMENT = "si";
public static final String NAMESPACE = "http://jabber.org/protocol/si";
private Feature featureNegotiation;
private File file;
private String id;
private String mimeType;
public StreamInitiation() {
super(ELEMENT, "http://jabber.org/protocol/si");
}
public void setSessionID(String str) {
this.id = str;
}
public String getSessionID() {
return this.id;
}
public void setMimeType(String str) {
this.mimeType = str;
}
public String getMimeType() {
return this.mimeType;
}
public void setFile(File file) {
this.file = file;
}
public File getFile() {
return this.file;
}
public void setFeatureNegotiationForm(DataForm dataForm) {
this.featureNegotiation = new Feature(dataForm);
}
public DataForm getFeatureNegotiationForm() {
return this.featureNegotiation.getData();
}
static class AnonymousClass1 {
static final int[] $SwitchMap$org$jivesoftware$smack$packet$IQ$Type;
static {
int[] iArr = new int[IQ.Type.values().length];
$SwitchMap$org$jivesoftware$smack$packet$IQ$Type = iArr;
try {
iArr[IQ.Type.set.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$org$jivesoftware$smack$packet$IQ$Type[IQ.Type.result.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
}
}
@Override
protected IQ.IQChildElementXmlStringBuilder getIQChildElementBuilder(IQ.IQChildElementXmlStringBuilder iQChildElementXmlStringBuilder) {
int i = AnonymousClass1.$SwitchMap$org$jivesoftware$smack$packet$IQ$Type[getType().ordinal()];
if (i == 1) {
iQChildElementXmlStringBuilder.optAttribute("id", getSessionID());
iQChildElementXmlStringBuilder.optAttribute("mime-type", getMimeType());
iQChildElementXmlStringBuilder.attribute(AccountEntity.PROFILE, FileTransferNegotiator.SI_PROFILE_FILE_TRANSFER_NAMESPACE);
iQChildElementXmlStringBuilder.rightAngleBracket();
iQChildElementXmlStringBuilder.optElement(this.file);
} else if (i == 2) {
iQChildElementXmlStringBuilder.rightAngleBracket();
} else {
throw new IllegalArgumentException("IQ Type not understood");
}
Feature feature = this.featureNegotiation;
if (feature != null) {
iQChildElementXmlStringBuilder.append(feature.toXML());
}
return iQChildElementXmlStringBuilder;
}
public static class File implements ExtensionElement {
private Date date;
private String desc;
private String hash;
private boolean isRanged;
private final String name;
private final long size;
@Override
public String getElementName() {
return JingleFileTransferChild.ELEMENT;
}
@Override
public String getNamespace() {
return FileTransferNegotiator.SI_PROFILE_FILE_TRANSFER_NAMESPACE;
}
public File(String str, long j) {
Objects.requireNonNull(str, "name cannot be null");
this.name = str;
this.size = j;
}
public String getName() {
return this.name;
}
public long getSize() {
return this.size;
}
public void setHash(String str) {
this.hash = str;
}
public String getHash() {
return this.hash;
}
public void setDate(Date date) {
this.date = date;
}
public Date getDate() {
return this.date;
}
public void setDesc(String str) {
this.desc = str;
}
public String getDesc() {
return this.desc;
}
public void setRanged(boolean z) {
this.isRanged = z;
}
public boolean isRanged() {
return this.isRanged;
}
@Override
public String toXML(XmlEnvironment xmlEnvironment) {
StringBuilder sb = new StringBuilder();
sb.append('<');
sb.append(getElementName());
sb.append(" xmlns=\"");
sb.append(getNamespace());
sb.append("\" ");
if (getName() != null) {
sb.append("name=\"");
sb.append(StringUtils.escapeForXmlAttribute(getName()));
sb.append("\" ");
}
if (getSize() > 0) {
sb.append("size=\"");
sb.append(getSize());
sb.append("\" ");
}
if (getDate() != null) {
sb.append("date=\"");
sb.append(XmppDateTime.formatXEP0082Date(this.date));
sb.append("\" ");
}
if (getHash() != null) {
sb.append("hash=\"");
sb.append(getHash());
sb.append("\" ");
}
String str = this.desc;
if ((str != null && str.length() > 0) || this.isRanged) {
sb.append('>');
if (getDesc() != null && this.desc.length() > 0) {
sb.append("<desc>");
sb.append(StringUtils.escapeForXmlText(getDesc()));
sb.append("</desc>");
}
if (isRanged()) {
sb.append("<range/>");
}
sb.append("</");
sb.append(getElementName());
sb.append('>');
} else {
sb.append("/>");
}
return sb.toString();
}
}
public static class Feature implements ExtensionElement {
private final DataForm data;
@Override
public String getElementName() {
return "feature";
}
@Override
public String getNamespace() {
return "http://jabber.org/protocol/feature-neg";
}
public Feature(DataForm dataForm) {
this.data = dataForm;
}
public DataForm getData() {
return this.data;
}
@Override
public String toXML(XmlEnvironment xmlEnvironment) {
return "<feature xmlns=\"http://jabber.org/protocol/feature-neg\">" + this.data.toXML() + "</feature>";
}
}
}