public abstract class ClassInstrumentor
extends java.lang.Object
| Modifier and Type | Class and Description | 
|---|---|
| static interface  | ClassInstrumentor.Decorator | 
| Modifier | Constructor and Description | 
|---|---|
| protected  | ClassInstrumentor(ClassInstrumentor.Decorator decorator) | 
| Modifier and Type | Method and Description | 
|---|---|
| protected abstract void | addDirectCallConstructor(MutableClass mutableClass) | 
| MutableClass | analyzeClass(byte[] origClassBytes,
            InstrumentationConfiguration config,
            ClassNodeProvider classNodeProvider) | 
| protected abstract void | generateClassHandlerCall(MutableClass mutableClass,
                        org.objectweb.asm.tree.MethodNode originalMethod,
                        java.lang.String originalMethodName,
                        org.robolectric.internal.bytecode.RobolectricGeneratorAdapter generator) | 
| byte[] | instrument(byte[] origBytes,
          InstrumentationConfiguration config,
          ClassNodeProvider classNodeProvider) | 
| void | instrument(MutableClass mutableClass) | 
| protected void | instrumentNormalMethod(MutableClass mutableClass,
                      org.objectweb.asm.tree.MethodNode method)Rename the method from  methodNameto$$robo$$methodName. | 
| protected abstract void | interceptInvokeVirtualMethod(MutableClass mutableClass,
                            java.util.ListIterator<org.objectweb.asm.tree.AbstractInsnNode> instructions,
                            org.objectweb.asm.tree.MethodInsnNode targetMethod)Decides to call through the appropriate method to intercept the method with an INVOKEVIRTUAL Opcode, depending if the invokedynamic bytecode instruction is available (Java 7+). | 
| protected void | makeMethodPublic(org.objectweb.asm.tree.MethodNode method)Replaces protected and private method modifiers with public. | 
| protected abstract void | writeCallToInitializing(MutableClass mutableClass,
                       org.robolectric.internal.bytecode.RobolectricGeneratorAdapter generator) | 
protected ClassInstrumentor(ClassInstrumentor.Decorator decorator)
public MutableClass analyzeClass(byte[] origClassBytes, InstrumentationConfiguration config, ClassNodeProvider classNodeProvider)
public byte[] instrument(byte[] origBytes,
                         InstrumentationConfiguration config,
                         ClassNodeProvider classNodeProvider)
public void instrument(MutableClass mutableClass)
protected abstract void addDirectCallConstructor(MutableClass mutableClass)
protected abstract void writeCallToInitializing(MutableClass mutableClass, org.robolectric.internal.bytecode.RobolectricGeneratorAdapter generator)
protected void instrumentNormalMethod(MutableClass mutableClass, org.objectweb.asm.tree.MethodNode method)
methodName to $$robo$$methodName.final and native modifiers, if present.methodName which delegates to the ClassHandler.protected abstract void interceptInvokeVirtualMethod(MutableClass mutableClass, java.util.ListIterator<org.objectweb.asm.tree.AbstractInsnNode> instructions, org.objectweb.asm.tree.MethodInsnNode targetMethod)
Decides to call through the appropriate method to intercept the method with an INVOKEVIRTUAL Opcode, depending if the invokedynamic bytecode instruction is available (Java 7+).
protected void makeMethodPublic(org.objectweb.asm.tree.MethodNode method)
Replaces protected and private method modifiers with public.
protected abstract void generateClassHandlerCall(MutableClass mutableClass, org.objectweb.asm.tree.MethodNode originalMethod, java.lang.String originalMethodName, org.robolectric.internal.bytecode.RobolectricGeneratorAdapter generator)