Author: markt Date: Thu Jul 4 19:43:22 2013 New Revision: 1499848 URL: http://svn.apache.org/r1499848 Log: More unit tests for BeanNameELResolver and fix a missing exception when trying to write to a read-only bean
Modified: tomcat/trunk/java/javax/el/BeanNameELResolver.java tomcat/trunk/java/javax/el/LocalStrings.properties tomcat/trunk/test/javax/el/TestBeanNameELResolver.java tomcat/trunk/test/javax/el/TesterBeanNameResolver.java Modified: tomcat/trunk/java/javax/el/BeanNameELResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/BeanNameELResolver.java?rev=1499848&r1=1499847&r2=1499848&view=diff ============================================================================== --- tomcat/trunk/java/javax/el/BeanNameELResolver.java (original) +++ tomcat/trunk/java/javax/el/BeanNameELResolver.java Thu Jul 4 19:43:22 2013 @@ -69,6 +69,11 @@ public class BeanNameELResolver extends String beanName = (String) property; + if (isReadOnly(context, base, property)) { + throw new PropertyNotWritableException(Util.message(context, + "beanNameELResolver.beanReadOnly", beanName)); + } + if (beanNameResolver.isNameResolved(beanName) || beanNameResolver.canCreateBean(beanName)) { context.setPropertyResolved(true); Modified: tomcat/trunk/java/javax/el/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/LocalStrings.properties?rev=1499848&r1=1499847&r2=1499848&view=diff ============================================================================== --- tomcat/trunk/java/javax/el/LocalStrings.properties (original) +++ tomcat/trunk/java/javax/el/LocalStrings.properties Thu Jul 4 19:43:22 2013 @@ -23,6 +23,7 @@ propertyReadError=Error reading ''{1}'' propertyWriteError=Error writing ''{1}'' on type {0} objectNotAssignable=Unable to add an object of type [{0}] to an array of objects of type [{1}] +beanNameELResolver.beanReadOnly=The bean name [{0}] is read-only elProcessor.defineFunctionInvalidClass=The class [{0}] is not public elProcessor.defineFunctionInvalidMethod=The method [{0}] on class [{1}] is not a public static method elProcessor.defineFunctionInvalidParameterList=The parameter list [{0}] for method [{1}] on class [{2}] is not valid Modified: tomcat/trunk/test/javax/el/TestBeanNameELResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestBeanNameELResolver.java?rev=1499848&r1=1499847&r2=1499848&view=diff ============================================================================== --- tomcat/trunk/test/javax/el/TestBeanNameELResolver.java (original) +++ tomcat/trunk/test/javax/el/TestBeanNameELResolver.java Thu Jul 4 19:43:22 2013 @@ -212,7 +212,7 @@ public class TestBeanNameELResolver { /** - * Test ceate with create disabled. + * Test create with create disabled. */ @Test public void testSetValue05() { @@ -221,6 +221,26 @@ public class TestBeanNameELResolver { /** + * Test replacing a read-only bean with create enabled. + */ + @Test(expected=PropertyNotWritableException.class) + public void testSetValue06() { + doSetValueCreateReplaceTest(true, + TesterBeanNameResolver.READ_ONLY_NAME); + } + + + /** + * Test replacing a read-only bean with create disable. + */ + @Test(expected=PropertyNotWritableException.class) + public void testSetValue07() { + doSetValueCreateReplaceTest(false, + TesterBeanNameResolver.READ_ONLY_NAME); + } + + + /** * Tests adding/replacing beans beans */ private void doSetValueCreateReplaceTest(boolean canCreate, Modified: tomcat/trunk/test/javax/el/TesterBeanNameResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TesterBeanNameResolver.java?rev=1499848&r1=1499847&r2=1499848&view=diff ============================================================================== --- tomcat/trunk/test/javax/el/TesterBeanNameResolver.java (original) +++ tomcat/trunk/test/javax/el/TesterBeanNameResolver.java Thu Jul 4 19:43:22 2013 @@ -23,6 +23,7 @@ public class TesterBeanNameResolver exte public static final String EXCEPTION_TRIGGER_NAME = "exception"; public static final String THROWABLE_TRIGGER_NAME = "throwable"; + public static final String READ_ONLY_NAME = "readonly"; private Map<String,Object> beans = new HashMap<>(); private boolean allowCreate = true; @@ -31,6 +32,7 @@ public class TesterBeanNameResolver exte public TesterBeanNameResolver() { beans.put(EXCEPTION_TRIGGER_NAME, new Object()); beans.put(THROWABLE_TRIGGER_NAME, new Object()); + beans.put(READ_ONLY_NAME, new Object()); } @Override @@ -66,4 +68,9 @@ public class TesterBeanNameResolver exte public void setAllowCreate(boolean allowCreate) { this.allowCreate = allowCreate; } + + @Override + public boolean isReadOnly(String beanName) { + return READ_ONLY_NAME.equals(beanName); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org