org.softevo.ample.sibrelib.extensions
Class SequenceTracer

java.lang.Object
  extended by org.softevo.sibrelib.extensions.TraceInstrumentationExtension
      extended by org.softevo.ample.sibrelib.extensions.SequenceTracer
Direct Known Subclasses:
IncomingCallTracer, OutgoingCallTracer

public class SequenceTracer
extends org.softevo.sibrelib.extensions.TraceInstrumentationExtension

Author:
dallmeier TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates

Field Summary
protected  InstanceTracer instanceTracer
          The instance tracer.
protected  java.lang.String runtimeClassName
          The name of the runtime class.
protected  ThreadTracer threadTracer
          The thread tracer.
 
Fields inherited from class org.softevo.sibrelib.extensions.TraceInstrumentationExtension
context
 
Constructor Summary
SequenceTracer(org.softevo.sibrelib.InstrumentationContext context)
           
 
Method Summary
protected  void addFinalizer(org.apache.bcel.generic.ClassGen classGenerator, org.apache.bcel.classfile.JavaClass javaClass, org.apache.bcel.generic.ConstantPoolGen constantPoolGenerator, org.apache.bcel.generic.InstructionFactory factory, java.lang.String runtimeClassName)
           
 boolean allowTraceInstrumentation(org.apache.bcel.generic.MethodGen methodGenerator)
          Checks if neither thread nor instance tracer forbid instrumentation.
 org.apache.bcel.generic.InstructionList createMethodStartCode(org.apache.bcel.classfile.JavaClass javaClass, org.apache.bcel.generic.ConstantPoolGen constantPoolGenerator, org.apache.bcel.generic.MethodGen methodGenerator, org.apache.bcel.generic.InstructionFactory factory, java.util.HashMap identifierMap, java.lang.String runtimeClassName)
           
protected  org.apache.bcel.generic.MethodGen getFinalizer(org.apache.bcel.classfile.JavaClass javaClass, org.apache.bcel.generic.ClassGen classGenerator, org.apache.bcel.generic.ConstantPoolGen constantPoolGenerator, org.apache.bcel.generic.InstructionFactory factory, java.lang.String runtimeClassName)
           
 void preProcessJavaClass(org.apache.bcel.classfile.JavaClass javaClass, org.apache.bcel.generic.ClassGen classGenerator, org.apache.bcel.generic.ConstantPoolGen constantPoolGenerator, org.apache.bcel.generic.InstructionFactory factory)
          Processes a java class and adds special methods and fields needed for the instrumentation extension.
 
Methods inherited from class org.softevo.sibrelib.extensions.TraceInstrumentationExtension
createMethodStartCode, finishInstrumentation, postProcessJavaClass, verifyInstrumentation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

instanceTracer

protected InstanceTracer instanceTracer
The instance tracer.


threadTracer

protected ThreadTracer threadTracer
The thread tracer.


runtimeClassName

protected java.lang.String runtimeClassName
The name of the runtime class.

Constructor Detail

SequenceTracer

public SequenceTracer(org.softevo.sibrelib.InstrumentationContext context)
Method Detail

allowTraceInstrumentation

public boolean allowTraceInstrumentation(org.apache.bcel.generic.MethodGen methodGenerator)
Checks if neither thread nor instance tracer forbid instrumentation.

Overrides:
allowTraceInstrumentation in class org.softevo.sibrelib.extensions.TraceInstrumentationExtension

preProcessJavaClass

public void preProcessJavaClass(org.apache.bcel.classfile.JavaClass javaClass,
                                org.apache.bcel.generic.ClassGen classGenerator,
                                org.apache.bcel.generic.ConstantPoolGen constantPoolGenerator,
                                org.apache.bcel.generic.InstructionFactory factory)
Processes a java class and adds special methods and fields needed for the instrumentation extension.
The default implementation does not change anything. Since extensions may have processed the class before, all changes concerning methods and fields must be applied to the classGenerator variable passed (and not to the java class. This method is called before trace code is inserted into methods.

Overrides:
preProcessJavaClass in class org.softevo.sibrelib.extensions.TraceInstrumentationExtension
Parameters:
javaClass - the class to process
classGenerator - the generator for the new class
constantPoolGenerator - the generator for the new constant pool
factory - the factory for instructions

createMethodStartCode

public org.apache.bcel.generic.InstructionList createMethodStartCode(org.apache.bcel.classfile.JavaClass javaClass,
                                                                     org.apache.bcel.generic.ConstantPoolGen constantPoolGenerator,
                                                                     org.apache.bcel.generic.MethodGen methodGenerator,
                                                                     org.apache.bcel.generic.InstructionFactory factory,
                                                                     java.util.HashMap identifierMap,
                                                                     java.lang.String runtimeClassName)
                                                              throws org.softevo.sibrelib.InstrumentationException
Throws:
org.softevo.sibrelib.InstrumentationException

getFinalizer

protected org.apache.bcel.generic.MethodGen getFinalizer(org.apache.bcel.classfile.JavaClass javaClass,
                                                         org.apache.bcel.generic.ClassGen classGenerator,
                                                         org.apache.bcel.generic.ConstantPoolGen constantPoolGenerator,
                                                         org.apache.bcel.generic.InstructionFactory factory,
                                                         java.lang.String runtimeClassName)

addFinalizer

protected void addFinalizer(org.apache.bcel.generic.ClassGen classGenerator,
                            org.apache.bcel.classfile.JavaClass javaClass,
                            org.apache.bcel.generic.ConstantPoolGen constantPoolGenerator,
                            org.apache.bcel.generic.InstructionFactory factory,
                            java.lang.String runtimeClassName)