Author: niallp Date: Fri Aug 28 01:01:28 2009 New Revision: 808710 URL: http://svn.apache.org/viewvc?rev=808710&view=rev Log: BEANUTILS-358 Improve error message when ArrayIndexOutOfBoundsException is thrown by PropertyUtilsBean.getIndexedProperty() method
Added: commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira358TestCase.java (with props) Modified: commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java Modified: commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java URL: http://svn.apache.org/viewvc/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java?rev=808710&r1=808709&r2=808710&view=diff ============================================================================== --- commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java (original) +++ commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java Fri Aug 28 01:01:28 2009 @@ -514,7 +514,13 @@ } } else { //get the array's value - return (Array.get(value, index)); + try { + return (Array.get(value, index)); + } catch (ArrayIndexOutOfBoundsException e) { + throw new ArrayIndexOutOfBoundsException("Index: " + + index + ", Size: " + Array.getLength(value) + + " for property '" + name + "'"); + } } } Added: commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira358TestCase.java URL: http://svn.apache.org/viewvc/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira358TestCase.java?rev=808710&view=auto ============================================================================== --- commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira358TestCase.java (added) +++ commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira358TestCase.java Fri Aug 28 01:01:28 2009 @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.beanutils.bugs; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.beanutils.TestBean; + +/** + * See https://issues.apache.org/jira/browse/BEANUTILS-358 + * <p /> + * + * @version $Revision$ $Date$ + */ +public class Jira358TestCase extends TestCase { + + /** + * Create a test case with the specified name. + * + * @param name The name of the test + */ + public Jira358TestCase(String name) { + super(name); + } + + /** + * Run the Test. + * + * @param args Arguments + */ + public static void main(String[] args) { + junit.textui.TestRunner.run(suite()); + } + + /** + * Create a test suite for this test. + * + * @return a test suite + */ + public static Test suite() { + return (new TestSuite(Jira358TestCase.class)); + } + + /** + * Set up. + * + * @throws java.lang.Exception + */ + protected void setUp() throws Exception { + super.setUp(); + } + + /** + * Tear Down. + * + * @throws java.lang.Exception + */ + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Test {...@link PropertyUtils#getIndexedProperty(Object, String, int)} + */ + public void testPropertyUtils_getIndexedProperty_Array() throws Exception { + + TestBean bean = new TestBean(); + try { + PropertyUtils.getIndexedProperty(bean, "intArray", bean.getIntArray().length); + fail("Expected ArrayIndexOutOfBoundsException"); + } catch (ArrayIndexOutOfBoundsException e) { + // expected result + } + } + + /** + * Test {...@link PropertyUtils#getIndexedProperty(Object, String, int)} + */ + public void testPropertyUtils_getIndexedProperty_List() throws Exception { + + TestBean bean = new TestBean(); + try { + PropertyUtils.getIndexedProperty(bean, "listIndexed", bean.getListIndexed().size()); + fail("Expected IndexOutOfBoundsException"); + } catch (IndexOutOfBoundsException e) { + // expected result + } + } +} Propchange: commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira358TestCase.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/bugs/Jira358TestCase.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL