public abstract class AbstractMainMockTransformer extends java.lang.Object implements MockTransformer
| Modifier and Type | Class and Description |
|---|---|
protected class |
AbstractMainMockTransformer.PowerMockExpressionEditor |
| Modifier and Type | Field and Description |
|---|---|
private static int |
METHOD_CODE_LENGTH_LIMIT |
protected TransformStrategy |
strategy |
private static java.lang.String |
VOID |
| Constructor and Description |
|---|
AbstractMainMockTransformer(TransformStrategy strategy) |
| Modifier and Type | Method and Description |
|---|---|
protected java.lang.String |
allowMockingOfPackagePrivateClasses(javassist.CtClass clazz) |
protected void |
allowMockingOfStaticAndFinalAndNativeMethods(javassist.CtClass clazz) |
protected javassist.CtClass |
ensureJvmMethodSizeLimit(javassist.CtClass clazz)
According to JVM specification method size must be lower than 65536 bytes.
|
private java.lang.String |
getCorrectReturnValueType(javassist.CtClass returnTypeAsCtClass) |
private java.lang.String |
getReturnTypeAsString(javassist.CtMethod method) |
private boolean |
isMethodSizeExceeded(javassist.CtMethod method) |
private void |
modifyMethod(javassist.CtMethod method) |
protected void |
removeFinalModifierFromAllStaticFinalFields(javassist.CtClass clazz) |
protected void |
removeFinalModifierFromClass(javassist.CtClass clazz) |
protected void |
setAllConstructorsToPublic(javassist.CtClass clazz) |
protected void |
suppressStaticInitializerIfRequested(javassist.CtClass clazz,
java.lang.String name) |
javassist.CtClass |
transform(javassist.CtClass clazz)
Transforms the
clazz. |
protected abstract javassist.CtClass |
transformMockClass(javassist.CtClass clazz) |
private static final java.lang.String VOID
private static final int METHOD_CODE_LENGTH_LIMIT
protected final TransformStrategy strategy
public AbstractMainMockTransformer(TransformStrategy strategy)
protected java.lang.String allowMockingOfPackagePrivateClasses(javassist.CtClass clazz)
protected void suppressStaticInitializerIfRequested(javassist.CtClass clazz,
java.lang.String name)
throws javassist.CannotCompileException
javassist.CannotCompileExceptionprotected void removeFinalModifierFromClass(javassist.CtClass clazz)
protected void allowMockingOfStaticAndFinalAndNativeMethods(javassist.CtClass clazz)
throws javassist.NotFoundException,
javassist.CannotCompileException
javassist.NotFoundExceptionjavassist.CannotCompileExceptionprotected void removeFinalModifierFromAllStaticFinalFields(javassist.CtClass clazz)
protected void setAllConstructorsToPublic(javassist.CtClass clazz)
protected javassist.CtClass ensureJvmMethodSizeLimit(javassist.CtClass clazz)
throws javassist.CannotCompileException,
javassist.NotFoundException
When the limit is exceeded method's body is replaced by exception throw. Method is then instrumented again to allow mocking and suppression.
javassist.CannotCompileExceptionjavassist.NotFoundExceptionprivate boolean isMethodSizeExceeded(javassist.CtMethod method)
private void modifyMethod(javassist.CtMethod method)
throws javassist.NotFoundException,
javassist.CannotCompileException
javassist.NotFoundExceptionjavassist.CannotCompileExceptionprivate java.lang.String getReturnTypeAsString(javassist.CtMethod method)
throws javassist.NotFoundException
javassist.NotFoundExceptionprivate java.lang.String getCorrectReturnValueType(javassist.CtClass returnTypeAsCtClass)
public javassist.CtClass transform(javassist.CtClass clazz)
throws java.lang.Exception
MockTransformerclazz.transform in interface MockTransformerclazz - The class to be
transform into a mock enabled class.CtClass representation of the mocked class.java.lang.Exceptionprotected abstract javassist.CtClass transformMockClass(javassist.CtClass clazz)
throws javassist.CannotCompileException,
javassist.NotFoundException
javassist.CannotCompileExceptionjavassist.NotFoundException