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 Observers
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.