1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-12-23 04:57:58 +01:00

Add all possible attributes to StreamOpen

This commit is contained in:
Florian Schmaus 2015-01-16 18:12:39 +01:00
parent 9b9a08bb4b
commit d5fb5e1d01

View file

@ -25,18 +25,64 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
public class StreamOpen extends FullStreamElement {
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";
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
public String getNamespace() {
return NAMESPACE;
return contentNamespace;
}
@Override
@ -47,11 +93,18 @@ public class StreamOpen extends FullStreamElement {
@Override
public XmlStringBuilder toXML() {
XmlStringBuilder xml = new XmlStringBuilder(this);
xml.attribute("to", service);
xml.attribute("to", to);
xml.attribute("xmlns:stream", "http://etherx.jabber.org/streams");
xml.attribute("version", VERSION);
xml.optAttribute("from", from);
xml.optAttribute("id", id);
xml.xmllangAttribute(lang);
xml.rightAngleBracket();
return xml;
}
public enum StreamContentNamespace {
client,
server;
}
}