Interface ResourceIterable<T>

Type Parameters:
T - the type of values returned through the iterators
All Superinterfaces:
AutoCloseable, Iterable<T>, Resource

public interface ResourceIterable<T> extends Iterable<T>, Resource
Iterable whose iterators have associated resources that need to be released. ResourceIterators are always automatically released when their owning transaction is committed or rolled back. Inside a long running transaction, it is possible to release associated resources early. To do so you must ensure that all returned ResourceIterators are either fully exhausted, or explicitly closed.

If you intend to exhaust the returned iterators, and you are sure that the code within the iteration will NOT throw any exceptions, you can use conventional code as you would with a normal Iterable:

 
 ResourceIterable<Object> iterable;
 for ( Object item : iterable )
 {
     ...
 }
 
 
However, if your code might not exhaust the iterator, (run until Iterator.hasNext() returns false), ResourceIterator provides you with a ResourceIterator.close() method that can be invoked to release its associated resources early, by using a finally-block, or try-with-resource.
 
 ResourceIterable<Object> iterable;
 ResourceIterator<Object> iterator = iterable.iterator();
 try
 {
     while ( iterator.hasNext() )
     {
         Object item = iterator.next();
         if ( ... )
         {
             return item; // iterator may not be exhausted.
         }
     }
 }
 finally
 {
     iterator.close();
 }
 
 
See Also:
  • Field Summary

    Fields inherited from interface org.neo4j.graphdb.Resource

    EMPTY
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns an iterator with associated resources that may be managed.
    default Stream<T>
    Returns an Stream of associated resources that may be managed.

    Methods inherited from interface org.neo4j.graphdb.Resource

    close