You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/10/28 21:59:41 UTC
svn commit: r1536520 - in /tomcat/trunk: java/javax/el/ArrayELResolver.java
java/javax/el/Util.java test/javax/el/TestArrayELResolver.java
Author: markt
Date: Mon Oct 28 20:59:41 2013
New Revision: 1536520
URL: http://svn.apache.org/r1536520
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55691
ArrayELResolver needs to handle the case where the base object is an array of primitives.
Modified:
tomcat/trunk/java/javax/el/ArrayELResolver.java
tomcat/trunk/java/javax/el/Util.java
tomcat/trunk/test/javax/el/TestArrayELResolver.java
Modified: tomcat/trunk/java/javax/el/ArrayELResolver.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ArrayELResolver.java?rev=1536520&r1=1536519&r2=1536520&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/ArrayELResolver.java (original)
+++ tomcat/trunk/java/javax/el/ArrayELResolver.java Mon Oct 28 20:59:41 2013
@@ -88,9 +88,8 @@ public class ArrayELResolver extends ELR
int idx = coerce(property);
checkBounds(base, idx);
- if (value != null &&
- !base.getClass().getComponentType().isAssignableFrom(
- value.getClass())) {
+ if (value != null && !Util.isAssignableFrom(value.getClass(),
+ base.getClass().getComponentType())) {
throw new ClassCastException(Util.message(context,
"objectNotAssignable", value.getClass().getName(),
base.getClass().getComponentType().getName()));
Modified: tomcat/trunk/java/javax/el/Util.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/Util.java?rev=1536520&r1=1536519&r2=1536520&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/Util.java (original)
+++ tomcat/trunk/java/javax/el/Util.java Mon Oct 28 20:59:41 2013
@@ -438,7 +438,7 @@ class Util {
* This method duplicates code in org.apache.el.util.ReflectionUtil. When
* making changes keep the code in sync.
*/
- private static boolean isAssignableFrom(Class<?> src, Class<?> target) {
+ static boolean isAssignableFrom(Class<?> src, Class<?> target) {
// src will always be an object
// Short-cut. null is always assignable to an object and in EL null
// can always be coerced to a valid value for a primitive
Modified: tomcat/trunk/test/javax/el/TestArrayELResolver.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestArrayELResolver.java?rev=1536520&r1=1536519&r2=1536520&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TestArrayELResolver.java (original)
+++ tomcat/trunk/test/javax/el/TestArrayELResolver.java Mon Oct 28 20:59:41 2013
@@ -246,6 +246,22 @@ public class TestArrayELResolver {
}
/**
+ * Tests setting arrays of primitives.
+ * https://issues.apache.org/bugzilla/show_bug.cgi?id=55691
+ */
+ @Test
+ public void testSetValue08() {
+ ArrayELResolver resolver = new ArrayELResolver();
+ ELContext context = new StandardELContext(
+ ELManager.getExpressionFactory());
+
+ int[] base = new int[] { 1, 2, 3 };
+ resolver.setValue(context, base, new Integer(1), Integer.valueOf(4));
+
+ Assert.assertEquals(Integer.valueOf(base[1]), Integer.valueOf(4));
+ }
+
+ /**
* Tests that a null context results in an NPE as per EL Javadoc.
*/
@Test(expected = NullPointerException.class)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org