This is an automated email from the ASF dual-hosted git repository. thecarlhall pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-dbutils.git
The following commit(s) were added to refs/heads/master by this push: new c6f7cb4 DBUTILS-144 Use column index as property name when name and label are null c6f7cb4 is described below commit c6f7cb4bcc8f79be07d7a10f29868bcc7a1765de Author: Carl Hall <thecarlh...@apache.org> AuthorDate: Mon Dec 5 22:31:50 2022 -0500 DBUTILS-144 Use column index as property name when name and label are null --- .../java/org/apache/commons/dbutils/BasicRowProcessor.java | 12 ++++++++---- src/main/java/org/apache/commons/dbutils/BeanProcessor.java | 5 ++++- src/test/java/org/apache/commons/dbutils/BaseTestCase.java | 12 +++++++++--- .../org/apache/commons/dbutils/BasicRowProcessorTest.java | 1 + 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java b/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java index 8af06c2..2814175 100644 --- a/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java +++ b/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java @@ -165,11 +165,15 @@ public class BasicRowProcessor implements RowProcessor { final Map<String, Object> result = createCaseInsensitiveHashMap(cols); for (int i = 1; i <= cols; i++) { - String columnName = rsmd.getColumnLabel(i); - if (null == columnName || 0 == columnName.length()) { - columnName = rsmd.getColumnName(i); + String propKey = rsmd.getColumnLabel(i); + if (null == propKey || 0 == propKey.length()) { + propKey = rsmd.getColumnName(i); } - result.put(columnName, rs.getObject(i)); + if (null == propKey || 0 == propKey.length()) { + // The column index can't be null + propKey = Integer.toString(i); + } + result.put(propKey, rs.getObject(i)); } return result; diff --git a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java index 884c801..26610a0 100644 --- a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java +++ b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java @@ -457,8 +457,11 @@ public class BeanProcessor { if (propertyName == null) { propertyName = columnName; } - for (int i = 0; i < props.length; i++) { + if (propertyName == null) { + propertyName = Integer.toString(col); + } + for (int i = 0; i < props.length; i++) { final PropertyDescriptor prop = props[i]; final Column column = prop.getReadMethod().getAnnotation(Column.class); String propertyColumnName = null; diff --git a/src/test/java/org/apache/commons/dbutils/BaseTestCase.java b/src/test/java/org/apache/commons/dbutils/BaseTestCase.java index dc5e479..c9b530c 100644 --- a/src/test/java/org/apache/commons/dbutils/BaseTestCase.java +++ b/src/test/java/org/apache/commons/dbutils/BaseTestCase.java @@ -41,7 +41,9 @@ public class BaseTestCase extends TestCase { "nullObjectTest", "nullPrimitiveTest", "notDate", - "columnProcessorDoubleTest" }; + "columnProcessorDoubleTest", + null + }; /** * The number of columns in the MockResultSet. @@ -72,7 +74,9 @@ public class BaseTestCase extends TestCase { null, null, new Date(), - BigInteger.valueOf(13)}; + BigInteger.valueOf(13), + null + }; private static final Object[] row2 = new Object[] { @@ -85,7 +89,9 @@ public class BaseTestCase extends TestCase { null, null, ts789456123, - BigInteger.valueOf(13)}; + BigInteger.valueOf(13), + null + }; private static final Object[][] rows = new Object[][] { row1, row2 }; diff --git a/src/test/java/org/apache/commons/dbutils/BasicRowProcessorTest.java b/src/test/java/org/apache/commons/dbutils/BasicRowProcessorTest.java index ae6bff2..8fa8b90 100644 --- a/src/test/java/org/apache/commons/dbutils/BasicRowProcessorTest.java +++ b/src/test/java/org/apache/commons/dbutils/BasicRowProcessorTest.java @@ -153,6 +153,7 @@ public class BasicRowProcessorTest extends BaseTestCase { assertEquals("nullPrimitiveTest", itr.next()); assertEquals("notDate", itr.next()); assertEquals("columnProcessorDoubleTest", itr.next()); + assertEquals("11", itr.next()); assertFalse(itr.hasNext()); }