EclipseLink 2.4.2, build 'v20130514-5956486' API Reference

org.eclipse.persistence.indirection
Class IndirectSet

java.lang.Object
  extended by org.eclipse.persistence.indirection.IndirectSet
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Iterable, java.util.Collection, java.util.Set, ChangeTracker, CollectionChangeTracker, IndirectCollection, IndirectContainer

public class IndirectSet
extends java.lang.Object
implements CollectionChangeTracker, java.util.Set, IndirectCollection, java.lang.Cloneable, java.io.Serializable

IndirectSet is an example implementation of the Set protocol that allows a domain class to take advantage of TopLink Indirection without having to declare its instance variable as a ValueHolderInterface.

To use an IndirectSet:

TopLink will place an IndirectSet in the instance variable when the containing domain object is read from the datatabase. With the first message sent to the IndirectSet, the contents are fetched from the database and normal Set behavior is resumed.

Implementation notes:

See Also:
CollectionMapping, Serialized Form
Author:
Big Country
Since:
TOPLink/Java 3.0+

Field Summary
protected  int initialCapacity
          Store initial size for lazy init.
protected  float loadFactor
          Store load factor for lazy init.
 
Constructor Summary
IndirectSet()
          Construct an empty IndirectSet.
IndirectSet(java.util.Collection c)
          Construct an IndirectSet containing the elements of the specified collection.
IndirectSet(int initialCapacity)
          Construct an empty IndirectSet with the specified initial capacity.
IndirectSet(int initialCapacity, float loadFactor)
          Construct an empty IndirectSet with the specified initial capacity and load factor.
 
Method Summary
 java.beans.PropertyChangeListener _persistence_getPropertyChangeListener()
          INTERNAL: Return the property change listener for change tracking.
 void _persistence_setPropertyChangeListener(java.beans.PropertyChangeListener changeListener)
          INTERNAL: Set the property change listener for change tracking.
 boolean add(java.lang.Object element)
           
 boolean addAll(java.util.Collection c)
           
protected  java.util.Set buildDelegate()
          INTERNAL: Return the freshly-built delegate.
 void clear()
           
 void clearDeferredChanges()
          INTERNAL: clear any changes that have been deferred to instantiation.
 java.lang.Object clone()
           
protected  java.util.Set cloneDelegate()
          INTERNAL: Clone the delegate.
 boolean contains(java.lang.Object element)
           
 boolean containsAll(java.util.Collection c)
           
 boolean equals(java.lang.Object o)
           
 java.util.Collection getAddedElements()
          INTERNAL: Return the elements that have been added before instantiation.
protected  java.util.Set getDelegate()
          INTERNAL: Check whether the contents have been read from the database.
 java.lang.Object getDelegateObject()
          INTERNAL: Return the real collection object.
 java.util.Collection getRemovedElements()
          INTERNAL: Return the elements that have been removed before instantiation.
 java.lang.String getTrackedAttributeName()
          INTERNAL: Return the mapping attribute name, used to raise change events.
 ValueHolderInterface getValueHolder()
          INTERNAL: Return the valueHolder.
 boolean hasAddedElements()
          INTERNAL: Return if any elements that have been added before instantiation.
 boolean hasBeenRegistered()
          INTERNAL: Return whether this IndirectSet has been registered in a UnitOfWork
 boolean hasDeferredChanges()
          INTERNAL: Return if any elements that have been added or removed before instantiation.
 int hashCode()
           
 boolean hasRemovedElements()
          INTERNAL: Return if any elements that have been removed before instantiation.
 boolean hasTrackedPropertyChangeListener()
          INTERNAL: Return if the collection has a property change listener for change tracking.
 boolean isEmpty()
           
 boolean isInstantiated()
          Return whether the contents have been read from the database.
protected  boolean isRelationshipMaintenanceRequired()
           
 java.util.Iterator iterator()
           
protected  void raiseAddChangeEvent(java.lang.Object element)
          Raise the add change event and relationship maintainence.
protected  void raiseRemoveChangeEvent(java.lang.Object element)
          Raise the remove change event.
 boolean remove(java.lang.Object element)
           
 boolean removeAll(java.util.Collection c)
           
 boolean retainAll(java.util.Collection c)
           
 void setTrackedAttributeName(java.lang.String attributeName)
          INTERNAL: Set the mapping attribute name, used to raise change events.
 void setUseLazyInstantiation(boolean useLazyInstantiation)
          INTERNAL Set whether this collection should attempt do deal with adds and removes without retrieving the collection from the dB
 void setValueHolder(ValueHolderInterface valueHolder)
          INTERNAL: Set the value holder.
