From b083449cc39de46e16f999311e39a63afa408bfd Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Tue, 10 Jun 2014 18:40:15 +0200 Subject: [PATCH] Throw more exceptions when parsing Presences when parsing core elements of Presences. --- .../smack/util/PacketParserUtils.java | 29 ++++--------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java index ef701ffc7..322a557bc 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java @@ -259,12 +259,7 @@ public class PacketParserUtils { Presence.Type type = Presence.Type.available; String typeString = parser.getAttributeValue("", "type"); if (typeString != null && !typeString.equals("")) { - try { - type = Presence.Type.fromString(typeString); - } - catch (IllegalArgumentException iae) { - LOGGER.warning("Found invalid presence type " + typeString); - } + type = Presence.Type.fromString(typeString); } Presence presence = new Presence(type); presence.setTo(parser.getAttributeValue("", "to")); @@ -289,32 +284,20 @@ public class PacketParserUtils { presence.setStatus(parser.nextText()); } else if (elementName.equals("priority")) { - try { - int priority = Integer.parseInt(parser.nextText()); - presence.setPriority(priority); - } - catch (NumberFormatException nfe) { - // Ignore. - } - catch (IllegalArgumentException iae) { - // Presence priority is out of range so assume priority to be zero - presence.setPriority(0); - } + int priority = Integer.parseInt(parser.nextText()); + presence.setPriority(priority); } else if (elementName.equals("show")) { String modeText = parser.nextText(); - try { - presence.setMode(Presence.Mode.fromString(modeText)); - } - catch (IllegalArgumentException iae) { - LOGGER.warning("Found invalid presence mode " + modeText); - } + presence.setMode(Presence.Mode.fromString(modeText)); } else if (elementName.equals("error")) { presence.setError(parseError(parser)); } // Otherwise, it must be a packet extension. else { + // Be extra robust: Skip PacketExtensions that cause Exceptions, instead of + // failing completely here. See SMACK-390 for more information. try { presence.addExtension(PacketParserUtils.parsePacketExtension(elementName, namespace, parser)); }