edu.mit.ai.psg.traveler
Class ActivityRecordMethods

java.lang.Object
  |
  +--edu.mit.ai.psg.traveler.ActivityRecordMethods

public class ActivityRecordMethods
extends Object


Inner Class Summary
static class ActivityRecordMethods.BiographyIterator
          Iterator returned by inBiographyIterator(boolean, boolean, boolean, boolean, boolean, edu.mit.ai.psg.traveler.SynchronizationRecord, java.util.List)
static interface ActivityRecordMethods.Iterator
           
static class ActivityRecordMethods.IteratorBase
          Abstract base class for ActivityRecord iterators; derived classes add method to computeNext()
static class ActivityRecordMethods.SuperactivityIterator
          Iterator returned by superactivityIterator(boolean, edu.mit.ai.psg.traveler.ActivityRecord, edu.mit.ai.psg.utilities.IUnaryPredicate)
static class ActivityRecordMethods.ThreadIterator
          Iterator returned by inThreadIterator(boolean, boolean, boolean, boolean, edu.mit.ai.psg.traveler.ActivityRecord, edu.mit.ai.psg.utilities.IUnaryPredicate, edu.mit.ai.psg.utilities.IUnaryPredicate)
 
Constructor Summary
ActivityRecordMethods()
           
 
Method Summary
static ActivityRecordMethods.Iterator inBiographyIterator(boolean iterateForward, boolean iterateAcquisitions, boolean iterateReleases, boolean includeNested, boolean startAtEntrance, SynchronizationRecord startRecord, List biography)
          inBiographyIterator traverses acquisitions and releases of synchronization in a biography.
static ActivityRecordMethods.Iterator inBiographyIterator(boolean iterateForward, boolean iterateAcquisitions, boolean iterateReleases, boolean includeNested, SynchronizationRecord.Entry entryRecord, List biography)
          inBiographyIterator traverses acquisitions and releases of synchronization in a biography.
static ActivityRecordMethods.Iterator inBiographyIterator(boolean iterateForward, boolean iterateAcquisitions, boolean iterateReleases, boolean includeNested, SynchronizationRecord.Exit exitRecord, List biography)
          inBiographyIterator traverses acquisitions and releases of synchronization in a biography.
static ActivityRecordMethods.Iterator inThreadIterator(boolean iterateForward, boolean iterateEntrances, boolean iterateExits, boolean startAtEntrance, ActivityRecord startRecord, IUnaryPredicate traverseInsidePredicate, IUnaryPredicate traverseOutsidePredicate)
          inThreadIterator does depth first walk of activity in thread forward from start record, continuing with siblings of activity when nexted activities run out.
static void main(String[] ignore)
           
static ActivityRecordMethods.Iterator superactivityIterator(boolean startWithStartRecord, ActivityRecord startRecord, IUnaryPredicate traverseOutsidePredicate)
          traverses up parent activity links starting from startRecord
static int test(String expected, ActivityRecordMethods.Iterator iter)
           
static int testInBiographyIterator()
           
static int testInThreadIterator()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ActivityRecordMethods

public ActivityRecordMethods()
Method Detail

inThreadIterator

public static ActivityRecordMethods.Iterator inThreadIterator(boolean iterateForward,
                                                              boolean iterateEntrances,
                                                              boolean iterateExits,
                                                              boolean startAtEntrance,
                                                              ActivityRecord startRecord,
                                                              IUnaryPredicate traverseInsidePredicate,
                                                              IUnaryPredicate traverseOutsidePredicate)
inThreadIterator does depth first walk of activity in thread forward from start record, continuing with siblings of activity when nexted activities run out. For example:

To iterate over all activities in thread starting at startRecord until end of thread, returning activities as they are entered, use:

