| java.lang.Object java.beans.Encoder
All known Subclasses: java.beans.XMLEncoder,
Encoder | public class Encoder (Code) | | The Encoder , together with PersistenceDelegate
s, can encode an object into a series of java statements. By executing these
statements, a new object can be created and it will has the same state as the
original object which has been passed to the encoder. Here "has the same
state" means the two objects are indistinguishable from their public API.
The Encoder and PersistenceDelegate s do this
by creating copies of the input object and all objects it references. The
copy process continues recursively util every object in the object graph has
its new copy and the new version has the same state as the old version. All
statements used to create those new objects and executed on them during the
process form the result of encoding.
|
Constructor Summary | |
public | Encoder() Construct a new encoder. |
Method Summary | |
void | clear() Clear all the new objects have been created. | public Object | get(Object old) Gets the new copy of the given old object. | public ExceptionListener | getExceptionListener() Returns the exception listener of this encoder.
An encoder always have a non-null exception listener. | public PersistenceDelegate | getPersistenceDelegate(Class> type) Returns a PersistenceDelegate for the given class type.
The PersistenceDelegate is determined as following:
- If a
PersistenceDelegate has been registered by
calling setPersistenceDelegate for the given type, it is
returned.
- If the given type is an array class, a special
PersistenceDelegate for array types is returned.
- If the given type is a proxy class, a special
PersistenceDelegate for proxy classes is returned.
Introspector is used to check the bean descriptor
value "persistenceDelegate". | public Object | remove(Object old) Remvoe the existing new copy of the given old object. | public void | setExceptionListener(ExceptionListener listener) Sets the exception listener of this encoder. | public void | setPersistenceDelegate(Class> type, PersistenceDelegate delegate) Register the PersistenceDelegate of the specified type. | public void | writeExpression(Expression oldExp) Write an expression of old objects.
The implementation first check the return value of the expression. | protected void | writeObject(Object o) Encode the given object into a series of statements and expressions. | public void | writeStatement(Statement oldStat) Write a statement of old objects.
A new statement is created by using the new versions of the target and
arguments. |
Encoder | public Encoder()(Code) | | Construct a new encoder.
|
clear | void clear()(Code) | | Clear all the new objects have been created.
|
get | public Object get(Object old)(Code) | | Gets the new copy of the given old object.
Strings are special objects which have their new copy by default, so if
the old object is a string, it is returned directly.
Parameters: old - an old object the new copy of the given old object, or null if there is notone. |
getExceptionListener | public ExceptionListener getExceptionListener()(Code) | | Returns the exception listener of this encoder.
An encoder always have a non-null exception listener. A default exception
listener is used when the encoder is created.
the exception listener of this encoder |
getPersistenceDelegate | public PersistenceDelegate getPersistenceDelegate(Class> type)(Code) | | Returns a PersistenceDelegate for the given class type.
The PersistenceDelegate is determined as following:
- If a
PersistenceDelegate has been registered by
calling setPersistenceDelegate for the given type, it is
returned.
- If the given type is an array class, a special
PersistenceDelegate for array types is returned.
- If the given type is a proxy class, a special
PersistenceDelegate for proxy classes is returned.
Introspector is used to check the bean descriptor
value "persistenceDelegate". If one is set, it is returned.
- If none of the above applies, the
DefaultPersistenceDelegate is returned.
Parameters: type - a class type a PersistenceDelegate for the given class type |
remove | public Object remove(Object old)(Code) | | Remvoe the existing new copy of the given old object.
Parameters: old - an old object the removed new version of the old object, or null if there isnot one |
setExceptionListener | public void setExceptionListener(ExceptionListener listener)(Code) | | Sets the exception listener of this encoder.
Parameters: listener - the exception listener to set |
setPersistenceDelegate | public void setPersistenceDelegate(Class> type, PersistenceDelegate delegate)(Code) | | Register the PersistenceDelegate of the specified type.
Parameters: type - Parameters: delegate - |
writeExpression | public void writeExpression(Expression oldExp)(Code) | | Write an expression of old objects.
The implementation first check the return value of the expression. If
there exists a new version of the object, simply return.
A new expression is created using the new versions of the target and the
arguments. If any of the old objects do not have its new version yet,
writeObject() is called to create the new version.
The new expression is then executed to obtained a new copy of the old
return value.
Call writeObject() with the old return value, so that more
statements will be executed on its new version to change it into the same
state as the old value.
Parameters: oldExp - the expression to write. The target, arguments, and returnvalue of the expression are all old objects. |
writeObject | protected void writeObject(Object o)(Code) | | Encode the given object into a series of statements and expressions.
The implementation simply finds the PersistenceDelegate
responsible for the object's class, and delegate the call to it.
Parameters: o - the object to encode |
writeStatement | public void writeStatement(Statement oldStat)(Code) | | Write a statement of old objects.
A new statement is created by using the new versions of the target and
arguments. If any of the objects do not have its new copy yet,
writeObject() is called to create one.
The new statement is then executed to change the state of the new object.
Parameters: oldStat - a statement of old objects |
|
|