Class CloneListIterator<E>
- java.lang.Object
-
- 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>
ACloneListIterator
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 theCloneListIterator
is supplied with aCloneListIterator.Mutator
it will delegate the modification operations to theCloneListIterator.Mutator
. Alternatively, a subclass can override the modification methods.- See Also:
- LiveCloneListIterable, SnapshotCloneListIterable
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
CloneListIterator.Mutator<T>
Used byCloneListIterator
to remove elements from the original list; since the list iterator does not have direct access to the original list.
-
Constructor Summary
Constructors Modifier Constructor Description 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.protected
CloneListIterator(CloneListIterator.Mutator<E> mutator, java.lang.Object... array)
Internal constructor used by subclasses.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
add(int index, E o)
Add the specified element to the original list.void
add(E o)
boolean
hasNext()
boolean
hasPrevious()
protected E
nestedNext()
The list passed in during construction held elements of typeE
, so this cast is not a problem.protected E
nestedPrevious()
The list passed in during construction held elements of typeE
, 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.protected void
set(int index, E o)
Set the specified element in the original list.void
set(E o)
-
-
-
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
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()
-
hasPrevious
public boolean hasPrevious()
- Specified by:
hasPrevious
in interfacejava.util.ListIterator<E>
-
nestedNext
protected E nestedNext()
The list passed in during construction held elements of typeE
, 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 typeE
, 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()
-
nextIndex
public int nextIndex()
- Specified by:
nextIndex
in interfacejava.util.ListIterator<E>
-
previousIndex
public int previousIndex()
- Specified by:
previousIndex
in interfacejava.util.ListIterator<E>
-
remove
public void remove()
-
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
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
.
-
-