From cd7f1538fc1765b76f45a431126cc35d6fd4e82b Mon Sep 17 00:00:00 2001 From: markt Date: Mon, 14 Jun 2010 21:23:23 +0000 Subject: [PATCH] Fix problem with JSF convertors - restore behaviour prior to r894720 that only checks a subsets of types for validity git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@954650 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/jasper/compiler/Validator.java | 28 +++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java index 25a659dac..045c7f073 100644 --- a/java/org/apache/jasper/compiler/Validator.java +++ b/java/org/apache/jasper/compiler/Validator.java @@ -1159,13 +1159,27 @@ class Validator { (n, "jsp.error.unknown_attribute_type", tldAttr.getName(), expectedType); } - // Check casting - try { - EXPRESSION_FACTORY.coerceToType(attrs.getValue(i), expectedClass); - } catch (Exception e) { - err.jspError - (n, "jsp.error.coerce_to_type", - tldAttr.getName(), expectedType, attrs.getValue(i)); + // Check casting - not possible for all types + if (String.class.equals(expectedClass) || + expectedClass == Long.TYPE || + expectedClass == Double.TYPE || + expectedClass == Byte.TYPE || + expectedClass == Short.TYPE || + expectedClass == Integer.TYPE || + expectedClass == Float.TYPE || + Number.class.isAssignableFrom(expectedClass) || + Character.class.equals(expectedClass) || + Character.TYPE == expectedClass || + Boolean.class.equals(expectedClass) || + Boolean.TYPE == expectedClass || + expectedClass.isEnum()) { + try { + EXPRESSION_FACTORY.coerceToType(attrs.getValue(i), expectedClass); + } catch (Exception e) { + err.jspError + (n, "jsp.error.coerce_to_type", + tldAttr.getName(), expectedType, attrs.getValue(i)); + } } } -- 2.11.0