You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by th...@apache.org on 2022/12/06 03:32:19 UTC

[commons-dbutils] branch master updated: DBUTILS-144 Use column index as property name when name and label are null

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 <th...@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());
     }