Better handling of special case of javax.servlet.jsp.el.ScopedAttributeELResolver
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 11 Jan 2011 17:04:13 +0000 (17:04 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Tue, 11 Jan 2011 17:04:13 +0000 (17:04 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1057730 13f79535-47bb-0310-9956-ffa450edef68

java/javax/el/CompositeELResolver.java

index da3aada..7d9ed11 100644 (file)
@@ -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) {