1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2025-09-09 00:59:39 +02:00

Replace XPP3 by XmlPullParser interface wrapping StAX and XPP3

Introducing Smack's own XmlPullParser interface which tries to stay as
compatible as possible to XPP3. The interface is used to either wrap
StAX's XMLStreamReader if Smack is used on Java SE, and XPP3's
XmlPullParser if Smack is used on on Android.

Fixes SMACK-591.

Also introduce JUnit 5 and non-strict javadoc projects.
This commit is contained in:
Florian Schmaus 2019-05-06 22:06:13 +02:00
parent b3646abecd
commit 4133eb175c
414 changed files with 3855 additions and 2041 deletions

View file

@ -34,13 +34,12 @@ import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.IQProvider;
import org.jivesoftware.smack.provider.ProviderManager;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
import org.jivesoftware.smackx.disco.packet.DiscoverInfo;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
/**
* RTPBridge IQ Stanza used to request and retrieve a RTPBridge Candidates that can be used for a Jingle Media Transmission between two parties that are behind NAT.
* This Jingle Bridge has all the needed information to establish a full UDP Channel (Send and Receive) between two parties.
@ -335,7 +334,7 @@ public class RTPBridge extends IQ {
boolean done = false;
int eventType;
XmlPullParser.Event eventType;
String elementName;
if (!parser.getNamespace().equals(RTPBridge.NAMESPACE))
@ -354,7 +353,7 @@ public class RTPBridge extends IQ {
eventType = parser.next();
elementName = parser.getName();
if (eventType == XmlPullParser.START_TAG) {
if (eventType == XmlPullParser.Event.START_ELEMENT) {
if (elementName.equals("candidate")) {
for (int i = 0; i < parser.getAttributeCount(); i++) {
if (parser.getAttributeName(i).equals("ip"))
@ -376,7 +375,7 @@ public class RTPBridge extends IQ {
}
}
}
else if (eventType == XmlPullParser.END_TAG) {
else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (parser.getName().equals(RTPBridge.ELEMENT_NAME)) {
done = true;
}

View file

@ -30,14 +30,13 @@ import org.jivesoftware.smack.packet.SimpleIQ;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.IQProvider;
import org.jivesoftware.smack.provider.ProviderManager;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
import org.jivesoftware.smackx.disco.packet.DiscoverInfo;
import org.jivesoftware.smackx.disco.packet.DiscoverItems;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
/**
* STUN IQ Stanza used to request and retrieve a STUN server and port to make p2p connections easier. STUN is usually used by Jingle Media Transmission between two parties that are behind NAT.
*
@ -123,7 +122,7 @@ public class STUN extends SimpleIQ {
boolean done = false;
int eventType;
XmlPullParser.Event eventType;
String elementName;
if (!parser.getNamespace().equals(NAMESPACE))
@ -136,7 +135,7 @@ public class STUN extends SimpleIQ {
eventType = parser.next();
elementName = parser.getName();
if (eventType == XmlPullParser.START_TAG) {
if (eventType == XmlPullParser.Event.START_ELEMENT) {
if (elementName.equals("server")) {
String host = null;
String port = null;
@ -159,7 +158,7 @@ public class STUN extends SimpleIQ {
iq.setPublicIp(host);
}
}
else if (eventType == XmlPullParser.END_TAG) {
else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (parser.getName().equals(ELEMENT_NAME)) {
done = true;
}

View file

@ -28,15 +28,15 @@ import java.util.logging.Logger;
import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.util.PacketParserUtils;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;
import org.jivesoftware.smackx.jingleold.JingleSession;
import de.javawi.jstun.test.BindingLifetimeTest;
import de.javawi.jstun.test.DiscoveryInfo;
import de.javawi.jstun.test.DiscoveryTest;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
/**
* Transport resolver using the JSTUN library, to discover public IP and use it as a candidate.
@ -141,13 +141,11 @@ public class STUNResolver extends TransportResolver {
int serverPort;
try {
XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
parser.setInput(stunConfigStream, "UTF-8");
XmlPullParser parser = PacketParserUtils.getParserFor(stunConfigStream);
int eventType = parser.getEventType();
XmlPullParser.Event eventType = parser.getEventType();
do {
if (eventType == XmlPullParser.START_TAG) {
if (eventType == XmlPullParser.Event.START_ELEMENT) {
// Parse a STUN server definition
if (parser.getName().equals("stunServer")) {
@ -181,7 +179,7 @@ public class STUNResolver extends TransportResolver {
eventType = parser.next();
}
while (eventType != XmlPullParser.END_DOCUMENT);
while (eventType != XmlPullParser.Event.END_DOCUMENT);
}
catch (XmlPullParserException e) {

View file

@ -31,6 +31,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smackx.jingleold.JingleSession;
import org.jxmpp.jid.Jid;

View file

@ -22,11 +22,10 @@ import java.util.Locale;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smackx.jingleold.media.ContentInfo;
import org.xmlpull.v1.XmlPullParser;
public class JingleError implements ExtensionElement {
public static String NAMESPACE = "urn:xmpp:tmp:jingle:errors";

View file

@ -20,14 +20,13 @@ import java.io.IOException;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;
import org.jivesoftware.smackx.jingleold.media.PayloadType;
import org.jivesoftware.smackx.jingleold.packet.JingleContentDescription;
import org.jivesoftware.smackx.jingleold.packet.JingleContentDescription.JinglePayloadType;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
/**
* Parser for a Jingle description.
*
@ -77,17 +76,17 @@ public abstract class JingleContentDescriptionProvider extends ExtensionElementP
JingleContentDescription desc = getInstance();
while (!done) {
int eventType = parser.next();
XmlPullParser.Event eventType = parser.next();
String name = parser.getName();
if (eventType == XmlPullParser.START_TAG) {
if (eventType == XmlPullParser.Event.START_ELEMENT) {
if (name.equals(JingleContentDescription.JinglePayloadType.NODENAME)) {
desc.addJinglePayloadType(parsePayload(parser));
} else {
// TODO: Should be SmackParseException.
throw new IOException("Unknow element \"" + name + "\" in content.");
}
} else if (eventType == XmlPullParser.END_TAG) {
} else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (name.equals(JingleContentDescription.NODENAME)) {
done = true;
}

View file

@ -19,12 +19,11 @@ package org.jivesoftware.smackx.jingleold.provider;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smackx.jingleold.media.ContentInfo;
import org.jivesoftware.smackx.jingleold.packet.JingleContentInfo;
import org.xmlpull.v1.XmlPullParser;
/**
* Jingle Audio jmf-info provider.
*

View file

@ -18,11 +18,10 @@ package org.jivesoftware.smackx.jingleold.provider;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smackx.jingleold.packet.JingleContent;
import org.xmlpull.v1.XmlPullParser;
/**
* Jingle &lt;content&gt; provider.
*

View file

@ -20,13 +20,12 @@ import java.io.IOException;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;
import org.jivesoftware.smackx.jingleold.media.PayloadType;
import org.jivesoftware.smackx.jingleold.packet.JingleDescription;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
/**
* Parser for a Jingle description.
*
@ -76,17 +75,17 @@ public abstract class JingleDescriptionProvider extends ExtensionElementProvider
JingleDescription desc = getInstance();
while (!done) {
int eventType = parser.next();
XmlPullParser.Event eventType = parser.next();
String name = parser.getName();
if (eventType == XmlPullParser.START_TAG) {
if (eventType == XmlPullParser.Event.START_ELEMENT) {
if (name.equals(PayloadType.NODENAME)) {
desc.addPayloadType(parsePayload(parser));
} else {
// TODO: Should be SmackParseException.
throw new IOException("Unknow element \"" + name + "\" in content.");
}
} else if (eventType == XmlPullParser.END_TAG) {
} else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (name.equals(JingleDescription.NODENAME)) {
done = true;
}

View file

@ -24,6 +24,8 @@ import org.jivesoftware.smack.parsing.SmackParsingException;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.provider.IQProvider;
import org.jivesoftware.smack.util.ParserUtils;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;
import org.jivesoftware.smackx.jingleold.JingleActionEnum;
import org.jivesoftware.smackx.jingleold.packet.Jingle;
@ -33,8 +35,6 @@ import org.jivesoftware.smackx.jingleold.packet.JingleDescription;
import org.jivesoftware.smackx.jingleold.packet.JingleTransport;
import org.jxmpp.jid.Jid;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
/**
* The JingleProvider parses Jingle packets.
@ -66,7 +66,7 @@ public class JingleProvider extends IQProvider<Jingle> {
JingleTransportProvider jtpIce = new JingleTransportProvider.Ice();
ExtensionElementProvider<?> jmipAudio = new JingleContentInfoProvider.Audio();
int eventType;
XmlPullParser.Event eventType;
String elementName;
String namespace;
@ -87,7 +87,7 @@ public class JingleProvider extends IQProvider<Jingle> {
elementName = parser.getName();
namespace = parser.getNamespace();
if (eventType == XmlPullParser.START_TAG) {
if (eventType == XmlPullParser.Event.START_ELEMENT) {
// Parse some well know subelements, depending on the namespaces
// and element names...
@ -119,7 +119,7 @@ public class JingleProvider extends IQProvider<Jingle> {
+ elementName + "\" in Jingle packet.");
}
} else if (eventType == XmlPullParser.END_TAG) {
} else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (parser.getName().equals(Jingle.getElementName())) {
done = true;
}

View file

@ -20,15 +20,14 @@ import java.io.IOException;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.xml.XmlPullParser;
import org.jivesoftware.smack.xml.XmlPullParserException;
import org.jivesoftware.smackx.jingleold.nat.ICECandidate;
import org.jivesoftware.smackx.jingleold.nat.TransportCandidate;
import org.jivesoftware.smackx.jingleold.packet.JingleTransport;
import org.jivesoftware.smackx.jingleold.packet.JingleTransport.JingleTransportCandidate;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
/**
* Provider for a Jingle transport element.
*
@ -59,10 +58,10 @@ public abstract class JingleTransportProvider extends ExtensionElementProvider<J
JingleTransport trans = getInstance();
while (!done) {
int eventType = parser.next();
XmlPullParser.Event eventType = parser.next();
String name = parser.getName();
if (eventType == XmlPullParser.START_TAG) {
if (eventType == XmlPullParser.Event.START_ELEMENT) {
if (name.equals(JingleTransportCandidate.NODENAME)) {
JingleTransportCandidate jtc = parseCandidate(parser);
if (jtc != null) trans.addCandidate(jtc);
@ -72,7 +71,7 @@ public abstract class JingleTransportProvider extends ExtensionElementProvider<J
throw new IOException("Unknown tag \"" + name + "\" in transport element.");
}
}
else if (eventType == XmlPullParser.END_TAG) {
else if (eventType == XmlPullParser.Event.END_ELEMENT) {
if (name.equals(JingleTransport.NODENAME)) {
done = true;
}