From: markt Date: Mon, 9 May 2011 18:44:11 +0000 (+0000) Subject: Additional fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=51177 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=8196605c1f792279de3fa81fe7fab261a82d357b;p=tomcat7.0 Additional fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=51177 ListElResolver should also return Object.class for getType() git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1101144 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/javax/el/ListELResolver.java b/java/javax/el/ListELResolver.java index 989fcb56e..bc63932a4 100644 --- a/java/javax/el/ListELResolver.java +++ b/java/javax/el/ListELResolver.java @@ -74,8 +74,7 @@ public class ListELResolver extends ELResolver { throw new PropertyNotFoundException( new ArrayIndexOutOfBoundsException(idx).getMessage()); } - Object obj = list.get(idx); - return (obj != null) ? obj.getClass() : null; + return Object.class; } return null; diff --git a/test/org/apache/el/TestValueExpressionImpl.java b/test/org/apache/el/TestValueExpressionImpl.java index 5aaca5881..36a035d3a 100644 --- a/test/org/apache/el/TestValueExpressionImpl.java +++ b/test/org/apache/el/TestValueExpressionImpl.java @@ -17,7 +17,9 @@ package org.apache.el; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.el.ELContext; @@ -133,4 +135,31 @@ public class TestValueExpressionImpl extends TestCase { ve2.setValue(context, o1); assertEquals(o1, ve2.getValue(context)); } + + public void testBug51177ObjectList() { + ExpressionFactory factory = ExpressionFactory.newInstance(); + ELContext context = new ELContextImpl(); + + Object o1 = "String value"; + Object o2 = new Integer(32); + + List list = new ArrayList(); + list.add(0, o1); + list.add(1, o2); + + ValueExpression var = + factory.createValueExpression(list, List.class); + context.getVariableMapper().setVariable("list", var); + + ValueExpression ve1 = factory.createValueExpression( + context, "${list[0]}", Object.class); + ve1.setValue(context, o2); + assertEquals(o2, ve1.getValue(context)); + + ValueExpression ve2 = factory.createValueExpression( + context, "${list[1]}", Object.class); + ve2.setValue(context, o1); + assertEquals(o1, ve2.getValue(context)); + } + }