EclipseLink 2.5.0, build 'v20130507-3faac2b' API Reference

org.eclipse.persistence.jpa.jpql.utility.iterator
Class CloneListIterator<E>

java.lang.Object
  extended by org.eclipse.persistence.jpa.jpql.utility.iterator.CloneListIterator<E>
Type Parameters:
E - the type of elements returned by the iterator
All Implemented Interfaces:
java.util.Iterator<E>, java.util.ListIterator<E>
Direct Known Subclasses:
SnapshotCloneListIterable.LocalCloneListIterator

public class CloneListIterator<E>
extends java.lang.Object
implements java.util.ListIterator<E>

A CloneListIterator iterates over a copy of a list, allowing for concurrent access to the original list.

The original list passed to the CloneListIterator's constructor should be synchronized; otherwise you run the risk of a corrupted list (e.g. Vector.

By default, a CloneListIterator does not support the modification operations; this is because it does not have access to the original list. But if the CloneListIterator is supplied with a CloneListIterator.Mutator it will delegate the modification operations to the CloneListIterator.Mutator. Alternatively, a subclass can override the modification methods.

See Also:
org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable, org.eclipse.jpt.common.utility.internal.iterables.SnapshotCloneListIterable

Nested Class Summary
static interface CloneListIterator.Mutator<T>
          Used by CloneListIterator to remove elements from the original list; since the list iterator does not have direct access to the original list.
 
Constructor Summary
protected CloneListIterator(CloneListIterator.Mutator<E> mutator, java.lang.Object... array)
          Internal constructor used by subclasses.
  CloneListIterator(E[] array)
          Construct a list iterator on a copy of the specified array.
  CloneListIterator(E[] array, CloneListIterator.Mutator<E> mutator)
          Construct a list iterator on a copy of the specified array.
  CloneListIterator(java.util.List<? extends E> list)
          Construct a list iterator on a copy of the specified list.
  CloneListIterator(java.util.List<? extends E> list, CloneListIterator.Mutator<E> mutator)
          Construct a list iterator on a copy of the specified list.
 
Method Summary
 void add(E o)
           
protected  void add(int index, E o)
          Add the specified element to the original list.
 boolean hasNext()
           
 boolean hasPrevious()
           
protected  E nestedNext()
          The list passed in during construction held elements of type E, so this cast is not a problem.
protected  E nestedPrevious()
          The list passed in during construction held elements of type E, so this cast is not a problem.
 E next()
           
 int nextIndex()
           
 E previous()
           
 int previousIndex()
           
 void remove()
           
protected  void remove(int index)
          Remove the specified element from the original list.
 void set(E o)
           
protected  void set(int index, E o)
          Set the specified element in the original list.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CloneListIterator

public CloneListIterator(E[] array)
Construct a list iterator on a copy of the specified array. The modification methods will not be supported, unless a subclass overrides them.


CloneListIterator

public CloneListIterator(E[] array,
                         CloneListIterator.Mutator<E> mutator)
Construct a list iterator on a copy of the specified array. Use the specified list mutator to modify the original list.


CloneListIterator

public CloneListIterator(java.util.List<? extends E> list)
Construct a list iterator on a copy of the specified list. The modification methods will not be supported, unless a subclass overrides them.


CloneListIterator

public CloneListIterator(java.util.List<? extends E> list,
                         CloneListIterator.Mutator<E> mutator)
Construct a list iterator on a copy of the specified list. Use the specified list mutator to modify the original list.


CloneListIterator

protected CloneListIterator(CloneListIterator.Mutator<E> mutator,
                            java.lang.Object... array)
Internal constructor used by subclasses. Swap order of arguments to prevent collision with other constructor. The passed in array will *not* be cloned.

Method Detail

add

public void add(E o)
Specified by:
add in interface java.util.ListIterator<E>

add

protected void add(int index,
                   E o)
Add the specified element to the original list.

This method can be overridden by a subclass as an alternative to building a CloneListIterator.Mutator.


hasNext

public boolean hasNext()
Specified by:
hasNext in interface java.util.Iterator<E>
Specified by:
hasNext in interface java.util.ListIterator<E>

hasPrevious

public boolean hasPrevious()
Specified by:
hasPrevious in interface java.util.ListIterator<E>

nestedNext

protected E nestedNext()
The list passed in during construction held elements of type E, so this cast is not a problem. We need this cast because all the elements of the original collection were copied into an object array (Object[]).


nestedPrevious

protected E nestedPrevious()
The list passed in during construction held elements of type E, so this cast is not a problem. We need this cast because all the elements of the original collection were copied into an object array (Object[]).


next

public E next()
Specified by:
next in interface java.util.Iterator<E>
Specified by:
next in interface java.util.ListIterator<E>

nextIndex

public int nextIndex()
Specified by:
nextIndex in interface java.util.ListIterator<E>

previous

public E previous()
Specified by:
previous in interface java.util.ListIterator<E>

previousIndex

public int previousIndex()
Specified by:
previousIndex in interface java.util.ListIterator<E>

remove

public void remove()
Specified by:
remove in interface java.util.Iterator<E>
Specified by:
remove in interface java.util.ListIterator<E>

remove

protected void remove(int index)
Remove the specified element from the original list.

This method can be overridden by a subclass as an alternative to building a CloneListIterator.Mutator.


set

public void set(E o)
Specified by:
set in interface java.util.ListIterator<E>

set

protected void set(int index,
                   E o)
Set the specified element in the original list.

This method can be overridden by a subclass as an alternative to building a CloneListIterator.Mutator.


EclipseLink 2.5.0, build 'v20130507-3faac2b' API Reference