Author: violetagg
Date: Wed Jul 10 20:29:56 2013
New Revision: 1501971

URL: http://svn.apache.org/r1501971
Log:
Merged revision 1501910 from tomcat/trunk:
javax.el.ArrayELResolver:
According to javadoc:
1. getFeatureDescriptors - always returns null
2. isReadOnly - when property cannot be coerced into an integer it is ignored 
by the resolver.
3. getType - when property cannot be coerced into an integer it is ignored by 
the resolver.
Unit tests are added

Added:
    tomcat/tc7.0.x/trunk/test/javax/el/TestArrayELResolver.java
      - copied, changed from r1501910, 
tomcat/trunk/test/javax/el/TestArrayELResolver.java
Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/javax/el/ArrayELResolver.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1501910

Modified: tomcat/tc7.0.x/trunk/java/javax/el/ArrayELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/javax/el/ArrayELResolver.java?rev=1501971&r1=1501970&r2=1501971&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/javax/el/ArrayELResolver.java (original)
+++ tomcat/tc7.0.x/trunk/java/javax/el/ArrayELResolver.java Wed Jul 10 20:29:56 
2013
@@ -19,7 +19,6 @@ package javax.el;
 
 import java.beans.FeatureDescriptor;
 import java.lang.reflect.Array;
-import java.util.Arrays;
 import java.util.Iterator;
 
 public class ArrayELResolver extends ELResolver {
@@ -62,8 +61,12 @@ public class ArrayELResolver extends ELR
 
         if (base != null && base.getClass().isArray()) {
             context.setPropertyResolved(true);
-            int idx = coerce(property);
-            checkBounds(base, idx);
+            try {
+                int idx = coerce(property);
+                checkBounds(base, idx);
+            } catch (IllegalArgumentException e) {
+                // ignore
+            }
             return base.getClass().getComponentType();
         }
 
@@ -111,8 +114,12 @@ public class ArrayELResolver extends ELR
 
         if (base != null && base.getClass().isArray()) {
             context.setPropertyResolved(true);
-            int idx = coerce(property);
-            checkBounds(base, idx);
+            try {
+                int idx = coerce(property);
+                checkBounds(base, idx);
+            } catch (IllegalArgumentException e) {
+                // ignore
+            }
         }
 
         return this.readOnly;
@@ -120,20 +127,6 @@ public class ArrayELResolver extends ELR
 
     @Override
     public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext 
context, Object base) {
-        if (base != null && base.getClass().isArray()) {
-            FeatureDescriptor[] descs = new 
FeatureDescriptor[Array.getLength(base)];
-            for (int i = 0; i < descs.length; i++) {
-                descs[i] = new FeatureDescriptor();
-                descs[i].setDisplayName("["+i+"]");
-                descs[i].setExpert(false);
-                descs[i].setHidden(false);
-                descs[i].setName(""+i);
-                descs[i].setPreferred(true);
-                descs[i].setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.FALSE);
-                descs[i].setValue(TYPE, Integer.class);
-            }
-            return Arrays.asList(descs).iterator();
-        }
         return null;
     }
 

Copied: tomcat/tc7.0.x/trunk/test/javax/el/TestArrayELResolver.java (from 
r1501910, tomcat/trunk/test/javax/el/TestArrayELResolver.java)
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/javax/el/TestArrayELResolver.java?p2=tomcat/tc7.0.x/trunk/test/javax/el/TestArrayELResolver.java&p1=tomcat/trunk/test/javax/el/TestArrayELResolver.java&r1=1501910&r2=1501971&rev=1501971&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TestArrayELResolver.java (original)
+++ tomcat/tc7.0.x/trunk/test/javax/el/TestArrayELResolver.java Wed Jul 10 
20:29:56 2013
@@ -19,6 +19,8 @@ package javax.el;
 import org.junit.Assert;
 import org.junit.Test;
 
