mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-09 00:59:39 +02:00
Do not call XmlPullParser.getName() when the event is unknown
XmlPullParser.getName() only returns a result if the current parser event is START_ELEMENT or END_ELEMENT. If this is not the case, then the method may throw (if StAX is used).
This commit is contained in:
parent
899813a668
commit
31e4e1faf2
24 changed files with 80 additions and 109 deletions
|
@ -71,22 +71,13 @@ public class OfferConfirmation extends SimpleIQ {
|
|||
boolean done = false;
|
||||
while (!done) {
|
||||
parser.next();
|
||||
String elementName = parser.getName();
|
||||
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "user-jid".equals(elementName)) {
|
||||
try {
|
||||
confirmation.setUserJID(parser.nextText());
|
||||
}
|
||||
catch (NumberFormatException nfe) {
|
||||
}
|
||||
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "user-jid".equals(parser.getName())) {
|
||||
confirmation.setUserJID(parser.nextText());
|
||||
}
|
||||
else if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "session-id".equals(elementName)) {
|
||||
try {
|
||||
confirmation.setSessionID(Long.valueOf(parser.nextText()));
|
||||
}
|
||||
catch (NumberFormatException nfe) {
|
||||
}
|
||||
else if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "session-id".equals(parser.getName())) {
|
||||
confirmation.setSessionID(Long.valueOf(parser.nextText()));
|
||||
}
|
||||
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && "offer-confirmation".equals(elementName)) {
|
||||
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && "offer-confirmation".equals(parser.getName())) {
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ package org.jivesoftware.smackx.workgroup.packet;
|
|||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||
import org.jivesoftware.smack.packet.XmlEnvironment;
|
||||
import org.jivesoftware.smack.provider.ExtensionElementProvider;
|
||||
|
@ -42,6 +44,8 @@ public class QueueUpdate implements ExtensionElement {
|
|||
*/
|
||||
public static final String NAMESPACE = "http://jabber.org/protocol/workgroup";
|
||||
|
||||
public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME);
|
||||
|
||||
private final int position;
|
||||
private final int remainingTime;
|
||||
|
||||
|
@ -104,22 +108,13 @@ public class QueueUpdate implements ExtensionElement {
|
|||
int timeRemaining = -1;
|
||||
while (!done) {
|
||||
parser.next();
|
||||
String elementName = parser.getName();
|
||||
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "position".equals(elementName)) {
|
||||
try {
|
||||
position = Integer.parseInt(parser.nextText());
|
||||
}
|
||||
catch (NumberFormatException nfe) {
|
||||
}
|
||||
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "position".equals(parser.getName())) {
|
||||
position = Integer.parseInt(parser.nextText());
|
||||
}
|
||||
else if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "time".equals(elementName)) {
|
||||
try {
|
||||
timeRemaining = Integer.parseInt(parser.nextText());
|
||||
}
|
||||
catch (NumberFormatException nfe) {
|
||||
}
|
||||
else if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT && "time".equals(parser.getName())) {
|
||||
timeRemaining = Integer.parseInt(parser.nextText());
|
||||
}
|
||||
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && "queue-status".equals(elementName)) {
|
||||
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && "queue-status".equals(parser.getName())) {
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -175,11 +175,10 @@ public class RoomInvitation implements ExtensionElement {
|
|||
final RoomInvitation invitation = new RoomInvitation();
|
||||
invitation.type = Type.valueOf(parser.getAttributeValue("", "type"));
|
||||
|
||||
boolean done = false;
|
||||
while (!done) {
|
||||
outerloop: while (true) {
|
||||
parser.next();
|
||||
String elementName = parser.getName();
|
||||
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT) {
|
||||
String elementName = parser.getName();
|
||||
if ("session".equals(elementName)) {
|
||||
invitation.sessionID = parser.getAttributeValue("", "id");
|
||||
}
|
||||
|
@ -199,8 +198,8 @@ public class RoomInvitation implements ExtensionElement {
|
|||
invitation.room = JidCreate.entityBareFrom(roomString);
|
||||
}
|
||||
}
|
||||
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && ELEMENT_NAME.equals(elementName)) {
|
||||
done = true;
|
||||
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && parser.getDepth() == initialDepth) {
|
||||
break outerloop;
|
||||
}
|
||||
}
|
||||
return invitation;
|
||||
|
|
|
@ -170,11 +170,10 @@ public class RoomTransfer implements ExtensionElement {
|
|||
final RoomTransfer invitation = new RoomTransfer();
|
||||
invitation.type = RoomTransfer.Type.valueOf(parser.getAttributeValue("", "type"));
|
||||
|
||||
boolean done = false;
|
||||
while (!done) {
|
||||
outerloop: while (true) {
|
||||
parser.next();
|
||||
String elementName = parser.getName();
|
||||
if (parser.getEventType() == XmlPullParser.Event.START_ELEMENT) {
|
||||
String elementName = parser.getName();
|
||||
if ("session".equals(elementName)) {
|
||||
invitation.sessionID = parser.getAttributeValue("", "id");
|
||||
}
|
||||
|
@ -191,8 +190,8 @@ public class RoomTransfer implements ExtensionElement {
|
|||
invitation.room = parser.nextText();
|
||||
}
|
||||
}
|
||||
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && ELEMENT_NAME.equals(elementName)) {
|
||||
done = true;
|
||||
else if (parser.getEventType() == XmlPullParser.Event.END_ELEMENT && parser.getDepth() == initialDepth) {
|
||||
break outerloop;
|
||||
}
|
||||
}
|
||||
return invitation;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue