class SerializingCloner extends java.lang.Object implements ObjectCloner
| Modifier and Type | Class and Description |
|---|---|
private static class |
SerializingCloner.ByteDataStep |
(package private) class |
SerializingCloner.ClonerPutField |
private static class |
SerializingCloner.CloneStep |
private static class |
SerializingCloner.Step |
(package private) class |
SerializingCloner.StepObjectInput |
(package private) class |
SerializingCloner.StepObjectInputStream |
(package private) class |
SerializingCloner.StepObjectOutput |
(package private) class |
SerializingCloner.StepObjectOutputStream |
| Modifier and Type | Field and Description |
|---|---|
private int |
bufferSize |
private ClassCloner |
classCloner |
private java.util.IdentityHashMap<java.lang.Object,java.lang.Object> |
clones |
private CloneTable |
delegate |
private ObjectResolver |
objectPreResolver |
private ObjectResolver |
objectResolver |
private static IdentityIntMap<java.lang.Class<?>> |
PRIMITIVE_ARRAYS |
private static java.lang.reflect.Field |
proxyInvocationHandler |
private SerializableClassRegistry |
registry |
private SerializabilityChecker |
serializabilityChecker |
private static java.util.Set<java.lang.Class<?>> |
UNCLONED |
IDENTITY| Constructor and Description |
|---|
SerializingCloner(ClonerConfiguration configuration)
Create a new instance.
|
| Modifier and Type | Method and Description |
|---|---|
java.lang.Object |
clone(java.lang.Object orig)
Create a deep clone of the given object.
|
private java.lang.Object |
clone(java.lang.Object orig,
boolean replace) |
private void |
cloneFields(SerializingCloner.ClonerPutField fields) |
private SerializingCloner.StepObjectInputStream |
createStepObjectInputStream(java.lang.Object clone,
SerializableClass cloneInfo,
SerializingCloner.ClonerPutField fields,
java.util.Queue<SerializingCloner.Step> steps) |
private SerializingCloner.StepObjectOutputStream |
createStepObjectOutputStream(java.lang.Object orig,
SerializingCloner.ClonerPutField fields,
java.util.Queue<SerializingCloner.Step> steps) |
private static java.lang.reflect.InvocationHandler |
getInvocationHandler(java.lang.Object orig) |
private void |
initSerializableClone(java.lang.Object orig,
SerializableClass origInfo,
java.lang.Object clone,
SerializableClass cloneInfo) |
private void |
prepareFields(java.lang.Object subject,
SerializingCloner.ClonerPutField fields) |
void |
reset()
Clear the cloner state and any caches.
|
private static java.lang.Object |
simpleClone(java.lang.Object orig,
java.lang.Class<?> objClass) |
private void |
storeFields(SerializableClass cloneInfo,
java.lang.Object clone,
SerializingCloner.ClonerPutField fields) |
private final CloneTable delegate
private final ObjectResolver objectResolver
private final ObjectResolver objectPreResolver
private final ClassCloner classCloner
private final SerializabilityChecker serializabilityChecker
private final int bufferSize
private final SerializableClassRegistry registry
private final java.util.IdentityHashMap<java.lang.Object,java.lang.Object> clones
private static final java.util.Set<java.lang.Class<?>> UNCLONED
private static final IdentityIntMap<java.lang.Class<?>> PRIMITIVE_ARRAYS
private static final java.lang.reflect.Field proxyInvocationHandler
SerializingCloner(ClonerConfiguration configuration)
configuration - the configuration to usepublic void reset()
ObjectClonerreset in interface ObjectClonerpublic java.lang.Object clone(java.lang.Object orig)
throws java.io.IOException,
java.lang.ClassNotFoundException
ObjectClonerclone in interface ObjectClonerorig - the original objectjava.io.IOException - if a serialization error occursjava.lang.ClassNotFoundException - if a class cannot be loaded during the cloning processprivate java.lang.Object clone(java.lang.Object orig,
boolean replace)
throws java.io.IOException,
java.lang.ClassNotFoundException
java.io.IOExceptionjava.lang.ClassNotFoundExceptionprivate void initSerializableClone(java.lang.Object orig,
SerializableClass origInfo,
java.lang.Object clone,
SerializableClass cloneInfo)
throws java.io.IOException,
java.lang.ClassNotFoundException
java.io.IOExceptionjava.lang.ClassNotFoundExceptionprivate SerializingCloner.StepObjectInputStream createStepObjectInputStream(java.lang.Object clone, SerializableClass cloneInfo, SerializingCloner.ClonerPutField fields, java.util.Queue<SerializingCloner.Step> steps) throws java.io.IOException
java.io.IOExceptionprivate SerializingCloner.StepObjectOutputStream createStepObjectOutputStream(java.lang.Object orig, SerializingCloner.ClonerPutField fields, java.util.Queue<SerializingCloner.Step> steps) throws java.io.IOException
java.io.IOExceptionprivate void prepareFields(java.lang.Object subject,
SerializingCloner.ClonerPutField fields)
throws java.io.InvalidObjectException
java.io.InvalidObjectExceptionprivate void cloneFields(SerializingCloner.ClonerPutField fields) throws java.io.IOException, java.lang.ClassNotFoundException
java.io.IOExceptionjava.lang.ClassNotFoundExceptionprivate void storeFields(SerializableClass cloneInfo, java.lang.Object clone, SerializingCloner.ClonerPutField fields) throws java.io.IOException
java.io.IOExceptionprivate static java.lang.Object simpleClone(java.lang.Object orig,
java.lang.Class<?> objClass)
private static java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object orig)