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: [email protected]
For additional commands, e-mail: [email protected]