You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by vi...@apache.org on 2013/07/10 22:04:29 UTC

svn commit: r1501948 - in /tomcat/tc7.0.x/trunk: ./ java/javax/el/ListELResolver.java test/javax/el/TestListELResolver.java webapps/docs/changelog.xml

Author: violetagg
Date: Wed Jul 10 20:04:29 2013
New Revision: 1501948

URL: http://svn.apache.org/r1501948
Log:
Merged revision 1501823 from tomcat/trunk:
javax.el.ListELResolver:
According to javadoc:
1. getFeatureDescriptors - always returns null
2. isReadOnly - 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/TestListELResolver.java
      - copied, changed from r1501823, tomcat/trunk/test/javax/el/TestListELResolver.java
Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/javax/el/ListELResolver.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

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

Modified: tomcat/tc7.0.x/trunk/java/javax/el/ListELResolver.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/javax/el/ListELResolver.java?rev=1501948&r1=1501947&r2=1501948&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/javax/el/ListELResolver.java (original)
+++ tomcat/tc7.0.x/trunk/java/javax/el/ListELResolver.java Wed Jul 10 20:04:29 2013
@@ -19,7 +19,6 @@ package javax.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -121,10 +120,15 @@ public class ListELResolver extends ELRe
         if (base instanceof List<?>) {
             context.setPropertyResolved(true);
             List<?> list = (List<?>) base;
-            int idx = coerce(property);
-            if (idx < 0 || idx >= list.size()) {
-                throw new PropertyNotFoundException(
-                        new ArrayIndexOutOfBoundsException(idx).getMessage());
+            try {
+                int idx = coerce(property);
+                if (idx < 0 || idx >= list.size()) {
+                    throw new PropertyNotFoundException(
+                            new ArrayIndexOutOfBoundsException(idx)
+                                    .getMessage());
+                }
+            } catch (IllegalArgumentException e) {
+                // ignore
             }
             return this.readOnly || UNMODIFIABLE.equals(list.getClass());
         }
@@ -134,20 +138,6 @@ public class ListELResolver extends ELRe
 
     @Override
     public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        if (base instanceof List<?>) {
-            FeatureDescriptor[] descs = new FeatureDescriptor[((List<?>) base).size()];
-            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/TestListELResolver.java (from r1501823, tomcat/trunk/test/javax/el/TestListELResolver.java)
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/javax/el/TestListELResolver.java?p2=tomcat/tc7.0.x/trunk/test/javax/el/TestListELResolver.java&p1=tomcat/trunk/test/javax/el/TestListELResolver.java&r1=1501823&r2=1501948&rev=1501948&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TestListELResolver.java (original)
+++ tomcat/tc7.0.x/trunk/test/javax/el/TestListELResolver.java Wed Jul 10 20:04:29 2013
@@ -23,6 +23,8 @@ import java.util.List;
 import org.junit.Assert;
 import org.junit.Test;
 
+import org.apache.jasper.el.ELContextImpl;
+
 public class TestListELResolver {
 
     /**
@@ -49,10 +51,9 @@ public class TestListELResolver {
     @Test
     public void testGetValue03() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         Object result = resolver.getValue(context, list, new Integer(0));
 
@@ -66,10 +67,9 @@ public class TestListELResolver {
     @Test(expected = IllegalArgumentException.class)
     public void testGetValue04() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         resolver.getValue(context, list, "key");
     }
@@ -80,10 +80,9 @@ public class TestListELResolver {
     @Test
     public void testGetValue05() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         Object result = resolver.getValue(context, list, new Integer(1));
 
@@ -120,10 +119,9 @@ public class TestListELResolver {
     @Test
     public void testGetType03() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         Class<?> result = resolver.getType(context, list, new Integer(0));
 
@@ -137,10 +135,9 @@ public class TestListELResolver {
     @Test(expected = PropertyNotFoundException.class)
     public void testGetType04() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         resolver.getType(context, list, new Integer(1));
     }
@@ -169,10 +166,9 @@ public class TestListELResolver {
     @Test(expected = PropertyNotWritableException.class)
     public void testSetValue03() {
         ListELResolver resolver = new ListELResolver(true);
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        resolver.setValue(context, new ArrayList<>(), new Object(),
+        resolver.setValue(context, new ArrayList<Object>(), new Object(),
                 new Object());
     }
 
@@ -182,10 +178,9 @@ public class TestListELResolver {
     @Test
     public void testSetValue04() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("value");
         resolver.setValue(context, list, new Integer(0), "value");
 
@@ -200,10 +195,10 @@ public class TestListELResolver {
     @Test(expected = PropertyNotWritableException.class)
     public void testSetValue05() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<Object> list = Collections.unmodifiableList(new ArrayList<>());
+        List<Object> list = Collections
+                .unmodifiableList(new ArrayList<Object>());
         resolver.setValue(context, list, new Integer(0), "value");
     }
 
@@ -213,10 +208,9 @@ public class TestListELResolver {
     @Test(expected = IllegalArgumentException.class)
     public void testSetValue06() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         resolver.setValue(context, list, "key", "value");
     }
@@ -227,10 +221,9 @@ public class TestListELResolver {
     @Test(expected = PropertyNotFoundException.class)
     public void testSetValue07() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         resolver.setValue(context, list, new Integer(1), "value");
     }
@@ -250,8 +243,7 @@ public class TestListELResolver {
     @Test
     public void testIsReadOnly02() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
         boolean result = resolver.isReadOnly(context, new Object(),
                 new Object());
@@ -274,10 +266,9 @@ public class TestListELResolver {
     @Test
     public void testIsReadOnly03() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         boolean result = resolver.isReadOnly(context, list, new Integer(0));
 
@@ -298,10 +289,9 @@ public class TestListELResolver {
     @Test
     public void testIsReadOnly04() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         List<String> unmodifiableList = Collections.unmodifiableList(list);
         boolean result = resolver.isReadOnly(context, unmodifiableList,
@@ -317,10 +307,9 @@ public class TestListELResolver {
     @Test(expected = PropertyNotFoundException.class)
     public void testIsReadOnly05() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         resolver.isReadOnly(context, list, new Integer(1));
     }
@@ -331,10 +320,9 @@ public class TestListELResolver {
     @Test
     public void testIsReadOnly06() {
         ListELResolver resolver = new ListELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
+        ELContext context = new ELContextImpl();
 
-        List<String> list = new ArrayList<>();
+        List<String> list = new ArrayList<String>();
         list.add("key");
         boolean result = resolver.isReadOnly(context, list, "key");
 
@@ -352,8 +340,7 @@ public class TestListELResolver {
     private void doNegativeTest(Object base, Object trigger,
             MethodUnderTest method, boolean checkResult) {
         ListELResolver resolver = new ListELResolver();
-        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=1501948&r1=1501947&r2=1501948&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:04:29 2013
@@ -107,10 +107,18 @@
         (violetagg)
       </fix>
       <fix>
-        <bug>55207</bug>: Enfore the restriction that a &lt;jsp:text&gt; element
+        <bug>55207</bug>: Enforce the restriction that a &lt;jsp:text&gt; element
         may not contain any sub-elements from any namespace. Patch provided by
         Jeremy Boynes. (mark))
       </fix>
+      <fix>
+        Ensure that
+        <code>javax.el.ListELResolver.getFeatureDescriptors(ELContext,Object)</code>
+        will always return null.
+        <code>javax.el.ListELResolver.isReadOnly(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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org