info.aduna.iteration
Class DelayedIteration<E,X extends Exception>

java.lang.Object
  extended by info.aduna.iteration.CloseableIterationBase<E,X>
      extended by info.aduna.iteration.DelayedIteration<E,X>
All Implemented Interfaces:
CloseableIteration<E,X>, Iteration<E,X>
Direct Known Subclasses:
DelayedIterator

public abstract class DelayedIteration<E,X extends Exception>
extends CloseableIterationBase<E,X>

An iteration that delays the creation of the underlying iteration until it is being accessed. This is mainly useful for situations where iteration creation adds considerable overhead but where the iteration may not actually be used, or where a created iteration consumes scarce resources like JDBC-connections or memory. Subclasses must implement the createIteration method, which is called once when the iteration is first needed.


Field Summary
 
Fields inherited from class info.aduna.iteration.CloseableIterationBase
logger
 
Constructor Summary
DelayedIteration()
          Creates a new DelayedIteration.
 
Method Summary
protected abstract  Iteration<? extends E,? extends X> createIteration()
          Creates the iteration that should be iterated over.
protected  void handleClose()
          Closes this iteration as well as the underlying iteration if it has already been created and happens to be a CloseableIteration.
 boolean hasNext()
          Calls the hasNext method of the underlying iteration.
 E next()
          Calls the next method of the underlying iteration.
 void remove()
          Calls the remove method of the underlying iteration.
 
Methods inherited from class info.aduna.iteration.CloseableIterationBase
close, isClosed
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelayedIteration

public DelayedIteration()
Creates a new DelayedIteration.

Method Detail

createIteration

protected abstract Iteration<? extends E,? extends X> createIteration()
                                                                                 throws X extends Exception
Creates the iteration that should be iterated over. This method is called only once, when the iteration is first needed.

Throws:
X extends Exception

hasNext

public boolean hasNext()
                throws X extends Exception
Calls the hasNext method of the underlying iteration.

Returns:
true if the iteration has more elements.
Throws:
X
X extends Exception

next

public E next()
       throws X extends Exception
Calls the next method of the underlying iteration.

Returns:
the next element in the iteration.
Throws:
X extends Exception

remove

public void remove()
            throws X extends Exception
Calls the remove method of the underlying iteration.

Throws:
X extends Exception

handleClose

protected void handleClose()
                    throws X extends Exception
Closes this iteration as well as the underlying iteration if it has already been created and happens to be a CloseableIteration.

Overrides:
handleClose in class CloseableIterationBase<E,X extends Exception>
Throws:
X
X extends Exception


Copyright © 1997-2008 Aduna. All Rights Reserved.