From 2c5e4afa3b6b063b225f521e6a205c106a46938c Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Tue, 10 Apr 2012 14:45:01 +0200 Subject: [PATCH] sync from RS: Add better enum parsing --- CS2JLibrary/NetFramework/System/Enum.xml | 28 +++++++++++++++++-- .../src/CS2JNet/System/EnumSupport.java | 18 ++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/CS2JLibrary/NetFramework/System/Enum.xml b/CS2JLibrary/NetFramework/System/Enum.xml index 14d3680..84cb439 100644 --- a/CS2JLibrary/NetFramework/System/Enum.xml +++ b/CS2JLibrary/NetFramework/System/Enum.xml @@ -49,8 +49,10 @@ System.String - - Enum.valueOf((Class*[? extends Enum]*)${enumType:15}, ${value}) + + CS2JNet.System.EnumSupport + + EnumSupport.Parse((Class*[? extends Enum]*)${enumType:15}, ${value}) System.Type @@ -64,6 +66,28 @@ Parse System.Object + + + CS2JNet.System.EnumSupport + + EnumSupport.Parse((Class*[? extends Enum]*)${enumType:15}, ${value}, ${ignoreCase}) + + + System.Type + enumType + + + System.String + value + + + System.Boolean + ignoreCase + + + Parse + System.Object + diff --git a/CS2JLibrary/src/CS2JNet/System/EnumSupport.java b/CS2JLibrary/src/CS2JNet/System/EnumSupport.java index 15698a4..5f9949f 100755 --- a/CS2JLibrary/src/CS2JNet/System/EnumSupport.java +++ b/CS2JLibrary/src/CS2JNet/System/EnumSupport.java @@ -40,5 +40,23 @@ public class EnumSupport { return e.name(); } + } + + public static Object Parse(Class enumClass, String name) throws IllegalArgumentException { + return Parse(enumClass, name, false); + } + + public static Object Parse(Class enumClass, String name, boolean ignoreCase) throws IllegalArgumentException { + if(!ignoreCase){ + return Enum.valueOf(enumClass, name); + } + + Enum[] vals = enumClass.getEnumConstants(); + for(Enum val : vals){ + if(val.toString().equalsIgnoreCase(name)){ + return val; + } + } + throw new IllegalArgumentException(name + " is not a valid " + enumClass.getName()); } }