org.castor.persist.resolver

Interface ResolverStrategy

public interface ResolverStrategy

Strategy pattern to allow for common operations related to field resolution based upon the type of the field.

Since: 0.9.9

Author: Werner Guttmann

Method Summary
Objectcreate(TransactionContext tx, Object object)
Create an object of the base class with specified identity into the persistence storage.
voidexpireCache(TransactionContext tx, Object field)
Inspect the fields stored in the object passed as an argument for contained objects.
voidload(TransactionContext tx, OID oid, ProposedObject proposedObject, AccessMode suggestedAccessMode, Object field)
Load an object with specified identity from the persistent storage.
booleanmarkCreate(TransactionContext tx, OID oid, Object object)
Walk the object model and mark object that should be created.
voidmarkDelete(TransactionContext tx, Object object, Object field)
Prepare to delete an object with the specified identity.
ObjectpostCreate(TransactionContext tx, OID oid, Object object, Object field, Object createdId)
Called after successful creation of an object of the base class.
UpdateFlagspreStore(TransactionContext tx, OID oid, Object object, int timeout, Object field)
Check the object for modification.
UpdateAndRemovedFlagsremoveRelation(TransactionContext tx, Object object, ClassMolder relatedMolder, Object relatedObject)
Remove the reference of a related object from an object of the base class.
voidrevertObject(TransactionContext tx, OID oid, Object object, Object field)
Revert the object back to the state of begining of the transaction If the object is loaded, it will be revert as it was loaded.
Objectstore(TransactionContext tx, Object object, Object field)
Store a data object into the persistent storage of the base class of this ClassMolder.
voidupdate(TransactionContext tx, OID oid, Object object, AccessMode suggestedAccessMode, Object field)
Update the object which loaded or created in the other transaction to the persistent storage.
ObjectupdateCache(TransactionContext tx, OID oid, Object object)
Update the dirty checking cache.

Method Detail

create

public Object create(TransactionContext tx, Object object)
Create an object of the base class with specified identity into the persistence storage.

Parameters: tx transaction in action object the object to be created

Returns: the identity of the object

expireCache

public void expireCache(TransactionContext tx, Object field)
Inspect the fields stored in the object passed as an argument for contained objects. Request an expireCache for each contained object.

Parameters: tx The TransactionContext field The field value as returned by the SQLEngine

Throws: PersistenceException If it is not possible to successfully complete this method.

load

public void load(TransactionContext tx, OID oid, ProposedObject proposedObject, AccessMode suggestedAccessMode, Object field)
Load an object with specified identity from the persistent storage.

Parameters: tx the TransactionContext in action oid the object identity of the desired object proposedObject Object holder storing information about assumed and actual object instances suggestedAccessMode the acessMode for the object field The field value as returned by the SQLEngine

Throws: PersistenceException If it is not possible to successfully complete this method.

markCreate

public boolean markCreate(TransactionContext tx, OID oid, Object object)
Walk the object model and mark object that should be created.

Parameters: tx transaction in action oid the object identity of the object to be created. object the object to be created

Returns: true if there's objects that should be created

markDelete

public void markDelete(TransactionContext tx, Object object, Object field)
Prepare to delete an object with the specified identity. If any sub-object should be deleted along with the target object, it should be deleted by this method.

Parameters: tx - transaction in action object - the target object field The field value as returned by the SQLEngine

Throws: PersistenceException If it is not possible to successfully complete this method.

postCreate

public Object postCreate(TransactionContext tx, OID oid, Object object, Object field, Object createdId)
Called after successful creation of an object of the base class.

Parameters: tx transaction in action oid the object identity of the object to be created. object the object to be created field The field value as returned by the SQLEngine createdId ???

Returns: the identity of the object

preStore

public UpdateFlags preStore(TransactionContext tx, OID oid, Object object, int timeout, Object field)
Check the object for modification. If dpendent object is dereferenced, it method will remove the object thru the transaction. If an related object is dereferenced, it method will make sure the formally object will be dereferenced from the other side as well. This method is called in prepare (for commit) state of the transaction. This method indicates if the object needed to be persist or cache should be update using TransactionContext.markDelete.

Parameters: tx transaction in action oid the object identity of the object object the data object to be checked timeout timeout of updating the lock if needed field The field value as returned by the SQLEngine

Returns: true if the object is modified

Throws: PersistenceException If it is not possible to successfully complete this method.

removeRelation

public UpdateAndRemovedFlags removeRelation(TransactionContext tx, Object object, ClassMolder relatedMolder, Object relatedObject)
Remove the reference of a related object from an object of the base class.

If the related object is PersistanceCapable, the field will be set null. If the related object is a Collection, then the related object will be removed from the Collection.

If any changed occured, transactionContext.markModified will be called, to indicate the object is modified.

It method will iterate thur all of the object's field and try to remove all the occurrence.

Parameters: tx the TransactionContext of the transaction in action object the target object of the base type of this ClassMolder relatedMolder the ClassMolder of the related object to be removed from the object relatedObject the object to be removed

Returns: Various flags related to updating/removing object instances.

revertObject

public void revertObject(TransactionContext tx, OID oid, Object object, Object field)
Revert the object back to the state of begining of the transaction If the object is loaded, it will be revert as it was loaded. If the object is created, it will be revert as it was just created.

Parameters: tx - transaction in action oid - the object identity of the target object field The field value as returned by the SQLEngine object - the target object

Throws: PersistenceException If it is not possible to successfully complete this method.

store

public Object store(TransactionContext tx, Object object, Object field)
Store a data object into the persistent storage of the base class of this ClassMolder.

Parameters: tx Transaction in action object the object to be stored field The field value as returned by the SQLEngine

update

public void update(TransactionContext tx, OID oid, Object object, AccessMode suggestedAccessMode, Object field)
Update the object which loaded or created in the other transaction to the persistent storage.

Parameters: tx Transaction in action oid the object identity of the stored object object the object to be stored suggestedAccessMode Suggested access mode field The field value as returned by the SQLEngine

Throws: PersistenceException If it is not possible to successfully complete this method.

updateCache

public Object updateCache(TransactionContext tx, OID oid, Object object)
Update the dirty checking cache. This method is called after a transaction completed successfully.

Parameters: tx - transaction in action oid - object's identity of the target object object - the target object

Returns: The object tha twas stored in the cache previously.

Intalio Inc. (C) 1999-2004. All rights reserved http://www.intalio.com