From: markt Date: Sat, 13 Feb 2010 19:22:02 +0000 (+0000) Subject: Address review comments X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=85a9aa1347ed373a2d1563e1cd8b494f278156dd;p=tomcat7.0 Address review comments Don't use toString() to try and co-erce any old object to an Enum - the spec only mentions String git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@909875 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/el/lang/ELSupport.java b/java/org/apache/el/lang/ELSupport.java index f627aa342..6cee35720 100644 --- a/java/org/apache/el/lang/ELSupport.java +++ b/java/org/apache/el/lang/ELSupport.java @@ -185,9 +185,15 @@ public class ELSupport { if (type.isAssignableFrom(obj.getClass())) { return (Enum) obj; } + + if (!(obj instanceof String)) { + throw new ELException(MessageFactory.get("error.convert", + obj, obj.getClass(), type)); + } + Enum result; try { - result = Enum.valueOf(type, obj.toString()); + result = Enum.valueOf(type, (String) obj); } catch (IllegalArgumentException iae) { throw new ELException(MessageFactory.get("error.convert", obj, obj.getClass(), type)); diff --git a/test/org/apache/el/lang/TestELSupport.java b/test/org/apache/el/lang/TestELSupport.java index 4b1eed63c..be4a0e6a7 100644 --- a/test/org/apache/el/lang/TestELSupport.java +++ b/test/org/apache/el/lang/TestELSupport.java @@ -92,9 +92,10 @@ public class TestELSupport extends TestCase { Object output = null; try { output = ELSupport.coerceToEnum(TestEnumA.VALA1, TestEnumC.class); - } finally { - assertEquals(TestEnumC.VALA1, output); + } catch (ELException ele) { + // Ignore } + assertNull(output); } private static void testIsSame(Object value) {