edu.mit.ai.psg.traveler
Class TraceRecorderDefault

java.lang.Object
  |
  +--edu.mit.ai.psg.traveler.TraceRecorderDefault
Direct Known Subclasses:
TraceRecorderObservable

public class TraceRecorderDefault
extends Object
implements TraceRecorder

TraceRecorderDefault provides a default implementation for TraceRecorder.

See Also:
Trace, TraceRecorder

Constructor Summary
TraceRecorderDefault()
           
 
Method Summary
 void addEntryToBiography(SynchronizationRecord record)
          add record to biography of target of synchronization
 void addExitToBiography(SynchronizationRecord record)
          add record to biography of target of synchronization
 SynchronizationRecord beganSynchronization(Object target, Member inMember)
          Creates and links a record for a synchronized region.
 ActivityRecord beginning(String activityString)
          Creates and links a record for an activity (e.g., a block) described by string.
 void clearBiographies()
          do not call while recording in progress
 void clearBiography(Object target)
          clear biography of target.
 void clearSynchronizationHolders()
          do not call while recording in progress
 ActivityRecord doing(ActivityRecord record)
          convenience function for entering followed immediately by exitting
 ActivityRecord doing(String activityString)
          Convenience function for beginning followed immedately by exitting.
 SynchronizationRecord enteredSynchronization(SynchronizationRecord record)
          If record is not the current activity, call entering(record).
 ActivityRecord entering(ActivityRecord record)
          adds record as child of current record, and sets current record to record
 ActivityRecord exitting(ActivityRecord record)
          pops record off current record stack, as well as any records above it
 List getBiography(Object target)
          return a List of activities recorded for this target, e.g., traced calls on synchronized methods
 ActivityRecord getCurrentRecord()
          get top record on activity stack; may be inherited from thread which created the current thread.
 SynchronizationRecord getSynchronizationHolder(Object target)
          return entry record of activity currently holding synchronization on target or null if none.
 ActivityRecord getThreadOutermostRecord()
          get bottom record on activity stack which is specific to this thread, or null.
 CallRecord invoking(Object target, Member member, Object[] parameters)
          For recording a call from caller: Should be followed by call to returningVoid(edu.mit.ai.psg.traveler.CallRecord), returning(edu.mit.ai.psg.traveler.CallRecord, java.lang.Object), or throwing(edu.mit.ai.psg.traveler.CallRecord, java.lang.Throwable) to record completion of call.
protected  CallRecord makeCallRecord(Object target, Member member, Object[] parameters)
          Creates a CallRecordDefault
protected  ActivityRecord makeStringRecord(String string)
          Creates a StringRecord
protected  SynchronizationRecord makeSynchronizationRecord(Object target, Member inMember)
          Creates a SynchronizationRecordDefault
 CallRecord received(Object target, Member member, Object[] parameters)
          For recording a call from callee: Should be followed by call to returningVoid(edu.mit.ai.psg.traveler.CallRecord), returning(edu.mit.ai.psg.traveler.CallRecord, java.lang.Object), or throwing(edu.mit.ai.psg.traveler.CallRecord, java.lang.Throwable) to record completion of call.
 Object returning(CallRecord record, Object value)
          Record value in record, and make record parent current activity in this thread (see exitting(edu.mit.ai.psg.traveler.ActivityRecord))
 void returningVoid(CallRecord record)
          record completion, and make record parent current activity in this thread (see exitting(edu.mit.ai.psg.traveler.ActivityRecord))
protected  void setCurrentRecord(ActivityRecord record)
           
 Throwable throwing(CallRecord record, Throwable thrown)
          Record thrown in record, and make record parent current activity in this thread (see exitting(edu.mit.ai.psg.traveler.ActivityRecord))
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TraceRecorderDefault

public TraceRecorderDefault()
Method Detail

makeCallRecord

protected CallRecord makeCallRecord(Object target,
                                    Member member,
                                    Object[] parameters)
Creates a CallRecordDefault

makeSynchronizationRecord

protected SynchronizationRecord makeSynchronizationRecord(Object target,
                                                          Member inMember)
Creates a SynchronizationRecordDefault

makeStringRecord

protected ActivityRecord makeStringRecord(String string)
Creates a StringRecord

received

public CallRecord received(Object target,
                           Member member,
                           Object[] parameters)
