Class AbstractMainMockTransformer
- java.lang.Object
-
- org.powermock.core.transformers.impl.AbstractMainMockTransformer
-
- All Implemented Interfaces:
MockTransformer
- Direct Known Subclasses:
ClassMockTransformer,InterfaceMockTransformer
public abstract class AbstractMainMockTransformer extends java.lang.Object implements MockTransformer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classAbstractMainMockTransformer.PowerMockExpressionEditor
-
Field Summary
Fields Modifier and Type Field Description private static intMETHOD_CODE_LENGTH_LIMITprotected TransformStrategystrategyprivate static java.lang.StringVOID
-
Constructor Summary
Constructors Constructor Description AbstractMainMockTransformer(TransformStrategy strategy)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected java.lang.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 java.lang.StringgetCorrectReturnValueType(javassist.CtClass returnTypeAsCtClass)private java.lang.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, java.lang.String name)javassist.CtClasstransform(javassist.CtClass clazz)Transforms theclazz.protected abstract javassist.CtClasstransformMockClass(javassist.CtClass clazz)
-
-
-
Field Detail
-
VOID
private static final java.lang.String VOID
- See Also:
- Constant Field Values
-
METHOD_CODE_LENGTH_LIMIT
private static final int METHOD_CODE_LENGTH_LIMIT
- See Also:
- Constant Field Values
-
strategy
protected final TransformStrategy strategy
-
-
Constructor Detail
-
AbstractMainMockTransformer
public AbstractMainMockTransformer(TransformStrategy strategy)
-
-
Method Detail
-
allowMockingOfPackagePrivateClasses
protected java.lang.String allowMockingOfPackagePrivateClasses(javassist.CtClass clazz)
-
suppressStaticInitializerIfRequested
protected void suppressStaticInitializerIfRequested(javassist.CtClass clazz, java.lang.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.NotFoundExceptionAccording 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:
- JVM specification
-
isMethodSizeExceeded
private boolean isMethodSizeExceeded(javassist.CtMethod method)
-
modifyMethod
private void modifyMethod(javassist.CtMethod method) throws javassist.NotFoundException, javassist.CannotCompileException- Throws:
javassist.NotFoundExceptionjavassist.CannotCompileException
-
getReturnTypeAsString
private java.lang.String getReturnTypeAsString(javassist.CtMethod method) throws javassist.NotFoundException- Throws:
javassist.NotFoundException
-
getCorrectReturnValueType
private java.lang.String getCorrectReturnValueType(javassist.CtClass returnTypeAsCtClass)
- Returns:
- The correct return type, i.e. takes care of casting the a wrapper type to primitive type if needed.
-
transform
public javassist.CtClass transform(javassist.CtClass clazz) throws java.lang.ExceptionDescription 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:
java.lang.Exception
-
transformMockClass
protected abstract javassist.CtClass transformMockClass(javassist.CtClass clazz) throws javassist.CannotCompileException, javassist.NotFoundException- Throws:
javassist.CannotCompileExceptionjavassist.NotFoundException
-
-