Package org.jboss.marshalling.cloner
Class SerializingCloner
- java.lang.Object
-
- org.jboss.marshalling.cloner.SerializingCloner
-
- All Implemented Interfaces:
ObjectCloner
class SerializingCloner extends java.lang.Object implements ObjectCloner
An object cloner which uses serialization methods to clone objects.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 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
-
Field Summary
Fields Modifier and Type Field 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
-
Fields inherited from interface org.jboss.marshalling.cloner.ObjectCloner
IDENTITY
-
-
Constructor Summary
Constructors Constructor Description SerializingCloner(ClonerConfiguration configuration)
Create a new instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method 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)
-
-
-
Field Detail
-
delegate
private final CloneTable delegate
-
objectResolver
private final ObjectResolver objectResolver
-
objectPreResolver
private final ObjectResolver objectPreResolver
-
classCloner
private final ClassCloner classCloner
-
serializabilityChecker
private final SerializabilityChecker serializabilityChecker
-
bufferSize
private final int bufferSize
-
registry
private final SerializableClassRegistry registry
-
clones
private final java.util.IdentityHashMap<java.lang.Object,java.lang.Object> clones
-
UNCLONED
private static final java.util.Set<java.lang.Class<?>> UNCLONED
-
PRIMITIVE_ARRAYS
private static final IdentityIntMap<java.lang.Class<?>> PRIMITIVE_ARRAYS
-
proxyInvocationHandler
private static final java.lang.reflect.Field proxyInvocationHandler
-
-
Constructor Detail
-
SerializingCloner
SerializingCloner(ClonerConfiguration configuration)
Create a new instance.- Parameters:
configuration
- the configuration to use
-
-
Method Detail
-
reset
public void reset()
Description copied from interface:ObjectCloner
Clear the cloner state and any caches.- Specified by:
reset
in interfaceObjectCloner
-
clone
public java.lang.Object clone(java.lang.Object orig) throws java.io.IOException, java.lang.ClassNotFoundException
Description copied from interface:ObjectCloner
Create a deep clone of the given object.- Specified by:
clone
in interfaceObjectCloner
- Parameters:
orig
- the original object- Returns:
- the deep clone
- Throws:
java.io.IOException
- if a serialization error occursjava.lang.ClassNotFoundException
- if a class cannot be loaded during the cloning process
-
clone
private java.lang.Object clone(java.lang.Object orig, boolean replace) throws java.io.IOException, java.lang.ClassNotFoundException
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
-
initSerializableClone
private void initSerializableClone(java.lang.Object orig, SerializableClass origInfo, java.lang.Object clone, SerializableClass cloneInfo) throws java.io.IOException, java.lang.ClassNotFoundException
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
-
createStepObjectInputStream
private SerializingCloner.StepObjectInputStream createStepObjectInputStream(java.lang.Object clone, SerializableClass cloneInfo, SerializingCloner.ClonerPutField fields, java.util.Queue<SerializingCloner.Step> steps) throws java.io.IOException
- Throws:
java.io.IOException
-
createStepObjectOutputStream
private SerializingCloner.StepObjectOutputStream createStepObjectOutputStream(java.lang.Object orig, SerializingCloner.ClonerPutField fields, java.util.Queue<SerializingCloner.Step> steps) throws java.io.IOException
- Throws:
java.io.IOException
-
prepareFields
private void prepareFields(java.lang.Object subject, SerializingCloner.ClonerPutField fields) throws java.io.InvalidObjectException
- Throws:
java.io.InvalidObjectException
-
cloneFields
private void cloneFields(SerializingCloner.ClonerPutField fields) throws java.io.IOException, java.lang.ClassNotFoundException
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
-
storeFields
private void storeFields(SerializableClass cloneInfo, java.lang.Object clone, SerializingCloner.ClonerPutField fields) throws java.io.IOException
- Throws:
java.io.IOException
-
simpleClone
private static java.lang.Object simpleClone(java.lang.Object orig, java.lang.Class<?> objClass)
-
getInvocationHandler
private static java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object orig)
-
-