Package org.powermock.classloading
Class DeepCloner
java.lang.Object
org.powermock.classloading.DeepCloner
- All Implemented Interfaces:
DeepClonerSPI
The purpose of the deep cloner is to create a deep clone of an object. An
object can also be cloned to a different class-loader.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
Most of this code has been copied from the Sun14ReflectionProvider in the XStream project. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionClone using the current ContextClassLoader.DeepCloner
(ClassLoader classLoader) Clone using the supplied ClassLoader. -
Method Summary
Modifier and TypeMethodDescriptionprivate static void
assertObjectNotNull
(Object object) <T> T
clone
(T objectToClone) Clones an object.<T> T
clone
(T objectToClone, boolean includeStandardJavaType) private Object
cloneEnum
(ClassLoader targetCL, Object source) private <T> void
cloneFields
(ClassLoader targetCL, Class<T> targetClass, Object source, Object target, Map<Object, Object> referenceMap, boolean cloneStandardJavaTypes) private Object
cloneJavaReflectMethod
(Object source) private void
private Class<DoNotClone>
getDoNotClone
(ClassLoader targetCL) private static Enum
getEnumValue
(Object enumValueOfSourceClassloader, Class<Object> enumTypeLoadedByTargetCL) private static <T> Class<T>
getType
(T object) private Object
instantiateArray
(ClassLoader targetCL, Class<?> arrayClass, Object objectToClone, boolean cloneStandardJavaTypes) private static boolean
private static boolean
isImpliticlySerializable
(Class<?> cls) private static boolean
isIterable
(Class<?> cls) private static boolean
isIterable
(Object object) private boolean
isJavaReflectClass
(Class<?> cls) private boolean
isJavaReflectMethod
(Class<?> cls) private static boolean
isSerializable
(Class<?> cls) private <T> boolean
isSerializableCandidate
(Class<T> targetClass, Object source) private static <T> boolean
isStandardJavaType
(Class<T> targetClass) private static boolean
isStaticFinalModifier
(Field field) private boolean
isSunClass
(Class<?> cls) private <T> T
performClone
(Class<T> targetClass, Object source, boolean shouldCloneStandardJavaTypes) private Object
serializationClone
(Object source)
-
Field Details
-
targetCL
-
referenceMap
-
doNotClone
-
-
Constructor Details
-
DeepCloner
Clone using the supplied ClassLoader. -
DeepCloner
public DeepCloner()Clone using the current ContextClassLoader.
-
-
Method Details
-
getDoNotClone
-
clone
public <T> T clone(T objectToClone) Clones an object.- Specified by:
clone
in interfaceDeepClonerSPI
- Returns:
- A deep clone of the object to clone.
-
clone
public <T> T clone(T objectToClone, boolean includeStandardJavaType) - Parameters:
includeStandardJavaType
-true
also clones standard java types (using simple serialization),false
simply reference to these objects (will be same instance).- Returns:
- A deep clone of the object to clone.
-
getType
-
isClass
-
assertObjectNotNull
-
performClone
-
cloneJavaReflectMethod
-
isJavaReflectMethod
-
isSunClass
-
isJavaReflectClass
-
isSerializableCandidate
-
isImpliticlySerializable
-
isSerializable
-
serializationClone
-
close
-
cloneEnum
-
cloneFields
-
isStandardJavaType
-
isStaticFinalModifier
-
isIterable
-
isIterable
-
getEnumValue
-
instantiateArray
private Object instantiateArray(ClassLoader targetCL, Class<?> arrayClass, Object objectToClone, boolean cloneStandardJavaTypes)
-