Description copied from interface: TraceRecorder
For recording a call from callee: Should be followed by call to TraceRecorder.returningVoid(edu.mit.ai.psg.traveler.CallRecord), TraceRecorder.returning(edu.mit.ai.psg.traveler.CallRecord, java.lang.Object), or TraceRecorder.throwing(edu.mit.ai.psg.traveler.CallRecord, java.lang.Throwable) to record completion of call. Creates a CallRecord recording the invocation, makes record the current record, returning record. If callRecord.SynchronizationRecord.isSynchronized()() (i.e., member is synchronized), calls TraceRecorder.enteredSynchronization(edu.mit.ai.psg.traveler.SynchronizationRecord), else calls TraceRecorder.entering(edu.mit.ai.psg.traveler.ActivityRecord).
Specified by:
received in interface TraceRecorder
See Also:
TraceRecorder.received(java.lang.Object, java.lang.reflect.Member, java.lang.Object[]), makeCallRecord(java.lang.Object, java.lang.reflect.Member, java.lang.Object[])

invoking

public CallRecord invoking(Object target,
                           Member member,
                           Object[] parameters)
Description copied from interface: TraceRecorder
For recording a call from caller: Should be followed by call to TraceRecorder.returningVoid(edu.mit.ai.psg.traveler.CallRecord), TraceRecorder.returning(edu.mit.ai.psg.traveler.CallRecord, java.lang.Object), or TraceRecorder.throwing(edu.mit.ai.psg.traveler.CallRecord, java.lang.Throwable) to record completion of call. Creates a CallRecord recording the invocation, makes record the current record, returning record. If callRecord.SynchronizationRecord.isSynchronizedWait()(), calls TraceRecorder.enteredSynchronization(edu.mit.ai.psg.traveler.SynchronizationRecord), else calls TraceRecorder.entering(edu.mit.ai.psg.traveler.ActivityRecord).
Specified by:
invoking in interface TraceRecorder
See Also:
TraceRecorder.invoking(java.lang.Object, java.lang.reflect.Member, java.lang.Object[]), makeCallRecord(java.lang.Object, java.lang.reflect.Member, java.lang.Object[])

returningVoid

public void returningVoid(CallRecord record)
Description copied from interface: TraceRecorder
record completion, and make record parent current activity in this thread (see TraceRecorder.exitting(edu.mit.ai.psg.traveler.ActivityRecord))
Specified by:
returningVoid in interface TraceRecorder
See Also:
TraceRecorder.returningVoid(edu.mit.ai.psg.traveler.CallRecord)

returning

public Object returning(CallRecord record,
                        Object value)
Description copied from interface: TraceRecorder
Record value in record, and make record parent current activity in this thread (see TraceRecorder.exitting(edu.mit.ai.psg.traveler.ActivityRecord))
Specified by:
returning in interface TraceRecorder
See Also:
TraceRecorder.returning(edu.mit.ai.psg.traveler.CallRecord, java.lang.Object)

throwing

public Throwable throwing(CallRecord record,
                          Throwable thrown)
Description copied from interface: TraceRecorder
Record thrown in record, and make record parent current activity in this thread (see TraceRecorder.exitting(edu.mit.ai.psg.traveler.ActivityRecord))
Specified by:
throwing in interface TraceRecorder
See Also:
TraceRecorder.throwing(edu.mit.ai.psg.traveler.CallRecord, java.lang.Throwable)

beginning

public ActivityRecord beginning(String activityString)
Description copied from interface: TraceRecorder
Creates and links a record for an activity (e.g., a block) described by string. Ended by TraceRecorder.exitting(edu.mit.ai.psg.traveler.ActivityRecord)(record).
Specified by:
beginning in interface TraceRecorder

doing

public ActivityRecord doing(String activityString)
Description copied from interface: TraceRecorder
Convenience function for beginning followed immedately by exitting. May be used to add strings to annotate record (like using print statements), e.g., to describe activities with no internal structure.
Specified by:
doing in interface TraceRecorder

beganSynchronization

public SynchronizationRecord beganSynchronization(Object target,
                                                  Member inMember)
