Class FilterDelegate<T>
- Type Parameters:
T
- type of the root persistent object
- All Implemented Interfaces:
PersistentObjectDelegate<T>
PersistentObjectDelegate
implementations that wrap a nested delegate.
All methods in this class forward to the nested delegate.-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionMake a deep copy of the given object.deserialize
(Source source) Deserialize a root object graph from XML.Get the default value for the root object graph.void
handleWritebackException
(PersistentObject<T> pobj, Throwable t) Handle an exception thrown during a write-back attempt.boolean
isSameGraph
(T root1, T root2) Attempt to determine whether two object graphs are identical.void
Serialize a root object graph into XML.Validate the given object.
-
Field Details
-
nested
-
-
Constructor Details
-
FilterDelegate
Constructor.- Parameters:
nested
- nested delegate to wrap- Throws:
IllegalArgumentException
- ifnested
is null
-
-
Method Details
-
serialize
Description copied from interface:PersistentObjectDelegate
Serialize a root object graph into XML.Note that this method effectively defines what is contained in the object graph rooted at
obj
.This method must not modify
obj
or any other object in its object graph.- Specified by:
serialize
in interfacePersistentObjectDelegate<T>
- Parameters:
obj
- object to serialize; must not be modifiedresult
- XML destination- Throws:
IOException
- if an I/O error occurs
-
deserialize
Description copied from interface:PersistentObjectDelegate
Deserialize a root object graph from XML.This method also presents an opportunity to (re)construct any indexes used for optimizing queries into the root object graph.
- Specified by:
deserialize
in interfacePersistentObjectDelegate<T>
- Parameters:
source
- XML source- Returns:
- deserialized object
- Throws:
IOException
- if an I/O error occurs
-
copy
Description copied from interface:PersistentObjectDelegate
Make a deep copy of the given object.For correct behavior, this behavior of this method should be equivalent to a serialization followed by a deserialization.
This method must not modify
original
or any other object in its object graph.- Specified by:
copy
in interfacePersistentObjectDelegate<T>
- Parameters:
original
- original object- Returns:
- deep copy of the object graph rooted at
original
-
isSameGraph
Description copied from interface:PersistentObjectDelegate
Attempt to determine whether two object graphs are identical.This optional method is an optimization to detect invocations to
PersistentObject.setRoot()
where the new object graph and the old object graph are identical. In such cases, no change is applied, the version number does not increase, and no notifications are sent.It is always safe and correct for this method to return false. If it returns true, then it must be the case that the two object graphs are identical.
This method must not modify
oldRoot
ornewRoot
or any other object in their object respective graphs.- Specified by:
isSameGraph
in interfacePersistentObjectDelegate<T>
- Parameters:
root1
- root of first object graphroot2
- root of second object graph- Returns:
- true if
root1
androot2
represent equal object graphs
-
validate
Description copied from interface:PersistentObjectDelegate
Validate the given object.This method must not modify
obj
or any other object in its object graph.- Specified by:
validate
in interfacePersistentObjectDelegate<T>
- Parameters:
obj
- root object- Returns:
- set of zero or more constraint violations
-
handleWritebackException
Description copied from interface:PersistentObjectDelegate
Handle an exception thrown during a write-back attempt.ThreadDeath
exceptions are not passed to this method, but all others are.- Specified by:
handleWritebackException
in interfacePersistentObjectDelegate<T>
- Parameters:
pobj
- the instance that encountered the exceptiont
- the exception thrown
-
getDefaultValue
Description copied from interface:PersistentObjectDelegate
Get the default value for the root object graph. This method is invoked at startup when the persistent file does not exist. If this method returns null, then an empty start occurs unless thePersistentObject
object is configured to disallow them, in which case an exception is thrown.- Specified by:
getDefaultValue
in interfacePersistentObjectDelegate<T>
- Returns:
- root object initial value, or null if there is no default value
-