protected  boolean shouldAvoidInstantiation()
          INTERNAL: Return if add/remove should trigger instantiation or avoid.
protected  boolean shouldUseLazyInstantiation()
          Return whether this collection should attempt do deal with adds and removes without retrieving the collection from the dB
 int size()
           
 java.lang.Object[] toArray()
           
 java.lang.Object[] toArray(java.lang.Object[] a)
           
 java.lang.String toString()
          Use the delegate's #toString(); but wrap it with braces to indicate there is a bit of indirection.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

initialCapacity

protected int initialCapacity
Store initial size for lazy init.


loadFactor

protected float loadFactor
Store load factor for lazy init.

Constructor Detail

IndirectSet

public IndirectSet()
Construct an empty IndirectSet.


IndirectSet

public IndirectSet(int initialCapacity)
Construct an empty IndirectSet with the specified initial capacity.

Parameters:
initialCapacity - the initial capacity of the set
Throws:
java.lang.IllegalArgumentException - if the specified initial capacity is negative

IndirectSet

public IndirectSet(int initialCapacity,
                   float loadFactor)
Construct an empty IndirectSet with the specified initial capacity and load factor.

Parameters:
initialCapacity - the initial capacity of the set
loadFactor - the load factor of the set
Throws:
java.lang.IllegalArgumentException - if the specified initial capacity is negative

IndirectSet

public IndirectSet(java.util.Collection c)
Construct an IndirectSet containing the elements of the specified collection.

Parameters:
c - the initial elements of the set
Method Detail

isRelationshipMaintenanceRequired

protected boolean isRelationshipMaintenanceRequired()

add

public boolean add(java.lang.Object element)
Specified by:
add in interface java.util.Collection
Specified by:
add in interface java.util.Set
See Also:
Set.add(java.lang.Object)

addAll

public boolean addAll(java.util.Collection c)
Specified by:
addAll in interface java.util.Collection
Specified by:
addAll in interface java.util.Set
See Also:
Set.addAll(java.util.Collection)

buildDelegate

protected java.util.Set buildDelegate()
INTERNAL: Return the freshly-built delegate.


clear

public void clear()
Specified by:
clear in interface java.util.Collection
Specified by:
clear in interface java.util.Set
See Also:
Set.clear()

clearDeferredChanges

public void clearDeferredChanges()
INTERNAL: clear any changes that have been deferred to instantiation. Indirect collections with change tracking avoid instantiation on add/remove.

Specified by:
clearDeferredChanges in interface IndirectCollection

clone

public java.lang.Object clone()
Overrides:
clone in class java.lang.Object
See Also:
This will result in a database query if necessary.

cloneDelegate

protected java.util.Set cloneDelegate()
INTERNAL: Clone the delegate.


contains

public boolean contains(java.lang.Object element)
Specified by:
contains in interface java.util.Collection
Specified by:
contains in interface java.util.Set
See Also:
Set.contains(java.lang.Object)

containsAll

public boolean containsAll(java.util.Collection c)
Specified by:
containsAll in interface java.util.Collection
Specified by:
containsAll in interface java.util.Set
See Also:
Set.containsAll(java.util.Collection)

equals

public boolean equals(java.lang.Object o)
Specified by:
equals in interface java.util.Collection
Specified by:
equals in interface java.util.Set
Overrides:
equals in class java.lang.Object
See Also:
Set.equals(java.lang.Object)

getDelegate

protected java.util.Set getDelegate()
INTERNAL: Check whether the contents have been read from the database. If they have not, read them and set the delegate.


getDelegateObject

public java.lang.Object getDelegateObject()
INTERNAL: Return the real collection object. This will force instantiation.

Specified by:
getDelegateObject in interface IndirectCollection

getValueHolder

public ValueHolderInterface getValueHolder()
INTERNAL: Return the valueHolder.

Specified by:
getValueHolder in interface IndirectContainer
Returns:
org.eclipse.persistence.indirection.ValueHolderInterface A representation of the valueholder * which this container uses

hasBeenRegistered

public boolean hasBeenRegistered()
INTERNAL: Return whether this IndirectSet has been registered in a UnitOfWork


hashCode

public int hashCode()
Specified by:
hashCode in interface java.util.Collection
Specified by:
hashCode in interface java.util.Set
Overrides:
hashCode in class java.lang.Object
See Also:
Set.hashCode()

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Collection
Specified by:
isEmpty in interface java.util.Set
See Also:
Set.isEmpty()

isInstantiated

public boolean isInstantiated()
Return whether the contents have been read from the database.

Specified by:
isInstantiated in interface IndirectContainer

iterator

