com.arjuna.ats.arjuna
Class DisposeRecord

java.lang.Object
  extended bycom.arjuna.ats.arjuna.StateManager
      extended bycom.arjuna.ats.arjuna.coordinator.AbstractRecord
          extended bycom.arjuna.ats.arjuna.RecoveryRecord
              extended bycom.arjuna.ats.arjuna.PersistenceRecord
                  extended bycom.arjuna.ats.arjuna.CadaverRecord
                      extended bycom.arjuna.ats.arjuna.DisposeRecord

public class DisposeRecord
extends CadaverRecord


Field Summary
 
Fields inherited from class com.arjuna.ats.arjuna.PersistenceRecord
classicPrepare, MAX_OBJECT_SIZE, objectAddr, shadowMade, state, topLevelState
 
Fields inherited from class com.arjuna.ats.arjuna.StateManager
modifyingActions, objectName, smAttributes, usingActions
 
Constructor Summary
protected DisposeRecord()
           
  DisposeRecord(ObjectStore objStore, StateManager sm)
           
 
Method Summary
 ClassName className()
          The ClassName representation of this class.
static AbstractRecord create()
          Create a new instance of the CadaverRecord, using the default constructor.
 boolean doSave()
          Override the AbstractRecord.doSave.
 void finalize()
          Tidy-up the instance.
 int nestedAbort()
          The nested transaction has aborted.
 int nestedCommit()
          nestedCommit does nothing since the passing of the state up to the parent action is handled by the record list merging system.
 int nestedPrepare()
          The nested transaction is preparing.
 void print(java.io.PrintWriter strm)
          Override AbstractRecord.print to write specific information to the specified stream.
 boolean propagateOnAbort()
          Override default AbstractRecord method.
 boolean restore_state(InputObjectState os, int ot)
          During recovery, the transaction log is given to the recovery system and it will recreate a transaction instance to perform necessary recovery actions.
 boolean save_state(OutputObjectState os, int ot)
          When the transaction is required to make the intentions list persistent, it scans the list and asks each record whether or not it requires state to be saved (by calling doSave).
 boolean shouldAdd(AbstractRecord a)
          Should we add the record presented to the intentions list?
 boolean shouldAlter(AbstractRecord a)
          Should we alter the current record with the one presented?
 boolean shouldMerge(AbstractRecord a)
          Overrides AbstractRecord.shouldMerge
 boolean shouldReplace(AbstractRecord a)
          Overrides AbstractRecord.shouldReplace
 int topLevelAbort()
          The nested transaction has aborted.
 int topLevelCommit()
          At topLevelCommit we remove the state from the object store.
 int topLevelPrepare()
          At topLevelPrepare write uncommitted version into object store.
 java.lang.String type()
          The type of the class - may be used to save information in an hierarchical manner in the object store.
 int typeIs()
          The type of the record.
 
Methods inherited from class com.arjuna.ats.arjuna.CadaverRecord
merge
 
Methods inherited from class com.arjuna.ats.arjuna.PersistenceRecord
alter, forgetAction, setValue, shadowForced, topLevelCleanup, value
 
Methods inherited from class com.arjuna.ats.arjuna.coordinator.AbstractRecord
create, equals, forgetHeuristic, getNext, getPrevious, getTypeOfObject, greaterThan, lessThan, nestedCleanup, nestedOnePhaseCommit, order, propagateOnCommit, replace, setNext, setPrevious, topLevelOnePhaseCommit
 
Methods inherited from class com.arjuna.ats.arjuna.StateManager
activate, activate, attributes, cleanup, deactivate, deactivate, deactivate, destroy, disable, forgetAction, get_uid, getMutex, getStore, getStoreRoot, loadObjectState, lockMutex, modified, ObjectType, packHeader, persist, rememberAction, setStatus, setupStore, setupStore, status, terminate, tryLockMutex, unlockMutex, unpackHeader
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DisposeRecord

public DisposeRecord(ObjectStore objStore,
                     StateManager sm)

DisposeRecord

protected DisposeRecord()
Method Detail

finalize

public void finalize()
Description copied from class: CadaverRecord
Tidy-up the instance.

Overrides:
finalize in class CadaverRecord

propagateOnAbort

public boolean propagateOnAbort()
Description copied from class: CadaverRecord
Override default AbstractRecord method. CadaverRecords are propagated regardless of the termination condition.

Overrides:
propagateOnAbort in class CadaverRecord
Returns:
true

typeIs

