com.googlecode.openbeans
Class DefaultPersistenceDelegate

java.lang.Object
  extended by com.googlecode.openbeans.PersistenceDelegate
      extended by com.googlecode.openbeans.DefaultPersistenceDelegate

public class DefaultPersistenceDelegate
extends PersistenceDelegate

Default PersistenceDelegate for normal classes. The instances of this class are used when other customized PersistenceDelegate is not set in the encoders for a particular type.

This PersistenceDelegate assumes that the bean to be made persistent has a default constructor that takes no parameters or a constructor that takes some properties as its parameters. Only the properties that can be got or set based on the knowledge gained through an introspection will be made persistent. In the case that a bean is constructed with some properties, the value of these properties should be available via the conventional getter method.

See Also:
Encoder

Constructor Summary
DefaultPersistenceDelegate()
          Constructs a DefaultPersistenceDelegate instance that supports the persistence of a bean which has a default constructor.
DefaultPersistenceDelegate(String[] propertyNames)
          Constructs a DefaultPersistenceDelegate instance that supports the persistence of a bean which is constructed with some properties.
 
Method Summary
protected  void initialize(Class<?> type, Object oldInstance, Object newInstance, Encoder enc)
          Initializes the new instance in the new environment so that it becomes equivalent with the old one, meanwhile recording this process in the encoder.
protected  Expression instantiate(Object oldInstance, Encoder enc)
          Returns an expression that represents a call to the bean's constructor.
protected  boolean mutatesTo(Object o1, Object o2)
          Determines whether one object mutates to the other object.
 
Methods inherited from class com.googlecode.openbeans.PersistenceDelegate
writeObject
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultPersistenceDelegate

public DefaultPersistenceDelegate()
Constructs a DefaultPersistenceDelegate instance that supports the persistence of a bean which has a default constructor.


DefaultPersistenceDelegate

public DefaultPersistenceDelegate(String[] propertyNames)
Constructs a DefaultPersistenceDelegate instance that supports the persistence of a bean which is constructed with some properties.

Parameters:
propertyNames - the name of the properties that are taken as parameters by the bean's constructor
Method Detail

initialize

protected void initialize(Class<?> type,
                          Object oldInstance,
                          Object newInstance,
                          Encoder enc)
Initializes the new instance in the new environment so that it becomes equivalent with the old one, meanwhile recording this process in the encoder.

This is done by inspecting each property of the bean. The property value from the old bean instance and the value from the new bean instance are both retrieved and examined to see whether the latter mutates to the former, and if not, issue a call to the write method to set the equivalent value for the new instance. Exceptions occured during this process are reported to the exception listener of the encoder.

Overrides:
initialize in class PersistenceDelegate
Parameters:
type - the type of the bean
oldInstance - the original bean object to be recorded
newInstance - the simmulating new bean object to be initialized
enc - the encoder to write the outputs to

instantiate

protected Expression instantiate(Object oldInstance,
                                 Encoder enc)
Returns an expression that represents a call to the bean's constructor. The constructor may take zero or more parameters, as specified when this DefaultPersistenceDelegate is constructed.

Specified by:
instantiate in class PersistenceDelegate
Parameters:
oldInstance - the old instance
enc - the encoder that wants to record the old instance
Returns:
an expression for instantiating an object of the same type as the old instance

mutatesTo

protected boolean mutatesTo(Object o1,
                            Object o2)
Determines whether one object mutates to the other object. If this DefaultPersistenceDelegate is constructed with one or more property names, and the class of o1 overrides the "equals(Object)" method, then o2 is considered to mutate to o1 if o1 equals to o2. Otherwise, the result is the same as the definition in PersistenceDelegate.

Overrides:
mutatesTo in class PersistenceDelegate
Parameters:
o1 - one object
o2 - the other object
Returns:
true if second object mutates to the first object, otherwise false


Copyright © 2013. All Rights Reserved.