public java.util.Iterator iterator()
Specified by:
iterator in interface java.lang.Iterable
Specified by:
iterator in interface java.util.Collection
Specified by:
iterator in interface java.util.Set
See Also:
Set.iterator()

remove

public boolean remove(java.lang.Object element)
Specified by:
remove in interface java.util.Collection
Specified by:
remove in interface java.util.Set
See Also:
Set.remove(java.lang.Object)

removeAll

public boolean removeAll(java.util.Collection c)
Specified by:
removeAll in interface java.util.Collection
Specified by:
removeAll in interface java.util.Set
See Also:
Set.removeAll(java.util.Collection)

retainAll

public boolean retainAll(java.util.Collection c)
Specified by:
retainAll in interface java.util.Collection
Specified by:
retainAll in interface java.util.Set
See Also:
Set.retainAll(java.util.Collection)

setValueHolder

public void setValueHolder(ValueHolderInterface valueHolder)
INTERNAL: Set the value holder. Note that the delegate must be cleared out.

Specified by:
setValueHolder in interface IndirectContainer

setUseLazyInstantiation

public void setUseLazyInstantiation(boolean useLazyInstantiation)
INTERNAL Set whether this collection should attempt do deal with adds and removes without retrieving the collection from the dB

Specified by:
setUseLazyInstantiation in interface IndirectCollection

size

public int size()
Specified by:
size in interface java.util.Collection
Specified by:
size in interface java.util.Set
See Also:
Set.size()

shouldUseLazyInstantiation

protected boolean shouldUseLazyInstantiation()
Return whether this collection should attempt do deal with adds and removes without retrieving the collection from the dB

Returns:

toArray

public java.lang.Object[] toArray()
Specified by:
toArray in interface java.util.Collection
Specified by:
toArray in interface java.util.Set
See Also:
Set.toArray()

toArray

public java.lang.Object[] toArray(java.lang.Object[] a)
Specified by:
toArray in interface java.util.Collection
Specified by:
toArray in interface java.util.Set
See Also:
Set.toArray(java.lang.Object[])

toString

public java.lang.String toString()
Use the delegate's #toString(); but wrap it with braces to indicate there is a bit of indirection. Don't allow this method to trigger a database read.

Overrides:
toString in class java.lang.Object
See Also:
AbstractCollection.toString()

raiseAddChangeEvent

protected void raiseAddChangeEvent(java.lang.Object element)
Raise the add change event and relationship maintainence.


raiseRemoveChangeEvent

protected void raiseRemoveChangeEvent(java.lang.Object element)
Raise the remove change event.


_persistence_getPropertyChangeListener

public java.beans.PropertyChangeListener _persistence_getPropertyChangeListener()
INTERNAL: Return the property change listener for change tracking.

Specified by:
_persistence_getPropertyChangeListener in interface ChangeTracker

hasTrackedPropertyChangeListener

public boolean hasTrackedPropertyChangeListener()
INTERNAL: Return if the collection has a property change listener for change tracking.


_persistence_setPropertyChangeListener

public void _persistence_setPropertyChangeListener(java.beans.PropertyChangeListener changeListener)
INTERNAL: Set the property change listener for change tracking.

Specified by:
_persistence_setPropertyChangeListener in interface ChangeTracker

getTrackedAttributeName

public java.lang.String getTrackedAttributeName()
INTERNAL: Return the mapping attribute name, used to raise change events.

Specified by:
getTrackedAttributeName in interface CollectionChangeTracker

setTrackedAttributeName

public void setTrackedAttributeName(java.lang.String attributeName)
INTERNAL: Set the mapping attribute name, used to raise change events. This is required if the change listener is set.

Specified by:
setTrackedAttributeName in interface CollectionChangeTracker

getRemovedElements

public java.util.Collection getRemovedElements()
INTERNAL: Return the elements that have been removed before instantiation.

Specified by:
getRemovedElements in interface IndirectCollection

getAddedElements

public java.util.Collection getAddedElements()
INTERNAL: Return the elements that have been added before instantiation.

Specified by:
getAddedElements in interface IndirectCollection

hasAddedElements

public boolean hasAddedElements()
INTERNAL: Return if any elements that have been added before instantiation.


hasRemovedElements

public boolean hasRemovedElements()
INTERNAL: Return if any elements that have been removed before instantiation.


hasDeferredChanges

public boolean hasDeferredChanges()
INTERNAL: Return if any elements that have been added or removed before instantiation.

Specified by:
hasDeferredChanges in interface IndirectCollection

shouldAvoidInstantiation

protected boolean shouldAvoidInstantiation()
INTERNAL: Return if add/remove should trigger instantiation or avoid. Current instantiation is avoided is using change tracking.


EclipseLink 2.4.2, build 'v20130514-5956486' API Reference