mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-16 12:12:06 +01:00
Add all possible attributes to StreamOpen
This commit is contained in:
parent
9b9a08bb4b
commit
d5fb5e1d01
1 changed files with 59 additions and 6 deletions
|
@ -25,18 +25,64 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||||
public class StreamOpen extends FullStreamElement {
|
public class StreamOpen extends FullStreamElement {
|
||||||
|
|
||||||
public static final String ELEMENT = "stream:stream";
|
public static final String ELEMENT = "stream:stream";
|
||||||
public static final String NAMESPACE = "jabber:client";
|
|
||||||
|
public static final String CLIENT_NAMESPACE = "jabber:client";
|
||||||
|
public static final String SERVER_NAMESPACE = "jabber:server";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RFC 6120 § 4.7.5
|
||||||
|
*/
|
||||||
public static final String VERSION = "1.0";
|
public static final String VERSION = "1.0";
|
||||||
|
|
||||||
private final String service;
|
/**
|
||||||
|
* RFC 6120 § 4.7.1
|
||||||
|
*/
|
||||||
|
private final String from;
|
||||||
|
|
||||||
public StreamOpen(String service) {
|
/**
|
||||||
this.service = service;
|
* RFC 6120 § 4.7.2
|
||||||
|
*/
|
||||||
|
private final String to;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RFC 6120 § 4.7.3
|
||||||
|
*/
|
||||||
|
private final String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RFC 6120 § 4.7.4
|
||||||
|
*/
|
||||||
|
private final String lang;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RFC 6120 § 4.8.2
|
||||||
|
*/
|
||||||
|
private final String contentNamespace;
|
||||||
|
|
||||||
|
public StreamOpen(String to) {
|
||||||
|
this(to, null, null, null, StreamContentNamespace.client);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StreamOpen(String to, String from, String id, String lang, StreamContentNamespace ns) {
|
||||||
|
this.to = to;
|
||||||
|
this.from = from;
|
||||||
|
this.id = id;
|
||||||
|
this.lang = lang;
|
||||||
|
switch (ns) {
|
||||||
|
case client:
|
||||||
|
this.contentNamespace = CLIENT_NAMESPACE;
|
||||||
|
break;
|
||||||
|
case server:
|
||||||
|
this.contentNamespace = SERVER_NAMESPACE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalStateException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getNamespace() {
|
public String getNamespace() {
|
||||||
return NAMESPACE;
|
return contentNamespace;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -47,11 +93,18 @@ public class StreamOpen extends FullStreamElement {
|
||||||
@Override
|
@Override
|
||||||
public XmlStringBuilder toXML() {
|
public XmlStringBuilder toXML() {
|
||||||
XmlStringBuilder xml = new XmlStringBuilder(this);
|
XmlStringBuilder xml = new XmlStringBuilder(this);
|
||||||
xml.attribute("to", service);
|
xml.attribute("to", to);
|
||||||
xml.attribute("xmlns:stream", "http://etherx.jabber.org/streams");
|
xml.attribute("xmlns:stream", "http://etherx.jabber.org/streams");
|
||||||
xml.attribute("version", VERSION);
|
xml.attribute("version", VERSION);
|
||||||
|
xml.optAttribute("from", from);
|
||||||
|
xml.optAttribute("id", id);
|
||||||
|
xml.xmllangAttribute(lang);
|
||||||
xml.rightAngleBracket();
|
xml.rightAngleBracket();
|
||||||
return xml;
|
return xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum StreamContentNamespace {
|
||||||
|
client,
|
||||||
|
server;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue