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

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

public class LockingIteration<E,X extends Exception>
extends IterationWrapper<E,X>

An Iteration that holds on to a lock until the Iteration is closed. Upon closing, the underlying Iteration is closed before the lock is released. This iterator closes itself as soon as all elements have been read.


Field Summary
 
Fields inherited from class info.aduna.iteration.IterationWrapper
wrappedIter
 
Fields inherited from class info.aduna.iteration.CloseableIterationBase
logger
 
Constructor Summary
LockingIteration(Lock lock, Iteration<? extends E,X> iter)
          Creates a new LockingIteration.
 
Method Summary
protected  void handleClose()
          Closed this Iteration and also closes the wrapped Iteration if it is a CloseableIteration.
 boolean hasNext()
          Checks whether the wrapped Iteration contains more elements, closing this Iteration when this is not the case.
 
Methods inherited from class info.aduna.iteration.IterationWrapper
next, remove
 
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

LockingIteration

public LockingIteration(Lock lock,
                        Iteration<? extends E,X> iter)
Creates a new LockingIteration.

Parameters:
lock - The lock to release when the itererator is closed, must not be null.
iter - The underlying Iteration, must not be null.
Method Detail

hasNext

public boolean hasNext()
                throws X extends Exception
Description copied from class: IterationWrapper
Checks whether the wrapped Iteration contains more elements, closing this Iteration when this is not the case.

Specified by:
hasNext in interface Iteration<E,X extends Exception>
Overrides:
hasNext in class IterationWrapper<E,X extends Exception>
Returns:
true if the wrapped Iteration contains more elements, false otherwise.
Throws:
X
X extends Exception

handleClose

protected void handleClose()
                    throws X extends Exception
Description copied from class: IterationWrapper
Closed this Iteration and also closes the wrapped Iteration if it is a CloseableIteration.

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


Copyright © 1997-2008 Aduna. All Rights Reserved.