From 85a9aa1347ed373a2d1563e1cd8b494f278156dd Mon Sep 17 00:00:00 2001 From: markt Date: Sat, 13 Feb 2010 19:22:02 +0000 Subject: [PATCH] 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 --- java/org/apache/el/lang/ELSupport.java | 8 +++++++- test/org/apache/el/lang/TestELSupport.java | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) 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) { -- 2.11.0