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