Class MethodSizeMockTransformer
- java.lang.Object
-
- org.powermock.core.transformers.javassist.AbstractJavaAssistMockTransformer
-
- org.powermock.core.transformers.javassist.MethodMockTransformer
-
- org.powermock.core.transformers.javassist.MethodSizeMockTransformer
-
- All Implemented Interfaces:
MockTransformer<javassist.CtClass>
public class MethodSizeMockTransformer extends MethodMockTransformer
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.- See Also:
- JVM specification
-
-
Field Summary
Fields Modifier and Type Field Description private static int
MAX_METHOD_CODE_LENGTH_LIMIT
-
Constructor Summary
Constructors Constructor Description MethodSizeMockTransformer(TransformStrategy strategy)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private boolean
isMethodSizeExceeded(javassist.CtMethod method)
javassist.CtClass
transform(javassist.CtClass clazz)
-
Methods inherited from class org.powermock.core.transformers.javassist.MethodMockTransformer
modifyMethod
-
Methods inherited from class org.powermock.core.transformers.javassist.AbstractJavaAssistMockTransformer
getStrategy, transform
-
-
-
-
Field Detail
-
MAX_METHOD_CODE_LENGTH_LIMIT
private static final int MAX_METHOD_CODE_LENGTH_LIMIT
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
MethodSizeMockTransformer
public MethodSizeMockTransformer(TransformStrategy strategy)
-
-
Method Detail
-
transform
public javassist.CtClass transform(javassist.CtClass clazz) throws javassist.CannotCompileException, javassist.NotFoundException
- Specified by:
transform
in classAbstractJavaAssistMockTransformer
- Throws:
javassist.CannotCompileException
javassist.NotFoundException
-
isMethodSizeExceeded
private boolean isMethodSizeExceeded(javassist.CtMethod method)
-
-