Class QueueIteration<E,​T extends Exception>

All Implemented Interfaces:
AutoCloseable, CloseableIteration<E,​T>, Iteration<E,​T>
Direct Known Subclasses:
QueueCursor

public abstract class QueueIteration<E,​T extends Exception> extends LookAheadIteration<E,​T>
Makes working with a queue easier by adding the methods done() and toss(Exception) and after converting the Exception to the required type using convert(Exception).
Author:
James Leigh
  • Constructor Details

    • QueueIteration

      protected QueueIteration(int capacity, WeakReference<?> callerRef)
      Creates an QueueIteration with the given (fixed) capacity and default access policy.
      Parameters:
      capacity - the capacity of this queue
    • QueueIteration

      protected QueueIteration(int capacity, boolean fair, WeakReference<?> callerRef)
      Creates an QueueIteration with the given (fixed) capacity and the specified access policy.
      Parameters:
      capacity - the capacity of this queue
      fair - if true then queue accesses for threads blocked on insertion or removal, are processed in FIFO order; if false the access order is unspecified.
    • QueueIteration

      protected QueueIteration(BlockingQueue<E> queue, WeakReference<?> callerRef)
      Creates an QueueIteration with the given BlockingQueue as its backing queue.
      It may not be threadsafe to modify or access the given BlockingQueue from other locations. This method only enables the default ArrayBlockingQueue to be overridden.
      Parameters:
      queue - A BlockingQueue that is not used in other locations, but will be used as the backing Queue implementation for this cursor.
  • Method Details

    • convert

      protected abstract T convert(Exception e)
      Converts an exception from the underlying iteration to an exception of type X.
    • toss

      public void toss(Exception exception)
      The next time LookAheadIteration.next() is called this exception will be thrown. If it is not a QueryEvaluationException or RuntimeException it will be wrapped in a QueryEvaluationException.
    • put

      public void put(E item) throws InterruptedException, T
      Adds another item to the queue, blocking while the queue is full.
      Throws:
      InterruptedException
      T extends Exception
    • done

      public void done()
      Indicates the method put(Object) will not be called in the queue anymore.
    • getNextElement

      public E getNextElement() throws T
      Returns the next item in the queue, which may be null, or throws an exception.
      Specified by:
      getNextElement in class LookAheadIteration<E,​T extends Exception>
      Returns:
      The next element, or null if no more elements are available.
      Throws:
      T extends Exception
    • handleClose

      public void handleClose() throws T
      Description copied from class: AbstractCloseableIteration
      Called by AbstractCloseableIteration.close() when it is called for the first time. This method is only called once on each iteration. By default, this method does nothing.
      Overrides:
      handleClose in class LookAheadIteration<E,​T extends Exception>
      Throws:
      T extends Exception
    • checkException

      public void checkException() throws T
      Throws:
      T extends Exception