public class ClassReplicaCreator
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private static java.util.concurrent.atomic.AtomicInteger |
counter |
private static java.lang.String |
POWERMOCK_INSTANCE_DELEGATOR_FIELD_NAME |
Constructor and Description |
---|
ClassReplicaCreator() |
Modifier and Type | Method and Description |
---|---|
private <T> void |
addDelegatorField(T delegator,
javassist.CtClass replicaClass)
Add a field to the replica class that holds the instance delegator.
|
private void |
copyFields(javassist.CtClass originalClassAsCtClass,
javassist.CtClass newClass) |
java.lang.Class<?> |
createClassReplica(java.lang.Class<?> clazz) |
<T> java.lang.Class<T> |
createInstanceReplica(T delegator)
Create a class that is a replica of type
T . |
private <T> java.lang.String |
generateReplicaClassName(java.lang.Class<T> clazz) |
private static java.lang.String |
getParametersAsString(java.lang.String[] types) |
private java.lang.String[] |
getParameterTypes(javassist.CtMethod ctMethod) |
private java.lang.String |
getReplicaMethodDelegationCode(java.lang.Class<?> clazz,
javassist.CtMethod ctMethod,
java.lang.String classOrInstanceToDelegateTo) |
private static final java.lang.String POWERMOCK_INSTANCE_DELEGATOR_FIELD_NAME
private static java.util.concurrent.atomic.AtomicInteger counter
public java.lang.Class<?> createClassReplica(java.lang.Class<?> clazz)
public <T> java.lang.Class<T> createInstanceReplica(T delegator)
T
. To allow for
partial mocking all calls to non-mocked methods will be delegated to the
delegator
.T
- The type of the replica class to be created.delegator
- The delegator object that will be invoked to allow for partial
mocking.private <T> void addDelegatorField(T delegator, javassist.CtClass replicaClass) throws javassist.CannotCompileException
java.lang.Long
this
methods adds a new field of type delegator.getClass()
to the
replica class.javassist.CannotCompileException
private <T> java.lang.String generateReplicaClassName(java.lang.Class<T> clazz)
private void copyFields(javassist.CtClass originalClassAsCtClass, javassist.CtClass newClass) throws javassist.CannotCompileException, javassist.NotFoundException
javassist.CannotCompileException
javassist.NotFoundException
private java.lang.String getReplicaMethodDelegationCode(java.lang.Class<?> clazz, javassist.CtMethod ctMethod, java.lang.String classOrInstanceToDelegateTo) throws javassist.NotFoundException
javassist.NotFoundException
private java.lang.String[] getParameterTypes(javassist.CtMethod ctMethod) throws javassist.NotFoundException
javassist.NotFoundException
private static java.lang.String getParametersAsString(java.lang.String[] types)