This is an automated email from the ASF dual-hosted git repository.
ggregory 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 27ca6db org.apache.commons.dbutils.ResultSetIterator.next() now
throws NoSuchElementException as defined in java.util.Iterator.next()
27ca6db is described below
commit 27ca6db9458c8548e08790b557c47878c5e2d76f
Author: Gary Gregory <[email protected]>
AuthorDate: Mon Jan 5 07:58:52 2026 -0500
org.apache.commons.dbutils.ResultSetIterator.next() now throws
NoSuchElementException as defined in java.util.Iterator.next()
See also PR #283
---
src/changes/changes.xml | 1 +
.../org/apache/commons/dbutils/ResultSetIterator.java | 18 ++++++++++++------
.../apache/commons/dbutils/ResultSetIteratorTest.java | 4 +++-
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7dc472f..3f8cbd7 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -57,6 +57,7 @@ The <action> type attribute can be add,update,fix,remove.
<action type="fix" dev="ggregory" due-to="Gary
Gregory">ResultSetIterator.hasNext() now throws IllegalStateException instead
of RuntimeException to wrap cases of SQLException.</action>
<action type="fix" dev="ggregory" due-to="Gary
Gregory">ResultSetIterator.next() now throws IllegalStateException instead of
RuntimeException to wrap cases of SQLException.</action>
<action type="fix" dev="ggregory" due-to="Gary
Gregory">ResultSetIterator.remove() now throws IllegalStateException instead of
RuntimeException to wrap cases of SQLException.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory,
Matheus_Maas">org.apache.commons.dbutils.ResultSetIterator.next() now throws
NoSuchElementException as defined in java.util.Iterator.next() #283.</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="strangelookingnerd, Gary
Gregory">BaseResultSetHandler implements ResultSet.</action>
<!-- UPDATE -->
diff --git a/src/main/java/org/apache/commons/dbutils/ResultSetIterator.java
b/src/main/java/org/apache/commons/dbutils/ResultSetIterator.java
index 4127fa7..35c6d1f 100644
--- a/src/main/java/org/apache/commons/dbutils/ResultSetIterator.java
+++ b/src/main/java/org/apache/commons/dbutils/ResultSetIterator.java
@@ -19,6 +19,7 @@ package org.apache.commons.dbutils;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
+import java.util.NoSuchElementException;
/**
* <p>
@@ -97,17 +98,22 @@ public class ResultSetIterator implements
Iterator<Object[]> {
*
* @return An {@code Object[]} with the same number of elements as
* columns in the {@code ResultSet}.
- * @see java.util.Iterator#next()
* @throws RuntimeException if an SQLException occurs.
+ * @throws NoSuchElementException if the iteration has no more elements.
+ * @see java.util.Iterator#next()
*/
@Override
public Object[] next() {
- try {
- return resultSet.next() ? this.convert.toArray(resultSet) : new
Object[0];
- } catch (final SQLException e) {
- rethrow(e);
- return null;
+ if (hasNext()) {
+ try {
+ resultSet.next();
+ return this.convert.toArray(resultSet);
+ } catch (final SQLException e) {
+ rethrow(e);
+ return null;
+ }
}
+ throw new NoSuchElementException("No more rows in the ResultSet");
}
/**
diff --git
a/src/test/java/org/apache/commons/dbutils/ResultSetIteratorTest.java
b/src/test/java/org/apache/commons/dbutils/ResultSetIteratorTest.java
index 61128f3..8dc3619 100644
--- a/src/test/java/org/apache/commons/dbutils/ResultSetIteratorTest.java
+++ b/src/test/java/org/apache/commons/dbutils/ResultSetIteratorTest.java
@@ -18,6 +18,7 @@ package org.apache.commons.dbutils;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.Mockito.mock;
@@ -25,6 +26,7 @@ import static org.mockito.Mockito.mock;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
+import java.util.NoSuchElementException;
import org.junit.jupiter.api.Test;
@@ -63,7 +65,7 @@ class ResultSetIteratorTest extends BaseTestCase {
assertEquals("SIX", row[2]);
assertFalse(iter.hasNext());
- assertEquals(0, iter.next().length);
+ assertThrows(NoSuchElementException.class, iter::next);
}
@Test