javax.media.jai
Class DeferredData
java.lang.Object
|
+--java.util.Observable
|
+--javax.media.jai.DeferredData
- All Implemented Interfaces:
- Serializable
- Direct Known Subclasses:
- DeferredProperty
- public abstract class DeferredData
- extends Observable
- implements Serializable
Class to be used as a wrapper for data which will be calculated
at a later time. For example, an instance of a subclass of this
class may be passed as a parameter in the ParameterBlock
set on a RenderedOp
node. The data wrapped by the
DeferredData
object will not however actually be
requested until the node is rendered.
- Since:
- JAI 1.1
- See Also:
DeferredProperty
,
RenderedOp
, Serialized Form
Field Summary |
protected Object |
data
The data wrapped by this class. |
protected Class |
dataClass
The class of the wrapped data. |
Constructor Summary |
protected |
DeferredData(Class dataClass)
Creates a DeferredData wrapper for an object of the
indicated class. |
Method Summary |
protected abstract Object |
computeData()
Computes the value of the data object wrapped by this object. |
Object |
getData()
Returns the object wrapped by this DeferredData . |
Class |
getDataClass()
Returns the class of the object wrapped by this DeferredData. |
boolean |
isValid()
Whether the data value has already been computed. |
protected void |
setData(Object data)
Sets the instance variable associated with the data to the supplied
parameter. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
dataClass
protected Class dataClass
- The class of the wrapped data.
data
protected transient Object data
- The data wrapped by this class. This field is marked
transient
so that subclasses are obligated to provide
specific serialization methods if they desire that this field be
serialized.
DeferredData
protected DeferredData(Class dataClass)
- Creates a
DeferredData
wrapper for an object of the
indicated class. The parameter must be non-null
or an
IllegalArgumentException
will be thrown.
- Throws:
IllegalArgumentException
- if dataClass
is
null
.
getDataClass
public Class getDataClass()
- Returns the class of the object wrapped by this DeferredData.
isValid
public boolean isValid()
- Whether the data value has already been computed.
- Returns:
true
if and inly if the internal data value is
non-null
, i.e., has already been computed.
computeData
protected abstract Object computeData()
- Computes the value of the data object wrapped by this object.
The returned object must be an instance of a class assignable
to the class specified at construction.
getData
public final Object getData()
- Returns the object wrapped by this
DeferredData
. If
the data have not yet been computed, computeData()
will be invoked to provide the data. If computeData()
is invoked, then setData()
will be invoked with
its parameter set to the value returned by computeData()
.
setData
protected final void setData(Object data)
- Sets the instance variable associated with the data to the supplied
parameter. If the parameter is non-
null
and not an
instance of the class specified at construction, an
IllegalArgumentException
will be thrown. If the
supplied parameter differs from the current data value, then
setChanged()
will be invoked and
notifyObservers()
will be called with its argument set
to the previous value of the data object. This implies that the
update()
method of any registered Observer
s
will be invoked with the Observable
parameter set to this
DeferredData
object and its Object
parameter
set to the previous value of the data
field of this
DeferredData
instance. The current value of the
object can be retrieved by an Observer
by casting the
Observable
parameter of update()
to
DeferredData
and invoking getData()
. To
avoid provoking computation of deferred data by calling
getData()
, isValid()
could first be called
to determine whether data
is non-null
.
If an Observer
detects that the data of the observed
DeferredData
object is invalid, i.e., null
,
then this indicates that the data should be re-requested by invoking
getData()
.
- Throws:
IllegalArgumentException
- if data
is
non-null
and not an instance of the class
specified at construction.