|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface TransparencyClassSpec
Configure and describe the custom adaption of a class
Field Summary | |
---|---|
static byte |
ADAPTABLE
|
static byte |
NOT_ADAPTABLE
|
static byte |
NOT_SET
|
static byte |
PORTABLE
|
Method Summary | |
---|---|
void |
addAlwaysLogSpec(java.lang.String name)
Add logical method adapter to always log access to method |
void |
addArrayCopyMethodCodeSpec(java.lang.String name)
Add logical method adapter to log calls to System.arraycopy() |
void |
addCustomClassAdapter(ClassAdapterFactory customClassAdapter)
Add a custom class adapter factory. |
void |
addDateMethodLogSpec(java.lang.String name)
Add logical method adapter to log calls to Date.setTime() |
void |
addDateMethodLogSpec(java.lang.String name,
int methodSpec)
Add logical method adapter to log calls to Date.setTime() in subclasses |
TransparencyClassSpec |
addDistributedMethodCall(java.lang.String methodName,
java.lang.String description,
boolean runOnAllNodes)
Add distributed method call |
void |
addDoNotInstrument(java.lang.String methodName)
Mark method as not instrumented |
void |
addEntrySetWrapperSpec(java.lang.String name)
Add logical method adapter to log calls to Map.entrySet() on Map impls |
void |
addHashMapPutLogSpec(java.lang.String name)
Add logical method adapter to log calls to Map.put() on Map impls |
void |
addHashMapRemoveLogSpec(java.lang.String name)
Add logical method adapter to log calls to HashMap.remove() |
void |
addHashtableClearLogSpec(java.lang.String name)
Add logical method adapter to log calls to Hashtable.clear() |
void |
addHashtablePutLogSpec(java.lang.String name)
Add logical method adapter to log calls to Hashtable.put() |
void |
addHashtableRemoveLogSpec(java.lang.String name)
Add logical method adapter to log calls to Hashtable.remove() |
void |
addIfTrueLogSpec(java.lang.String name)
Add logical method adapter to log if method returns true |
void |
addKeySetWrapperSpec(java.lang.String name)
Add logical method adapter to log calls to Map.keySet() on Map impls |
TransparencyClassSpec |
addMethodAdapter(java.lang.String method,
MethodAdapter adapter)
Add method adapter |
void |
addMethodCodeSpec(java.lang.String name,
TransparencyCodeSpec codeSpec)
Add method code specification |
TransparencyClassSpec |
addRoot(java.lang.String variableName,
java.lang.String rootName)
Add root field |
TransparencyClassSpec |
addRoot(java.lang.String variableName,
java.lang.String rootName,
boolean dsoFinal)
Add root field |
void |
addSetIteratorWrapperSpec(java.lang.String name)
Add logical method adapter to log calls to Set.iterator() impls |
TransparencyClassSpec |
addSupportMethodCreator(MethodCreator creator)
Add support method creator |
void |
addTHashMapPutLogSpec(java.lang.String name)
Add logical method adapter to log calls to THashMap.put() |
void |
addTObjectHashRemoveAtLogSpec(java.lang.String name)
Add logical method adapter to log calls to TObjectHash.removeAt() |
TransparencyClassSpec |
addTransient(java.lang.String variableName)
Add a transient field |
void |
addValuesWrapperSpec(java.lang.String name)
Add logical method adapter to log calls to Map.values() on Map impls |
void |
addViewSetWrapperSpec(java.lang.String name)
Add logical method adapter to log calls to Set.subSet() on impls |
LockDefinition |
autoLockDefinitionFor(MethodInfo methodInfo)
Get auto lock definition for member |
void |
createClassSupportMethods(ClassVisitor classVisitor)
Call support method creators and add to the class via the visitor |
MethodAdapter |
customMethodAdapterFor(int access,
java.lang.String methodName,
java.lang.String origMethodName,
java.lang.String description,
java.lang.String signature,
java.lang.String[] exceptions,
InstrumentationLogger logger,
MemberInfo memberInfo)
Get custom method adapter |
void |
disableWaitNotifyCodeSpec(java.lang.String name)
Add logical method adapter to disable wait/notify code |
boolean |
doNotInstrument(java.lang.String methodName)
Check whether method is marked as do not instrument |
LockDefinition |
getAutoLockDefinition(LockDefinition[] lds)
Examine lock definitions to find the the one that makes the method autolocked |
java.lang.String |
getChangeApplicatorClassName()
|
ChangeApplicatorSpec |
getChangeApplicatorSpec()
|
java.lang.String |
getClassName()
Get the class name for this spec |
TransparencyClassSpec |
getClassSpec(java.lang.String superName)
Get spec for super class |
TransparencyCodeSpec |
getCodeSpec(java.lang.String methodName,
java.lang.String description,
boolean isAutolock)
Find code spec for method |
java.util.List<ClassAdapterFactory> |
getCustomClassAdapters()
Get the custom class adapter factories in the reverse order of addition. |
byte |
getInstrumentationAction()
Get instrumentation action |
LockDefinition |
getLockMethodLockDefinition(int access,
LockDefinition[] lds)
Get lock definition for locked method |
java.lang.String |
getLogicalExtendingClassName()
|
LockDefinition |
getNonAutoLockDefinition(LockDefinition[] lds)
Find lock definition that makes method not autolocked |
java.lang.String |
getOnLoadExecuteScript()
|
java.lang.String |
getOnLoadMethod()
|
java.lang.String |
getPostCreateMethod()
Get method to call post-create |
java.lang.String |
getPreCreateMethod()
Get method to call prior to create |
boolean |
hasCustomMethodAdapter(MemberInfo memberInfo)
Check if has custom method adapter |
boolean |
hasOnLoadInjection()
|
boolean |
hasPhysicallyPortableSpecs(ClassInfo classInfo)
|
boolean |
ignoreChecks()
|
boolean |
isCallConstructorOnLoad()
|
boolean |
isCallConstructorSet()
|
boolean |
isCallMethodOnLoadSet()
|
boolean |
isExecuteScriptOnLoadSet()
|
boolean |
isForeign()
Check whether this class is not included in the bootjar by default. |
boolean |
isHonorJavaTransient()
|
boolean |
isHonorJDKSubVersionSpecific()
|
boolean |
isHonorTransientSet()
|
boolean |
isHonorVolatile()
|
boolean |
isHonorVolatileSet()
|
boolean |
isIgnoreRewrite()
Check whether a ignore rewrite of instrumented methods |
boolean |
isInjectedField(java.lang.String fieldName)
Check whether a field is injected by DSO. |
boolean |
isLockMethod(MemberInfo memberInfo)
Check whether this method is a locked method |
boolean |
isLogical()
|
boolean |
isPhysical()
|
boolean |
isPreInstrumented()
Check whether this class is preinstrumented |
boolean |
isRoot(FieldInfo fieldInfo)
Check whether a field is a root in this class |
boolean |
isRootDSOFinal(FieldInfo fieldInfo)
Check whether a field is a DSO final root |
boolean |
isRootInThisClass(FieldInfo fieldInfo)
Check whether a field is a root in this class |
boolean |
isTransient(int access,
ClassInfo classInfo,
java.lang.String fieldName)
Check whether a field is transient |
boolean |
isUseNonDefaultConstructor()
|
boolean |
isVolatile(int access,
ClassInfo classInfo,
java.lang.String fieldName)
Check whether a field is volatile |
LockDefinition[] |
lockDefinitionsFor(MemberInfo memberInfo)
Get lock definitions for member |
TransparencyClassSpec |
markForeign()
Mark this class spec as foreign. |
TransparencyClassSpec |
markPreInstrumented()
Mark this class spec as being preinstrumented. |
void |
moveToLogical(TransparencyClassSpec superClassSpec)
Make this class extend a logically managed class |
java.lang.String |
rootNameFor(FieldInfo fieldInfo)
|
TransparencyClassSpec |
setCallConstructorOnLoad(boolean b)
Set call constructor on load flag |
TransparencyClassSpec |
setCallMethodOnLoad(java.lang.String method)
Set method to call on load |
void |
setChangeApplicatorSpec(ChangeApplicatorSpec changeApplicatorSpec)
Set the change applicator spec for this class spec |
void |
setCustomClassAdapter(ClassAdapterFactory customClassAdapter)
Deprecated. see addCustomClassAdapter(ClassAdapterFactory) |
void |
setDefaultCodeSpec(TransparencyCodeSpec codeSpec)
The supplied spec will be returned if there exists no specific code spec for particular methods |
TransparencyClassSpec |
setExecuteScriptOnLoad(java.lang.String script)
Set execute script on load flag |
TransparencyClassSpec |
setHasOnLoadInjection(boolean flag)
Sets whether injection should happen on load |
void |
setHonorJDKSubVersionSpecific(boolean honorJDKSubVersionSpecific)
|
TransparencyClassSpec |
setHonorTransient(boolean b)
Set honor transient flag |
TransparencyClassSpec |
setHonorVolatile(boolean b)
Set honor volatile flag |
TransparencyClassSpec |
setIgnoreRewrite(boolean b)
Set ignore rewrite flag |
void |
setInstrumentationAction(byte action)
Set instrumentation action |
void |
setPostCreateMethod(java.lang.String postCreateMethod)
Set method to call post-create |
void |
setPreCreateMethod(java.lang.String preCreateMethod)
Set method to call pre-create |
void |
setUseNonDefaultConstructor(boolean useNonDefaultConstructor)
Set to use non default constructor |
Field Detail |
---|
static final byte NOT_SET
static final byte NOT_ADAPTABLE
static final byte ADAPTABLE
static final byte PORTABLE
Method Detail |
---|
boolean hasPhysicallyPortableSpecs(ClassInfo classInfo)
classInfo
- Class information
TransparencyClassSpec addRoot(java.lang.String variableName, java.lang.String rootName)
variableName
- Field namerootName
- Root name
TransparencyClassSpec addRoot(java.lang.String variableName, java.lang.String rootName, boolean dsoFinal)
variableName
- Field namerootName
- Root namedsoFinal
- True if final
void addDoNotInstrument(java.lang.String methodName)
methodName
- boolean doNotInstrument(java.lang.String methodName)
methodName
- Method name
TransparencyClassSpec markPreInstrumented()
boolean isPreInstrumented()
TransparencyClassSpec markForeign()
boolean isForeign()
LockDefinition[] lockDefinitionsFor(MemberInfo memberInfo)
memberInfo
- Member
LockDefinition autoLockDefinitionFor(MethodInfo methodInfo)
memberInfo
- Member
LockDefinition getAutoLockDefinition(LockDefinition[] lds)
lds
- Lock defs
LockDefinition getNonAutoLockDefinition(LockDefinition[] lds)
lds
- Lock defs
TransparencyClassSpec addSupportMethodCreator(MethodCreator creator)
creator
- Creator
TransparencyClassSpec addDistributedMethodCall(java.lang.String methodName, java.lang.String description, boolean runOnAllNodes)
methodName
- Methoddescription
- Method signaturerunOnAllNodes
- True to run on all nodes, false for local
TransparencyClassSpec addTransient(java.lang.String variableName)
variableName
- Field name
TransparencyClassSpec addMethodAdapter(java.lang.String method, MethodAdapter adapter)
method
- Method nameadapter
- The adapter
java.lang.String getClassName()
void createClassSupportMethods(ClassVisitor classVisitor)
classVisitor
- Class visitorboolean isLogical()
boolean isPhysical()
boolean ignoreChecks()
boolean isRootInThisClass(FieldInfo fieldInfo)
fieldInfo
- Field
boolean isRoot(FieldInfo fieldInfo)
fieldInfo
- Field
boolean isRootDSOFinal(FieldInfo fieldInfo)
fieldInfo
- Field
boolean isInjectedField(java.lang.String fieldName)
fieldName
- Field name
true
when the field is injected; or false
otherwiseboolean isTransient(int access, ClassInfo classInfo, java.lang.String fieldName)
access
- Access modifiersclassInfo
- Class infofieldName
- Field name
boolean isIgnoreRewrite()
boolean isVolatile(int access, ClassInfo classInfo, java.lang.String fieldName)
access
- Access modifiersclassInfo
- Class infofieldName
- Field name
java.lang.String rootNameFor(FieldInfo fieldInfo)
fieldInfo
- Field
boolean isLockMethod(MemberInfo memberInfo)
memberInfo
- Method
LockDefinition getLockMethodLockDefinition(int access, LockDefinition[] lds)
access
- Access modifierslds
- Lock defs
boolean hasCustomMethodAdapter(MemberInfo memberInfo)
memberInfo
- Method
MethodAdapter customMethodAdapterFor(int access, java.lang.String methodName, java.lang.String origMethodName, java.lang.String description, java.lang.String signature, java.lang.String[] exceptions, InstrumentationLogger logger, MemberInfo memberInfo)
access
- Access modifiersmethodName
- Method nameorigMethodName
- Original method namedescription
- Method descriptionsignature
- Method signatureexceptions
- Exceptions thrownlogger
- LoggermemberInfo
- Method
ChangeApplicatorSpec getChangeApplicatorSpec()
java.lang.String getLogicalExtendingClassName()
void moveToLogical(TransparencyClassSpec superClassSpec)
superClassSpec
- The logically managed super classvoid addAlwaysLogSpec(java.lang.String name)
name
- Method signaturevoid addIfTrueLogSpec(java.lang.String name)
name
- Method signaturevoid addSetIteratorWrapperSpec(java.lang.String name)
name
- Method signaturevoid addViewSetWrapperSpec(java.lang.String name)
name
- Method signaturevoid addEntrySetWrapperSpec(java.lang.String name)
name
- Method signaturevoid addKeySetWrapperSpec(java.lang.String name)
name
- Method signaturevoid addValuesWrapperSpec(java.lang.String name)
name
- Method signaturevoid addHashMapPutLogSpec(java.lang.String name)
name
- Method signaturevoid addHashtablePutLogSpec(java.lang.String name)
name
- Method signaturevoid addTHashMapPutLogSpec(java.lang.String name)
name
- Method signaturevoid addTObjectHashRemoveAtLogSpec(java.lang.String name)
name
- Method signaturevoid addHashtableClearLogSpec(java.lang.String name)
name
- Method signaturevoid addHashtableRemoveLogSpec(java.lang.String name)
name
- Method signaturevoid addHashMapRemoveLogSpec(java.lang.String name)
name
- Method signaturevoid addArrayCopyMethodCodeSpec(java.lang.String name)
name
- Method signaturevoid disableWaitNotifyCodeSpec(java.lang.String name)
name
- Method signaturevoid addDateMethodLogSpec(java.lang.String name)
name
- Method signaturevoid addDateMethodLogSpec(java.lang.String name, int methodSpec)
name
- Method signaturevoid addMethodCodeSpec(java.lang.String name, TransparencyCodeSpec codeSpec)
name
- Method namecodeSpec
- Transparency specTransparencyClassSpec setHonorVolatile(boolean b)
b
- New flag value
TransparencyClassSpec setIgnoreRewrite(boolean b)
b
- New flag value
boolean isHonorVolatileSet()
boolean isHonorVolatile()
TransparencyClassSpec setHonorTransient(boolean b)
b
- New flag value
TransparencyClassSpec setCallConstructorOnLoad(boolean b)
b
- New value
TransparencyClassSpec setExecuteScriptOnLoad(java.lang.String script)
script
- Script to load
TransparencyClassSpec setCallMethodOnLoad(java.lang.String method)
method
- Method name
TransparencyClassSpec setHasOnLoadInjection(boolean flag)
flag
- true or false
boolean isCallConstructorSet()
boolean isHonorJavaTransient()
boolean isCallConstructorOnLoad()
boolean isHonorTransientSet()
TransparencyCodeSpec getCodeSpec(java.lang.String methodName, java.lang.String description, boolean isAutolock)
methodName
- Method namedescription
- Method signatureisAutolock
- True if autolocked
boolean isExecuteScriptOnLoadSet()
boolean isCallMethodOnLoadSet()
java.lang.String getOnLoadMethod()
java.lang.String getOnLoadExecuteScript()
boolean hasOnLoadInjection()
boolean isUseNonDefaultConstructor()
void setUseNonDefaultConstructor(boolean useNonDefaultConstructor)
useNonDefaultConstructor
- True to use non-defaultvoid setInstrumentationAction(byte action)
action
- Action constants defined in TransparencyClassSpecImplbyte getInstrumentationAction()
boolean isHonorJDKSubVersionSpecific()
void setHonorJDKSubVersionSpecific(boolean honorJDKSubVersionSpecific)
honorJDKSubVersionSpecific
- True to honorjava.lang.String getPreCreateMethod()
java.lang.String getPostCreateMethod()
This facility is for situations in which a method needs to be invoked when an object moved from non-shared to shared (but not until the end of the current traverser that caused the change). The method could be an instrumented method. For instance, for ConcurrentHashMap, we need to re-hash the objects already in the map because the hashing algorithm is different when a ConcurrentHashMap is shared. The rehash method is an instrumented method. This should be executed only once.
void setPreCreateMethod(java.lang.String preCreateMethod)
preCreateMethod
- Method namevoid setPostCreateMethod(java.lang.String postCreateMethod)
postCreateMethod
- Method namevoid setCustomClassAdapter(ClassAdapterFactory customClassAdapter)
addCustomClassAdapter(ClassAdapterFactory)
customClassAdapter
- Custom factoryaddCustomClassAdapter(ClassAdapterFactory)
void addCustomClassAdapter(ClassAdapterFactory customClassAdapter)
customClassAdapter
- Custom factoryjava.util.List<ClassAdapterFactory> getCustomClassAdapters()
java.lang.String getChangeApplicatorClassName()
TransparencyClassSpec getClassSpec(java.lang.String superName)
superName
- Super class name
void setDefaultCodeSpec(TransparencyCodeSpec codeSpec)
void setChangeApplicatorSpec(ChangeApplicatorSpec changeApplicatorSpec)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |