Package org.jrd.agent
Class Transformer
- java.lang.Object
-
- org.jrd.agent.Transformer
-
- All Implemented Interfaces:
java.lang.instrument.ClassFileTransformer
public class Transformer extends java.lang.Object implements java.lang.instrument.ClassFileTransformer
This class represent our transformer for retrieving bytecode.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
allowToSaveBytecode
private ClassClassLoaderMap
overrides
private ClassClassLoaderMap
results
-
Constructor Summary
Constructors Constructor Description Transformer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
allowToSaveBytecode()
This method allows saving of bytecodejava.util.List<java.lang.String[]>
cleanOverrides(java.lang.String patterns)
void
denyToSaveBytecode()
This method denies the bytecode to be saved during transformation.java.util.List<java.lang.String[]>
getOverriddenFqnPairs()
java.util.List<java.lang.String>
getOverriddenFqns()
byte[]
getResult(java.lang.String name, java.lang.String classloader)
Returns bytecode of transformed class.(package private) void
removeOverride(java.lang.String clazz)
(package private) void
removeOverride(java.lang.String clazz, java.lang.String classloader)
void
resetLastValidResult()
Resets the map with results to empty mapvoid
setOverride(java.lang.String name, byte[] body, java.lang.String classloader)
byte[]
transform(java.lang.ClassLoader loader, java.lang.String className, java.lang.Class<?> clazz, java.security.ProtectionDomain domain, byte[] classfileBuffer)
-
-
-
Field Detail
-
allowToSaveBytecode
private boolean allowToSaveBytecode
-
results
private ClassClassLoaderMap results
-
overrides
private ClassClassLoaderMap overrides
-
-
Method Detail
-
transform
public byte[] transform(java.lang.ClassLoader loader, java.lang.String className, java.lang.Class<?> clazz, java.security.ProtectionDomain domain, byte[] classfileBuffer) throws java.lang.instrument.IllegalClassFormatException
- Specified by:
transform
in interfacejava.lang.instrument.ClassFileTransformer
- Throws:
java.lang.instrument.IllegalClassFormatException
-
getResult
public byte[] getResult(java.lang.String name, java.lang.String classloader)
Returns bytecode of transformed class.- Parameters:
name
- name of class we want to get- Returns:
- bytes of given class
-
setOverride
public void setOverride(java.lang.String name, byte[] body, java.lang.String classloader)
-
getOverriddenFqns
public java.util.List<java.lang.String> getOverriddenFqns()
-
getOverriddenFqnPairs
public java.util.List<java.lang.String[]> getOverriddenFqnPairs()
-
resetLastValidResult
public void resetLastValidResult()
Resets the map with results to empty map
-
allowToSaveBytecode
public void allowToSaveBytecode()
This method allows saving of bytecode
-
denyToSaveBytecode
public void denyToSaveBytecode()
This method denies the bytecode to be saved during transformation.
-
removeOverride
void removeOverride(java.lang.String clazz)
-
removeOverride
void removeOverride(java.lang.String clazz, java.lang.String classloader)
-
cleanOverrides
public java.util.List<java.lang.String[]> cleanOverrides(java.lang.String patterns)
-
-