mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-09 09:09:38 +02:00
Improve SHIM API
- HeadersExtension.getHeaders() now returns a List instead of a Collection - Use XmlStringBuilder in Header and HeadersExtension toXML() - Add HeadersProviderTest - Use Smack formatting Also remove duplicate parsing code regarding SHIM from HOXT implementation.
This commit is contained in:
parent
06add179ec
commit
f2703bc195
7 changed files with 164 additions and 123 deletions
|
@ -21,15 +21,12 @@ import org.jivesoftware.smack.packet.NamedElement;
|
|||
import org.jivesoftware.smack.provider.IQProvider;
|
||||
import org.jivesoftware.smack.util.StringUtils;
|
||||
import org.jivesoftware.smackx.hoxt.packet.AbstractHttpOverXmpp;
|
||||
import org.jivesoftware.smackx.shim.packet.Header;
|
||||
import org.jivesoftware.smackx.shim.packet.HeadersExtension;
|
||||
import org.jivesoftware.smackx.shim.provider.HeaderProvider;
|
||||
import org.jivesoftware.smackx.shim.provider.HeadersProvider;
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Abstract parent for Req and Resp packet providers.
|
||||
|
@ -39,8 +36,6 @@ import java.util.Set;
|
|||
*/
|
||||
public abstract class AbstractHttpOverXmppProvider<H extends AbstractHttpOverXmpp> extends IQProvider<H> {
|
||||
|
||||
private static final String ELEMENT_HEADERS = "headers";
|
||||
private static final String ELEMENT_HEADER = "header";
|
||||
private static final String ELEMENT_DATA = "data";
|
||||
private static final String ELEMENT_TEXT = "text";
|
||||
private static final String ELEMENT_BASE_64 = "base64";
|
||||
|
@ -71,8 +66,8 @@ public abstract class AbstractHttpOverXmppProvider<H extends AbstractHttpOverXmp
|
|||
int eventType = parser.next();
|
||||
|
||||
if (eventType == XmlPullParser.START_TAG) {
|
||||
if (parser.getName().equals(ELEMENT_HEADERS)) {
|
||||
HeadersExtension headersExtension = parseHeaders(parser);
|
||||
if (parser.getName().equals(HeadersExtension.ELEMENT)) {
|
||||
HeadersExtension headersExtension = HeadersProvider.INSTANCE.parse(parser);
|
||||
body.setHeaders(headersExtension);
|
||||
} else if (parser.getName().endsWith(ELEMENT_DATA)) {
|
||||
AbstractHttpOverXmpp.Data data = parseData(parser);
|
||||
|
@ -88,28 +83,6 @@ public abstract class AbstractHttpOverXmppProvider<H extends AbstractHttpOverXmp
|
|||
}
|
||||
}
|
||||
|
||||
private HeadersExtension parseHeaders(XmlPullParser parser) throws XmlPullParserException, IOException, SmackException {
|
||||
HeaderProvider provider = new HeaderProvider();
|
||||
Set<Header> set = new HashSet<Header>();
|
||||
boolean done = false;
|
||||
|
||||
while (!done) {
|
||||
int eventType = parser.next();
|
||||
|
||||
if (eventType == XmlPullParser.START_TAG) {
|
||||
if (parser.getName().equals(ELEMENT_HEADER)) {
|
||||
Header header = provider.parse(parser);
|
||||
set.add(header);
|
||||
}
|
||||
} else if (eventType == XmlPullParser.END_TAG) {
|
||||
if (parser.getName().equals(ELEMENT_HEADERS)) {
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return new HeadersExtension(set);
|
||||
}
|
||||
|
||||
private AbstractHttpOverXmpp.Data parseData(XmlPullParser parser) throws XmlPullParserException, IOException {
|
||||
NamedElement child = null;
|
||||
boolean done = false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue