Class AbstractMainMockTransformer
java.lang.Object
org.powermock.core.transformers.impl.AbstractMainMockTransformer
- All Implemented Interfaces:
MockTransformer
- Direct Known Subclasses:
ClassMockTransformer,InterfaceMockTransformer
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected final class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final intprotected final TransformStrategyprivate static final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected StringallowMockingOfPackagePrivateClasses(javassist.CtClass clazz) protected voidallowMockingOfStaticAndFinalAndNativeMethods(javassist.CtClass clazz) protected javassist.CtClassensureJvmMethodSizeLimit(javassist.CtClass clazz) According to JVM specification method size must be lower than 65536 bytes.private StringgetCorrectReturnValueType(javassist.CtClass returnTypeAsCtClass) private StringgetReturnTypeAsString(javassist.CtMethod method) private booleanisMethodSizeExceeded(javassist.CtMethod method) private voidmodifyMethod(javassist.CtMethod method) protected voidremoveFinalModifierFromAllStaticFinalFields(javassist.CtClass clazz) protected voidremoveFinalModifierFromClass(javassist.CtClass clazz) protected voidsetAllConstructorsToPublic(javassist.CtClass clazz) protected voidsuppressStaticInitializerIfRequested(javassist.CtClass clazz, String name) javassist.CtClasstransform(javassist.CtClass clazz) Transforms theclazz.protected abstract javassist.CtClasstransformMockClass(javassist.CtClass clazz)
-
Field Details
-
VOID
- See Also:
-
METHOD_CODE_LENGTH_LIMIT
private static final int METHOD_CODE_LENGTH_LIMIT- See Also:
-
strategy
-
-
Constructor Details
-
AbstractMainMockTransformer
-
-
Method Details
-
allowMockingOfPackagePrivateClasses
-
suppressStaticInitializerIfRequested
protected void suppressStaticInitializerIfRequested(javassist.CtClass clazz, String name) throws javassist.CannotCompileException - Throws:
javassist.CannotCompileException
-
removeFinalModifierFromClass
protected void removeFinalModifierFromClass(javassist.CtClass clazz) -
allowMockingOfStaticAndFinalAndNativeMethods
protected void allowMockingOfStaticAndFinalAndNativeMethods(javassist.CtClass clazz) throws javassist.NotFoundException, javassist.CannotCompileException - Throws:
javassist.NotFoundExceptionjavassist.CannotCompileException
-
removeFinalModifierFromAllStaticFinalFields
protected void removeFinalModifierFromAllStaticFinalFields(javassist.CtClass clazz) -
setAllConstructorsToPublic
protected void setAllConstructorsToPublic(javassist.CtClass clazz) -
ensureJvmMethodSizeLimit
protected javassist.CtClass ensureJvmMethodSizeLimit(javassist.CtClass clazz) throws javassist.CannotCompileException, javassist.NotFoundException According to JVM specification method size must be lower than 65536 bytes. When that limit is exceeded class loader will fail to load the class. Since instrumentation can increase method size significantly it must be ensured that JVM limit is not exceeded.When the limit is exceeded method's body is replaced by exception throw. Method is then instrumented again to allow mocking and suppression.
- Throws:
javassist.CannotCompileExceptionjavassist.NotFoundException- See Also:
-
isMethodSizeExceeded
private boolean isMethodSizeExceeded(javassist.CtMethod method) -
modifyMethod
private void modifyMethod(javassist.CtMethod method) throws javassist.NotFoundException, javassist.CannotCompileException - Throws:
javassist.NotFoundExceptionjavassist.CannotCompileException
-
getReturnTypeAsString
- Throws:
javassist.NotFoundException
-
getCorrectReturnValueType
- Returns:
- The correct return type, i.e. takes care of casting the a wrapper type to primitive type if needed.
-
transform
Description copied from interface:MockTransformerTransforms theclazz.- Specified by:
transformin interfaceMockTransformer- Parameters:
clazz- The class to be transform into a mock enabled class.- Returns:
- A
CtClassrepresentation of the mocked class. - Throws:
Exception
-
transformMockClass
protected abstract javassist.CtClass transformMockClass(javassist.CtClass clazz) throws javassist.CannotCompileException, javassist.NotFoundException - Throws:
javassist.CannotCompileExceptionjavassist.NotFoundException
-