.  Iterator iter = 
.    ActivityRecordMethods.forwardInThreadIterator
.      (true, // iterateForward
.       true, // iterateEntrances
.       false,// iterateExits
.       true, // startAtEntrance of startRecord
.       startRecord,
.       UnaryTrue.instance, // traverse all subactivities in thread
.       UnaryTrue.instance); // traverse all superactivities in thread
To iterate over activities until end of startRecord, returning activities both as they are entered or exited, use:
.  Iterator iter = 
.    ActivityRecordMethods.forwardInThreadIterator
.      (true, // iterateForward
.       true, // iterateEntrances
.       true, // iterateExits
.       true, // startAtEntrace of startRecord
.       startRecord,
.       UnaryTrue.instance, // traverse all subactivities of thread
.       new IUnaryPredicate() { //don't traverse to parent of startRecord
.         boolean execute(Object obj) { 
.           return obj != startRecord; }});
Parameters:
iterateForward - if true, iterate children forward in time,
if false, iterate children backward in time.
Typical value: true.
iterateEntrances - if true, return activity when iterator encounters thread's entrance to activity.
Typical value: same as iterateForward.
iterateExits - if true, return activity when iterator encounters thread's exit from activity.
Typical value: opposite of iterateForward.
Note: if both iterateEntrances and iterateExits are true, then traversed activities may appear twice in the iteration.
If neither are true, then the iteration will be empty.
startAtEntrance - if true, iterator starts at entrance of startRecord; otherwise starts at exit.
Typical value: same as iterateForward.
startRecord - the activity record at which to start.
traverseInsidePredicate - can be used to stop iterator from going deeper inside (e.g., no methods calls to other objects).
Typical value: UnaryTrue.instance
traverseOutsidePredicate - can be used to stop iterator from going higher up call tree after insides run out (e.g., not past method call from other objects).
Typical value: UnaryTrue.instance
See Also:
ActivityRecord, IUnaryPredicate, UnaryTrue

inBiographyIterator

public static ActivityRecordMethods.Iterator inBiographyIterator(boolean iterateForward,
                                                                 boolean iterateAcquisitions,
                                                                 boolean iterateReleases,
                                                                 boolean includeNested,
                                                                 boolean startAtEntrance,
                                                                 SynchronizationRecord startRecord,
                                                                 List biography)
inBiographyIterator traverses acquisitions and releases of synchronization in a biography.
Parameters:
iterateForward - if true, iterate biography forward in time if false, iterate backward in time. Typical value: false.
iterateAcquisitions - if true, iterator returns activity records of thread acquiring access, perhaps recursively if includeNested is true).
iterateReleases - if true, iterator returns activity records of thread is releasing access, perhaps recursively if includeNested is true).
includeNested - if true, iteration includes recursive acquisitions and releases by thread; if false, only includes outermost acquisition and release, and if startRecord is for a recursive synchronization, starts from outermost synchronization containing startRecord. Typical value: false.
startAtEntrance - if true, iterator starts with startRecord.getSynchronizationEntry(), else starts with startRecord.getSynchronizationExit().
startRecord - record at which to start; see includeNested
biography - biography to iterate over, in which startRecord.getSynchronizationEntry() appears.

inBiographyIterator

public static ActivityRecordMethods.Iterator inBiographyIterator(boolean iterateForward,
                                                                 boolean iterateAcquisitions,
                                                                 boolean iterateReleases,
                                                                 boolean includeNested,
                                                                 SynchronizationRecord.Entry entryRecord,
                                                                 List biography)
inBiographyIterator traverses acquisitions and releases of synchronization in a biography.
See Also:
inBiographyIterator(boolean,boolean,boolean,boolean,boolean,SynchronizationRecord,List)

inBiographyIterator

public static ActivityRecordMethods.Iterator inBiographyIterator(boolean iterateForward,
                                                                 boolean iterateAcquisitions,
                                                                 boolean iterateReleases,
                                                                 boolean includeNested,
                                                                 SynchronizationRecord.Exit exitRecord,
                                                                 List biography)
inBiographyIterator traverses acquisitions and releases of synchronization in a biography.
See Also:
inBiographyIterator(boolean,boolean,boolean,boolean,boolean,SynchronizationRecord,List)

superactivityIterator

public static ActivityRecordMethods.Iterator superactivityIterator(boolean startWithStartRecord,
                                                                   ActivityRecord startRecord,
                                                                   IUnaryPredicate traverseOutsidePredicate)
traverses up parent activity links starting from startRecord

main

public static void main(String[] ignore)

testInThreadIterator

public static int testInThreadIterator()

testInBiographyIterator

public static int testInBiographyIterator()

test

public static int test(String expected,
                       ActivityRecordMethods.Iterator iter)

Copyright (c) 1996-1999
Massachusetts Institute of Technology

Feedback: jeva-feedback@ai.mit.edu