From 1052a3c426cdb2b2f378f8d2d88b3adb65552c5b Mon Sep 17 00:00:00 2001 From: markt Date: Tue, 11 Jan 2011 17:04:13 +0000 Subject: [PATCH] Better handling of special case of javax.servlet.jsp.el.ScopedAttributeELResolver git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1057730 13f79535-47bb-0310-9956-ffa450edef68 --- java/javax/el/CompositeELResolver.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/java/javax/el/CompositeELResolver.java b/java/javax/el/CompositeELResolver.java index da3aada3f..7d9ed11bb 100644 --- a/java/javax/el/CompositeELResolver.java +++ b/java/javax/el/CompositeELResolver.java @@ -23,6 +23,18 @@ import java.util.NoSuchElementException; public class CompositeELResolver extends ELResolver { + private static final Class SCOPED_ATTRIBUTE_EL_RESOLVER; + static { + Class clazz = null; + try { + clazz = + Class.forName("javax.servlet.jsp.el.ScopedAttributeELResolver"); + } catch (ClassNotFoundException e) { + // Ignore. This is expected if using the EL stand-alone + } + SCOPED_ATTRIBUTE_EL_RESOLVER = clazz; + } + private int size; private ELResolver[] resolvers; @@ -118,10 +130,12 @@ public class CompositeELResolver extends ELResolver { for (int i = 0; i < sz; i++) { type = this.resolvers[i].getType(context, base, property); if (context.isPropertyResolved()) { - if (resolvers[i].getClass().getName().equals( - "javax.servlet.jsp.el.ScopedAttributeELResolver")) { - // Special case since this will always return Object.class - // for type + if (SCOPED_ATTRIBUTE_EL_RESOLVER != null && + SCOPED_ATTRIBUTE_EL_RESOLVER.isAssignableFrom( + resolvers[i].getClass())) { + // Special case since + // javax.servlet.jsp.el.ScopedAttributeELResolver will + // always return Object.class for type Object value = resolvers[i].getValue(context, base, property); if (value != null) { -- 2.11.0