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

org.eclipse.persistence.jpa.jpql.utility.iterable
Class SnapshotCloneListIterable<E>

java.lang.Object
  extended by org.eclipse.persistence.jpa.jpql.utility.iterable.CloneListIterable<E>
      extended by org.eclipse.persistence.jpa.jpql.utility.iterable.SnapshotCloneListIterable<E>
Type Parameters:
E - the type of elements returned by the list iterable's list iterator
All Implemented Interfaces:
java.lang.Iterable<E>, ListIterable<E>

public class SnapshotCloneListIterable<E>
extends CloneListIterable<E>

A SnapshotCloneListIterable returns a list iterator on a "snapshot" of a list, allowing for concurrent access to the original list. A copy of the list is created when the list iterable is constructed. As a result, the contents of the list will be the same with every call to iterator(), even if the original list is modified via the list iterator's mutation methods.

The original list passed to the SnapshotCloneListIterable's constructor should be thread-safe (e.g. Vector); otherwise you run the risk of a corrupted list.

By default, the list iterator returned by a SnapshotCloneListIterable does not support the SnapshotCloneListIterable.LocalCloneListIterator mutation operations; this is because it does not have access to the original list. But if the SnapshotCloneListIterable is supplied with a org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator.Mutator it will delegate the SnapshotCloneListIterable.LocalCloneListIterator mutation operations to the Mutator. Alternatively, a subclass can override the list iterable's mutation methods.

This list iterable is useful for multiple passes over a list that should not be changed (e.g. by another thread) between passes.

See Also:
SnapshotCloneListIterable.LocalCloneListIterator, LiveCloneListIterable, SnapshotCloneIterable

Nested Class Summary
protected static class SnapshotCloneListIterable.LocalCloneListIterator<E>
          provide access to "internal" constructor
 
Nested classes/interfaces inherited from class org.eclipse.persistence.jpa.jpql.utility.iterable.CloneListIterable
CloneListIterable.DefaultMutator
 
Constructor Summary
SnapshotCloneListIterable(java.util.List<? extends E> list)
          Construct a "snapshot" list iterable for the specified list.
SnapshotCloneListIterable(java.util.List<? extends E> list, CloneListIterator.Mutator<E> mutator)
          Construct a "snapshot" list iterable for the specified list.
 
Method Summary
 java.util.ListIterator<E> iterator()
          
 java.lang.String toString()
           
 
Methods inherited from class org.eclipse.persistence.jpa.jpql.utility.iterable.CloneListIterable
add, buildDefaultMutator, remove, set
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SnapshotCloneListIterable

public SnapshotCloneListIterable(java.util.List<? extends E> list)
Construct a "snapshot" list iterable for the specified list. The SnapshotCloneListIterable.LocalCloneListIterator modify operations will not be supported by the list iterator returned by iterator() unless a subclass overrides the list iterable's modify method.


SnapshotCloneListIterable

public SnapshotCloneListIterable(java.util.List<? extends E> list,
                                 CloneListIterator.Mutator<E> mutator)
Construct a "snapshot" list iterable for the specified list. The specified mutator will be used by any generated list iterators to modify the original list.

Method Detail

iterator

public java.util.ListIterator<E> iterator()
Description copied from interface: ListIterable


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

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