DBUTILS-110: ArrayHandler should return an empty array when handle has no rows

git-svn-id: 
https://svn.apache.org/repos/asf/commons/proper/dbutils/trunk@1611104 
13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-dbutils/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-dbutils/commit/edafd03e
Tree: http://git-wip-us.apache.org/repos/asf/commons-dbutils/tree/edafd03e
Diff: http://git-wip-us.apache.org/repos/asf/commons-dbutils/diff/edafd03e

Branch: refs/heads/master
Commit: edafd03ede4a497d8c44848e269cddd08ef4197f
Parents: 0f0a25c
Author: Benedikt Ritter <[email protected]>
Authored: Wed Jul 16 17:34:43 2014 +0000
Committer: Benedikt Ritter <[email protected]>
Committed: Wed Jul 16 17:34:43 2014 +0000

----------------------------------------------------------------------
 .../apache/commons/dbutils/handlers/ArrayHandler.java    | 11 ++++++++---
 .../commons/dbutils/handlers/ArrayHandlerTest.java       |  6 +++++-
 2 files changed, 13 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/edafd03e/src/main/java/org/apache/commons/dbutils/handlers/ArrayHandler.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/dbutils/handlers/ArrayHandler.java 
b/src/main/java/org/apache/commons/dbutils/handlers/ArrayHandler.java
index 8c82210..7d7bfea 100644
--- a/src/main/java/org/apache/commons/dbutils/handlers/ArrayHandler.java
+++ b/src/main/java/org/apache/commons/dbutils/handlers/ArrayHandler.java
@@ -40,6 +40,11 @@ public class ArrayHandler implements 
ResultSetHandler<Object[]> {
     static final RowProcessor ROW_PROCESSOR = new BasicRowProcessor();
 
     /**
+     * An empty array to return when no more rows are available in the 
ResultSet.
+     */
+    private static final Object[] EMPTY_ARRAY = new Object[0];
+
+    /**
      * The RowProcessor implementation to use when converting rows
      * into arrays.
      */
@@ -67,15 +72,15 @@ public class ArrayHandler implements 
ResultSetHandler<Object[]> {
     /**
      * Places the column values from the first row in an <code>Object[]</code>.
      * @param rs <code>ResultSet</code> to process.
-     * @return An Object[] or <code>null</code> if there are no rows in the
-     * <code>ResultSet</code>.
+     * @return An Object[]. If there are no rows in the <code>ResultSet</code>
+     * an empty array will be returned.
      *
      * @throws SQLException if a database access error occurs
      * @see 
org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
      */
     @Override
     public Object[] handle(ResultSet rs) throws SQLException {
-        return rs.next() ? this.convert.toArray(rs) : null;
+        return rs.next() ? this.convert.toArray(rs) : EMPTY_ARRAY;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/edafd03e/src/test/java/org/apache/commons/dbutils/handlers/ArrayHandlerTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/dbutils/handlers/ArrayHandlerTest.java 
b/src/test/java/org/apache/commons/dbutils/handlers/ArrayHandlerTest.java
index ffb9a8e..32aec57 100644
--- a/src/test/java/org/apache/commons/dbutils/handlers/ArrayHandlerTest.java
+++ b/src/test/java/org/apache/commons/dbutils/handlers/ArrayHandlerTest.java
@@ -16,6 +16,10 @@
  */
 package org.apache.commons.dbutils.handlers;
 
+import static org.hamcrest.Matchers.emptyArray;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
 import java.sql.SQLException;
 
 import org.apache.commons.dbutils.BaseTestCase;
@@ -41,7 +45,7 @@ public class ArrayHandlerTest extends BaseTestCase {
         ResultSetHandler<Object[]> h = new ArrayHandler();
         Object[] results = h.handle(this.emptyResultSet);
 
-        assertNull(results);
+        assertThat(results, is(emptyArray()));
     }
 
 }

Reply via email to