org.jboss.byteman.agent
Class TransformContext

java.lang.Object
  extended by org.jboss.byteman.agent.TransformContext

public class TransformContext
extends java.lang.Object

Class used to localise the context information employed when creating a rule from a rule script and using it to transform a method


Field Summary
(package private)  HelperManager helperManager
           
private static java.lang.String JAVA_METHOD_SPEC_PATTERN
          pattern used to identify target method specs which include a return type preceding the method name and parameter type list.
private  java.lang.ClassLoader loader
           
private  java.util.HashMap<java.lang.String,Rule> ruleMap
          a hashmap indexing Rule instances using key classname.methodnameandsig@loaderhashcode.
private  RuleScript ruleScript
           
private  java.lang.String targetDescriptor
           
private  java.lang.String targetMethodName
           
private  java.lang.String triggerClass
           
 
Constructor Summary
TransformContext(RuleScript ruleScript, java.lang.String triggerClass, java.lang.String targetMethodSpec, java.lang.ClassLoader loader, HelperManager helperManager)
           
 
Method Summary
 Rule getRule(java.lang.String triggerMethodName, java.lang.String triggerMethodDescriptor)
           
private  java.lang.String getRuleKey(java.lang.String triggerMethodName, java.lang.String triggerMethodDescriptor)
          return a unique string key identifying a specific rule compiled against some class and method/signature in the context of a specific class loader
 java.lang.String getTriggerClass()
           
 boolean matchTargetMethod(java.lang.String name, java.lang.String desc)
           
private  java.lang.String mungeMethodSpecReturnType(java.lang.String targetMethodSpec)
          detect a method specification which includes a return type preceding the method name and transform it so that the return type is at the end.
 void parseRule()
           
 void recordFailedTransform(java.lang.Throwable th)
           
 void recordMethodTransform(java.lang.String triggerMethodName, java.lang.String triggerMethodDescriptor)
           
private  Rule removeRule(java.lang.String triggerMethodName, java.lang.String triggerMethodDescriptor)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ruleScript

private RuleScript ruleScript

triggerClass

private java.lang.String triggerClass

targetMethodName

private java.lang.String targetMethodName

targetDescriptor

private java.lang.String targetDescriptor

loader

private java.lang.ClassLoader loader

helperManager

HelperManager helperManager

JAVA_METHOD_SPEC_PATTERN

private static final java.lang.String JAVA_METHOD_SPEC_PATTERN
pattern used to identify target method specs which include a return type preceding the method name and parameter type list. note that we can only handle a return type in cases where the parameter type list is also specified.

See Also:
Constant Field Values

ruleMap

private java.util.HashMap<java.lang.String,Rule> ruleMap
a hashmap indexing Rule instances using key classname.methodnameandsig@loaderhashcode. rules are added to this map when they are created and removed when the transform is recorded as having succeeded or failed. a method check adapter will create a rule when it begins a method scan and a method trigger adpater will look it up in order to reuse it

Constructor Detail

TransformContext

public TransformContext(RuleScript ruleScript,
                        java.lang.String triggerClass,
                        java.lang.String targetMethodSpec,
                        java.lang.ClassLoader loader,
                        HelperManager helperManager)
Method Detail

parseRule

public void parseRule()
               throws java.lang.Throwable
Throws:
java.lang.Throwable

getRule

public Rule getRule(java.lang.String triggerMethodName,
                    java.lang.String triggerMethodDescriptor)

recordFailedTransform

public void recordFailedTransform(java.lang.Throwable th)

recordMethodTransform

public void recordMethodTransform(java.lang.String triggerMethodName,
                                  java.lang.String triggerMethodDescriptor)

matchTargetMethod

public boolean matchTargetMethod(java.lang.String name,
                                 java.lang.String desc)

getTriggerClass

public java.lang.String getTriggerClass()

removeRule

private Rule removeRule(java.lang.String triggerMethodName,
                        java.lang.String triggerMethodDescriptor)

getRuleKey

private java.lang.String getRuleKey(java.lang.String triggerMethodName,
                                    java.lang.String triggerMethodDescriptor)
return a unique string key identifying a specific rule compiled against some class and method/signature in the context of a specific class loader

Returns:

mungeMethodSpecReturnType

private java.lang.String mungeMethodSpecReturnType(java.lang.String targetMethodSpec)
detect a method specification which includes a return type preceding the method name and transform it so that the return type is at the end.

Parameters:
targetMethodSpec -
Returns: