Author: dfabulich Date: Tue Feb 24 17:35:05 2009 New Revision: 747452 URL: http://svn.apache.org/viewvc?rev=747452&view=rev Log: merged from bugfixing branch
Added: commons/sandbox/dbutils/java5/src/test/org/apache/commons/dbutils/QueryRunnerTest.java - copied, changed from r747450, commons/sandbox/dbutils/bugfixing/src/test/org/apache/commons/dbutils/QueryRunnerTest.java Modified: commons/sandbox/dbutils/java5/ (props changed) commons/sandbox/dbutils/java5/src/java/org/apache/commons/dbutils/QueryRunner.java Propchange: commons/sandbox/dbutils/java5/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Feb 24 17:35:05 2009 @@ -1 +1,4 @@ -/commons/sandbox/dbutils/bugfixing:741988-743293 +/commons/commons/proper/dbutils/trunk:560657 +/commons/proper/dbutils/trunk:560660-741986 +/commons/sandbox/dbutils/bugfixing:741987-747450 +/jakarta/commons/proper/dbutils/trunk:141655-560656,560658-560659 Modified: commons/sandbox/dbutils/java5/src/java/org/apache/commons/dbutils/QueryRunner.java URL: http://svn.apache.org/viewvc/commons/sandbox/dbutils/java5/src/java/org/apache/commons/dbutils/QueryRunner.java?rev=747452&r1=747451&r2=747452&view=diff ============================================================================== --- commons/sandbox/dbutils/java5/src/java/org/apache/commons/dbutils/QueryRunner.java (original) +++ commons/sandbox/dbutils/java5/src/java/org/apache/commons/dbutils/QueryRunner.java Tue Feb 24 17:35:05 2009 @@ -19,6 +19,8 @@ import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.PreparedStatement; @@ -212,16 +214,19 @@ for (int i = 0; i < properties.length; i++) { PropertyDescriptor property = properties[i]; Object value = null; + Method method = property.getReadMethod(); + if (method == null) + throw new RuntimeException("No read method for bean property " + + bean.getClass() + " " + property.getName()); try { - if (property.getReadMethod().getParameterTypes().length > 0) { - throw new SQLException( - "Can't use an indexed bean property as a SQL parameter: " - + property.getName()); - } - value = property.getReadMethod().invoke(bean, new Object[0]); - } catch (Exception e) { - throw new RuntimeException(e); - } + value = method.invoke(bean, new Object[0]); + } catch (InvocationTargetException e) { + throw new RuntimeException("Couldn't invoke method: " + method, e); + } catch (IllegalArgumentException e) { + throw new RuntimeException("Couldn't invoke method with 0 arguments: " + method, e); + } catch (IllegalAccessException e) { + throw new RuntimeException("Couldn't invoke method: " + method, e); + } params[i] = value; } fillStatement(stmt, params); @@ -249,14 +254,13 @@ descriptors = Introspector.getBeanInfo(bean.getClass()) .getPropertyDescriptors(); } catch (IntrospectionException e) { - throw new RuntimeException(e); + throw new RuntimeException("Couldn't introspect bean " + bean.getClass().toString(), e); } PropertyDescriptor[] sorted = new PropertyDescriptor[propertyNames.length]; for (int i = 0; i < propertyNames.length; i++) { String propertyName = propertyNames[i]; if (propertyName == null) - throw new NullPointerException("propertyName can't be null: " - + i); + throw new NullPointerException("propertyName can't be null: " + i); boolean found = false; for (int j = 0; j < descriptors.length; j++) { PropertyDescriptor descriptor = descriptors[j]; Copied: commons/sandbox/dbutils/java5/src/test/org/apache/commons/dbutils/QueryRunnerTest.java (from r747450, commons/sandbox/dbutils/bugfixing/src/test/org/apache/commons/dbutils/QueryRunnerTest.java) URL: http://svn.apache.org/viewvc/commons/sandbox/dbutils/java5/src/test/org/apache/commons/dbutils/QueryRunnerTest.java?p2=commons/sandbox/dbutils/java5/src/test/org/apache/commons/dbutils/QueryRunnerTest.java&p1=commons/sandbox/dbutils/bugfixing/src/test/org/apache/commons/dbutils/QueryRunnerTest.java&r1=747450&r2=747452&rev=747452&view=diff ============================================================================== --- commons/sandbox/dbutils/bugfixing/src/test/org/apache/commons/dbutils/QueryRunnerTest.java (original) +++ commons/sandbox/dbutils/java5/src/test/org/apache/commons/dbutils/QueryRunnerTest.java Tue Feb 24 17:35:05 2009 @@ -116,7 +116,7 @@ private class NoOpFillStatement extends QueryRunner { Object[] params; - public void fillStatement(PreparedStatement stmt, Object[] params) + public void fillStatement(PreparedStatement stmt, Object... params) throws SQLException { this.params = params; }