dgraham 2003/10/17 16:37:57
Modified: dbutils/src/java/org/apache/commons/dbutils
BasicResultSetConverter.java
Log:
Don't call a bean property's setter method if the type of object returned
from the database doesn't match the setter method signature. This
allows clients to use toBean() to populate most properties and then
fill in the rest with custom code without having to catch an exception
from toBean().
Revision Changes Path
1.5 +12 -6
jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/BasicResultSetConverter.java
Index: BasicResultSetConverter.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/BasicResultSetConverter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- BasicResultSetConverter.java 17 Oct 2003 23:22:44 -0000 1.4
+++ BasicResultSetConverter.java 17 Oct 2003 23:37:57 -0000 1.5
@@ -253,11 +253,17 @@
* @throws DbException if an error occurs setting the property.
*/
private void callSetter(PropertyDescriptor pd, Object target, Object value) {
+ Method setter = pd.getWriteMethod();
- try {
- Method setter = pd.getWriteMethod();
+ if (setter == null) {
+ return;
+ }
+
+ Class[] params = setter.getParameterTypes();
- if (setter != null) {
+ try {
+ // Don't call setter if the value object isn't the right type
+ if (value == null || params[0].isInstance(value)) {
setter.invoke(target, new Object[] { value });
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]