[
https://issues.apache.org/jira/browse/JENA-1601?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andy Seaborne resolved JENA-1601.
---------------------------------
Resolution: Won't Fix
Please feel free to add discussion and new information.
> Make ClosableIterator<T> extend AutoCloseable
> ---------------------------------------------
>
> Key: JENA-1601
> URL: https://issues.apache.org/jira/browse/JENA-1601
> Project: Apache Jena
> Issue Type: Improvement
> Components: Jena
> Affects Versions: Jena 3.8.0
> Reporter: David Schwingenschlögl
> Priority: Minor
>
> The interface org.apache.jena.util.iterator.ClosableIterator<T> defines a
> method public void close(), so the concept of closing is already baked into
> it. The only barrier to using a ClosableIterator (and thus, ExtendedIterator)
> in a try-with-resource block is the missing extension of
> java.lang.AutoCloseable.
> According to API documentation of ClosableIterator, an iterator should be
> closed when not completely exhausted, which may be the case when the block
> consuming the iterator throws an exception, effectively making constructs
> such as this necessary:
> {code:java}
> final ExtendedIterator<Triple> iterator = someGraph.find();
> try {
> while (iterator.hasNext()) {
> // consume iterator, might throw in here
> }
> } finally {
> // Prevent resource leaks
> iterator.close();
> }
> {code}
> This would be better expressed in a try-with-resource-construct:
> {code:java}
> try (final ExtendedIterator<Triple> itrator = someGraph.find()) {
> // consume iterator, might throw in here
> }
> {code}
> From what I can tell, making a ClosableIterator also extend AutoCloseable
> only adds to the usability of Jena's API while keeping source backwards
> compatibility intact.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)