+import org.apache.jasper.el.ELContextImpl;
+
 public class TestArrayELResolver {
 
     /**
@@ -45,8 +47,7 @@ public class TestArrayELResolver {
     @Test
     public void testGetType03() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         Class<?> result = resolver.getType(context, base, new Integer(0));
@@ -61,8 +62,7 @@ public class TestArrayELResolver {
     @Test(expected = PropertyNotFoundException.class)
     public void testGetType04() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         resolver.getType(context, base, new Integer(1));
@@ -74,8 +74,7 @@ public class TestArrayELResolver {
     @Test
     public void testGetType05() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         Class<?> result = resolver.getType(context, base, "index");
@@ -108,8 +107,7 @@ public class TestArrayELResolver {
     @Test
     public void testGetValue03() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         Object result = resolver.getValue(context, base, new Integer(0));
@@ -124,8 +122,7 @@ public class TestArrayELResolver {
     @Test(expected = IllegalArgumentException.class)
     public void testGetValue04() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         resolver.getValue(context, base, "key");
@@ -137,8 +134,7 @@ public class TestArrayELResolver {
     @Test
     public void testGetValue05() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         Object result = resolver.getValue(context, base, new Integer(1));
@@ -176,8 +172,7 @@ public class TestArrayELResolver {
     @Test(expected = PropertyNotWritableException.class)
     public void testSetValue03() {
         ArrayELResolver resolver = new ArrayELResolver(true);
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         resolver.setValue(context, new String[] {}, new Object(), new 
Object());
     }
@@ -188,8 +183,7 @@ public class TestArrayELResolver {
     @Test
     public void testSetValue04() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         resolver.setValue(context, base, new Integer(0), "new-element");
@@ -211,8 +205,7 @@ public class TestArrayELResolver {
     @Test(expected = IllegalArgumentException.class)
     public void testSetValue05() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         resolver.setValue(context, base, "key", "new-element");
@@ -224,8 +217,7 @@ public class TestArrayELResolver {
     @Test(expected = PropertyNotFoundException.class)
     public void testSetValue06() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         resolver.setValue(context, base, new Integer(1), "new-element");
@@ -238,8 +230,7 @@ public class TestArrayELResolver {
     @Test(expected = ClassCastException.class)
     public void testSetValue07() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         resolver.setValue(context, base, new Integer(0), new Integer(1));
@@ -260,8 +251,7 @@ public class TestArrayELResolver {
     @Test
     public void testIsReadOnly02() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         boolean result = resolver.isReadOnly(context, new Object(),
                 new Object());
@@ -284,8 +274,7 @@ public class TestArrayELResolver {
     @Test
     public void testIsReadOnly03() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         boolean result = resolver.isReadOnly(context, base, new Integer(0));
@@ -307,8 +296,7 @@ public class TestArrayELResolver {
     @Test(expected = PropertyNotFoundException.class)
     public void testIsReadOnly04() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         resolver.isReadOnly(context, base, new Integer(1));
@@ -320,8 +308,7 @@ public class TestArrayELResolver {
     @Test
     public void testIsReadOnly05() {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         String[] base = new String[] { "element" };
         boolean result = resolver.isReadOnly(context, base, "key");
@@ -340,8 +327,7 @@ public class TestArrayELResolver {
     private void doNegativeTest(Object base, Object trigger,
             MethodUnderTest method, boolean checkResult) {
         ArrayELResolver resolver = new ArrayELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         Object result = null;
         switch (method) {

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1501971&r1=1501970&r2=1501971&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Wed Jul 10 20:29:56 2013
@@ -119,6 +119,16 @@
         will return a result when the property cannot be coerced into an
         integer. (violetagg)
       </fix>
+      <fix>
+        Ensure that
+        
<code>javax.el.ArrayELResolver.getFeatureDescriptors(ELContext,Object)</code>
+        will always return null.
+        
<code>javax.el.ArrayELResolver.isReadOnly(ELContext,Object,Object)</code>
+        and
+        <code>javax.el.ArrayELResolver.getType(ELContext,Object,Object)</code>
+        will return a result when the property cannot be coerced into an
+        integer. (violetagg)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Cluster">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to