From 009057e2e207d4b7f6b168e221e4a38bcb0d18d4 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Tue, 10 Jun 2014 18:35:24 +0200 Subject: [PATCH] Streamline String to Enum transformation for the core stanza Enums. --- .../org/jivesoftware/smack/packet/IQ.java | 17 ++-------- .../jivesoftware/smack/packet/Message.java | 18 ++++++---- .../jivesoftware/smack/packet/Presence.java | 33 +++++++++++++++++-- .../smack/util/PacketParserUtils.java | 9 +++-- 4 files changed, 51 insertions(+), 26 deletions(-) diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java index 4182cf4da..4236a2101 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java @@ -18,8 +18,6 @@ package org.jivesoftware.smack.packet; import java.util.Locale; -import java.util.logging.Level; -import java.util.logging.Logger; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -41,7 +39,6 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * @author Matt Tucker */ public abstract class IQ extends Packet { - private static final Logger LOGGER = Logger.getLogger(IQ.class.getName()); private Type type = Type.get; @@ -202,19 +199,11 @@ public abstract class IQ extends Packet { * * @param string the String value to covert. * @return the corresponding Type. - * @throws IllegalArgumentException when not able to parse the string parameter + * @throws IllegalArgumentException when not able to parse the string parameter + * @throws NullPointerException if the string is null */ public static Type fromString(String string) { - Type type = null; - try { - type = Type.valueOf(string.toLowerCase(Locale.US)); - } - catch (Exception e) { - final String msg = "Could not transform string '" + string + "' to IQ.Type"; - LOGGER.log(Level.WARNING, msg, e); - throw new IllegalArgumentException(msg, e); - } - return type; + return Type.valueOf(string.toLowerCase(Locale.US)); } } } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java index 102a12bcb..70c214cb3 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java @@ -647,13 +647,17 @@ public class Message extends Packet { */ error; - public static Type fromString(String name) { - try { - return Type.valueOf(name); - } - catch (Exception e) { - return normal; - } + /** + * Converts a String into the corresponding types. Valid String values that can be converted + * to types are: "normal", "chat", "groupchat", "headline" and "error". + * + * @param string the String value to covert. + * @return the corresponding Type. + * @throws IllegalArgumentException when not able to parse the string parameter + * @throws NullPointerException if the string is null + */ + public static Type fromString(String string) { + return Type.valueOf(string.toLowerCase(Locale.US)); } } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java index 73d28cf26..fcf7bcea6 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java @@ -17,6 +17,8 @@ package org.jivesoftware.smack.packet; +import java.util.Locale; + import org.jivesoftware.smack.util.XmlStringBuilder; /** @@ -305,7 +307,21 @@ public class Presence extends Packet { /** * The presence packet contains an error message. */ - error + error; + + /** + * Converts a String into the corresponding types. Valid String values that can be converted + * to types are: "available", "unavailable", "subscribe", "subscribed", "unsubscribe", + * "unsubscribed" and "error". + * + * @param string the String value to covert. + * @return the corresponding Type. + * @throws IllegalArgumentException when not able to parse the string parameter + * @throws NullPointerException if the string is null + */ + public static Type fromString(String string) { + return Type.valueOf(string.toLowerCase(Locale.US)); + } } /** @@ -336,6 +352,19 @@ public class Presence extends Packet { /** * Do not disturb. */ - dnd + dnd; + + /** + * Converts a String into the corresponding types. Valid String values that can be converted + * to types are: "chat", "available", "away", "xa", and "dnd". + * + * @param string the String value to covert. + * @return the corresponding Type. + * @throws IllegalArgumentException when not able to parse the string parameter + * @throws NullPointerException if the string is null + */ + public static Mode fromString(String string) { + return Mode.valueOf(string.toLowerCase(Locale.US)); + } } } 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 a09df7fec..ef701ffc7 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 @@ -147,7 +147,10 @@ public class PacketParserUtils { message.setPacketID(id == null ? Packet.ID_NOT_AVAILABLE : id); message.setTo(parser.getAttributeValue("", "to")); message.setFrom(parser.getAttributeValue("", "from")); - message.setType(Message.Type.fromString(parser.getAttributeValue("", "type"))); + String typeString = parser.getAttributeValue("", "type"); + if (typeString != null) { + message.setType(Message.Type.fromString(typeString)); + } String language = getLanguageAttribute(parser); // determine message's default language @@ -257,7 +260,7 @@ public class PacketParserUtils { String typeString = parser.getAttributeValue("", "type"); if (typeString != null && !typeString.equals("")) { try { - type = Presence.Type.valueOf(typeString); + type = Presence.Type.fromString(typeString); } catch (IllegalArgumentException iae) { LOGGER.warning("Found invalid presence type " + typeString); @@ -301,7 +304,7 @@ public class PacketParserUtils { else if (elementName.equals("show")) { String modeText = parser.nextText(); try { - presence.setMode(Presence.Mode.valueOf(modeText)); + presence.setMode(Presence.Mode.fromString(modeText)); } catch (IllegalArgumentException iae) { LOGGER.warning("Found invalid presence mode " + modeText);