Description copied from interface: TraceRecorder
Creates and links a record for a synchronized region. Must be called from within the synchronized region to ensure the correct ordering in target's biography. Ended by TraceRecorder.exitting(edu.mit.ai.psg.traveler.ActivityRecord)(record).
Specified by:
beganSynchronization in interface TraceRecorder
Tags copied from interface: TraceRecorder
Parameters:
target - target of synchronization (e.g., locked object).
inMember - Method or Constructor in which block is found (used for identifying record in its print string), or null if in a class initializer

entering

public ActivityRecord entering(ActivityRecord record)
adds record as child of current record, and sets current record to record
Specified by:
entering in interface TraceRecorder
See Also:
TraceRecorder.entering(edu.mit.ai.psg.traveler.ActivityRecord)

enteredSynchronization

public SynchronizationRecord enteredSynchronization(SynchronizationRecord record)
Description copied from interface: TraceRecorder
If record is not the current activity, call entering(record). Add record to biography of record.SynchronizationRecord.getTargetNow()(). Must be called while activity holds synchronization lock (otherwise record may not be added to biography in actual synchronization order).
Specified by:
enteredSynchronization in interface TraceRecorder
See Also:
TraceRecorder.enteredSynchronization(edu.mit.ai.psg.traveler.SynchronizationRecord)

exitting

public ActivityRecord exitting(ActivityRecord record)
pops record off current record stack, as well as any records above it
Specified by:
exitting in interface TraceRecorder
See Also:
TraceRecorder.exitting(edu.mit.ai.psg.traveler.ActivityRecord)

doing

public ActivityRecord doing(ActivityRecord record)
Description copied from interface: TraceRecorder
convenience function for entering followed immediately by exitting
Specified by:
doing in interface TraceRecorder
See Also:
TraceRecorder.doing(java.lang.String)

getCurrentRecord

public ActivityRecord getCurrentRecord()
Description copied from interface: TraceRecorder
get top record on activity stack; may be inherited from thread which created the current thread.
Specified by:
getCurrentRecord in interface TraceRecorder

getThreadOutermostRecord

public ActivityRecord getThreadOutermostRecord()
Description copied from interface: TraceRecorder
get bottom record on activity stack which is specific to this thread, or null.
Specified by:
getThreadOutermostRecord in interface TraceRecorder

setCurrentRecord

protected void setCurrentRecord(ActivityRecord record)

clearBiographies

public void clearBiographies()
do not call while recording in progress
Specified by:
clearBiographies in interface TraceRecorder
See Also:
TraceRecorder.clearBiographies()

clearBiography

public void clearBiography(Object target)
Description copied from interface: TraceRecorder
clear biography of target. May be useful to shorten display. Permits records in biography which are not linked to any other records (e.g., in other biographies or in current threads) to be garbage collected.
Specified by:
clearBiography in interface TraceRecorder
See Also:
TraceRecorder.clearBiography(java.lang.Object)

getBiography

public List getBiography(Object target)
Description copied from interface: TraceRecorder
return a List of activities recorded for this target, e.g., traced calls on synchronized methods
Specified by:
getBiography in interface TraceRecorder
See Also:
TraceRecorder.getBiography(java.lang.Object)

getSynchronizationHolder

public SynchronizationRecord getSynchronizationHolder(Object target)
Description copied from interface: TraceRecorder
return entry record of activity currently holding synchronization on target or null if none. If nested, this will be the innermost record, and enclosing records will be available thru ActivityRecord.getParent().
Specified by:
getSynchronizationHolder in interface TraceRecorder

clearSynchronizationHolders

public void clearSynchronizationHolders()
do not call while recording in progress

addEntryToBiography

public void addEntryToBiography(SynchronizationRecord record)
Description copied from interface: TraceRecorder
add record to biography of target of synchronization
Specified by:
addEntryToBiography in interface TraceRecorder
See Also:
TraceRecorder.addEntryToBiography(edu.mit.ai.psg.traveler.SynchronizationRecord)

addExitToBiography

public void addExitToBiography(SynchronizationRecord record)
Description copied from interface: TraceRecorder
add record to biography of target of synchronization
Specified by:
addExitToBiography in interface TraceRecorder
See Also:
TraceRecorder.addExitToBiography(edu.mit.ai.psg.traveler.SynchronizationRecord)

Copyright (c) 1996-1999
Massachusetts Institute of Technology

Feedback: jeva-feedback@ai.mit.edu