public int typeIs()
Description copied from class: CadaverRecord
The type of the record.

Overrides:
typeIs in class CadaverRecord
Returns:
RecordType.PERSISTENT
See Also:
RecordType

className

public ClassName className()
Description copied from class: CadaverRecord
The ClassName representation of this class.

Overrides:
className in class CadaverRecord

nestedAbort

public int nestedAbort()
Description copied from class: CadaverRecord
The nested transaction has aborted. The record will invalidate any new state.

Overrides:
nestedAbort in class CadaverRecord

nestedCommit

public int nestedCommit()
Description copied from class: com.arjuna.ats.arjuna.RecoveryRecord
nestedCommit does nothing since the passing of the state up to the parent action is handled by the record list merging system. In fact since nestedPrepare returns PREPARE_READONLY this function should never actaully be called


nestedPrepare

public int nestedPrepare()
Description copied from class: CadaverRecord
The nested transaction is preparing. If there is any new state for the object being removed, and that state is valid, then this record will call nestedPrepare on the object being removed. If we have no new state then we cannot commit and must force an abort. Do this by failing the prepare phase.

Overrides:
nestedPrepare in class CadaverRecord

topLevelAbort

public int topLevelAbort()
Description copied from class: CadaverRecord
The nested transaction has aborted. Invalidate any new state.

Overrides:
topLevelAbort in class CadaverRecord

topLevelCommit

public int topLevelCommit()
At topLevelCommit we remove the state from the object store.

Overrides:
topLevelCommit in class CadaverRecord

topLevelPrepare

public int topLevelPrepare()
Description copied from class: CadaverRecord
At topLevelPrepare write uncommitted version into object store. Cannot use inherited version since that assumes object is alive instead talk directly to the object store itself.

Overrides:
topLevelPrepare in class CadaverRecord

print

public void print(java.io.PrintWriter strm)
Description copied from class: CadaverRecord
Override AbstractRecord.print to write specific information to the specified stream.

Overrides:
print in class CadaverRecord

doSave

public boolean doSave()
Description copied from class: CadaverRecord
Override the AbstractRecord.doSave.

Overrides:
doSave in class CadaverRecord
Returns:
true if the object being removed is a persistent object (RecordType.PERSISTENT). false otherwise.
See Also:
RecordType

save_state

public boolean save_state(OutputObjectState os,
                          int ot)
Description copied from class: AbstractRecord
When the transaction is required to make the intentions list persistent, it scans the list and asks each record whether or not it requires state to be saved (by calling doSave). If the answer is yes, then save_state is called and the record instance must save enough information to enable it to be restored from that state later. The basic AbstractRecord save_state will save common data that is required by the base class during recovery.

Overrides:
save_state in class PersistenceRecord

restore_state

public boolean restore_state(InputObjectState os,
                             int ot)
Description copied from class: AbstractRecord
During recovery, the transaction log is given to the recovery system and it will recreate a transaction instance to perform necessary recovery actions. This transaction will recreate the intentions list and give each recreated AbstractRecord the state that that was saved during transaction persistence. The base class will restore information that it needs from the log.

Overrides:
restore_state in class PersistenceRecord

type

public java.lang.String type()
Description copied from class: CadaverRecord
The type of the class - may be used to save information in an hierarchical manner in the object store.

Overrides:
type in class CadaverRecord

shouldAdd

public boolean shouldAdd(AbstractRecord a)
Description copied from class: AbstractRecord
Should we add the record presented to the intentions list?


shouldMerge

public boolean shouldMerge(AbstractRecord a)
Description copied from class: CadaverRecord
Overrides AbstractRecord.shouldMerge

Overrides:
shouldMerge in class CadaverRecord
Returns:
true if this instance and the parameter have the same id (order()) and the parameter is either persistent or recoverable. false otherwise.
See Also:
RecordType

shouldReplace

public boolean shouldReplace(AbstractRecord a)
Description copied from class: CadaverRecord
Overrides AbstractRecord.shouldReplace

Overrides:
shouldReplace in class CadaverRecord
Returns:
true if this instance and the parameter have the same id (order()) and the parameter is either persistent or recoverable. false otherwise.
See Also:
RecordType

shouldAlter

public boolean shouldAlter(AbstractRecord a)
Description copied from class: AbstractRecord
Should we alter the current record with the one presented?


create

public static AbstractRecord create()
Description copied from class: CadaverRecord
Create a new instance of the CadaverRecord, using the default constructor. Have to return as a AbstractStore because of inheritence.