Class WeakReferenceList<T>
- java.lang.Object
-
- org.pentaho.reporting.engine.classic.core.util.WeakReferenceList<T>
-
- All Implemented Interfaces:
Serializable
,Cloneable
public abstract class WeakReferenceList<T> extends Object implements Serializable, Cloneable
The WeakReference list usesjava.lang.ref.WeakReference
s to store its contents. In contrast to the WeakHashtable, this list knows how to restore missing content, so that garbage collected elements can be restored when they are accessed. By default this list can contain 25 elements, where the first element is stored using a strong reference, which is not garbage collected. Restoring the elements is not implemented, concrete implementations will have to override therestoreChild(int)
method. ThegetMaxChildCount
method defines the maxmimum number of children in the list. When more thanmaxChildCount
elements are contained in this list, add will always return false to indicate that adding the element failed. To customize the list, override createReference to create a different kind of reference. This list is able to add or replace elements, but inserting or removing of elements is not possible.- Author:
- Thomas Morgner
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
WeakReferenceList(int maxChildCount)
Creates a new weak reference list.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
add(T rs)
Adds the element to the list.protected Object
clone()
Creates and returns a copy of this object.Object
get(int index)
Returns the child stored at the given index.protected int
getChildPos(int index)
Returns the internal storage position for the child.protected Object
getMaster()
Returns the master element of this list.protected int
getMaxChildCount()
Returns the maximum number of children in this list.T
getRaw(int index)
int
getSize()
Returns the size of the list.protected boolean
isMaster(int index)
Returns true, if the given index denotes a master index of this list.protected abstract T
restoreChild(int index)
Attempts to restore the child stored on the given index.void
set(T report, int index)
Replaces the child stored at the given index with the new child which can be null.protected void
setMaster(T master)
-
-
-
Method Detail
-
getMaxChildCount
protected final int getMaxChildCount()
Returns the maximum number of children in this list.- Returns:
- the maximum number of elements in this list.
-
getMaster
protected Object getMaster()
Returns the master element of this list. The master element is the element stored by a strong reference and cannot be garbage collected.- Returns:
- the master element
-
setMaster
protected void setMaster(T master)
-
restoreChild
protected abstract T restoreChild(int index)
Attempts to restore the child stored on the given index.- Parameters:
index
- the index.- Returns:
- null if the child could not be restored or the restored child.
-
get
public Object get(int index)
Returns the child stored at the given index. If the child has been garbage collected, it gets restored using the restoreChild function.- Parameters:
index
- the index.- Returns:
- the object.
-
getRaw
public T getRaw(int index)
-
set
public void set(T report, int index)
Replaces the child stored at the given index with the new child which can be null.- Parameters:
report
- the object.index
- the index.
-
add
public boolean add(T rs)
Adds the element to the list. If the maximum size of the list is exceeded, this function returns false to indicate that adding failed.- Parameters:
rs
- the object.- Returns:
- true, if the object was successfully added to the list, false otherwise
-
isMaster
protected boolean isMaster(int index)
Returns true, if the given index denotes a master index of this list.- Parameters:
index
- the index.- Returns:
- true if the index is a master index.
-
getChildPos
protected int getChildPos(int index)
Returns the internal storage position for the child.- Parameters:
index
- the index.- Returns:
- the internal storage index.
-
getSize
public int getSize()
Returns the size of the list.- Returns:
- the size.
-
clone
protected Object clone() throws CloneNotSupportedException
Creates and returns a copy of this object. The precise meaning of "copy" may depend on the class of the object. The general intent is that, for any object x, the expression:x.clone() != x
x.clone().getClass() == x.getClass()
x.clone().equals( x )
- Overrides:
clone
in classObject
- Returns:
- a clone of this instance.
- Throws:
CloneNotSupportedException
- if the object's class does not support theCloneable
interface. Subclasses that override theclone
method can also throw this exception to indicate that an instance cannot be cloned.- See Also:
Cloneable
-
-