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;
         }


Reply via email to