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 classSerializingCloner.ByteDataStep(package private) classSerializingCloner.ClonerPutFieldprivate static classSerializingCloner.CloneStepprivate static classSerializingCloner.Step(package private) classSerializingCloner.StepObjectInput(package private) classSerializingCloner.StepObjectInputStream(package private) classSerializingCloner.StepObjectOutput(package private) classSerializingCloner.StepObjectOutputStream
-
Field Summary
Fields Modifier and Type Field Description private intbufferSizeprivate ClassClonerclassClonerprivate java.util.IdentityHashMap<java.lang.Object,java.lang.Object>clonesprivate CloneTabledelegateprivate ObjectResolverobjectPreResolverprivate ObjectResolverobjectResolverprivate static IdentityIntMap<java.lang.Class<?>>PRIMITIVE_ARRAYSprivate static java.lang.reflect.FieldproxyInvocationHandlerprivate SerializableClassRegistryregistryprivate SerializabilityCheckerserializabilityCheckerprivate 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.Objectclone(java.lang.Object orig)Create a deep clone of the given object.private java.lang.Objectclone(java.lang.Object orig, boolean replace)private voidcloneFields(SerializingCloner.ClonerPutField fields)private SerializingCloner.StepObjectInputStreamcreateStepObjectInputStream(java.lang.Object clone, SerializableClass cloneInfo, SerializingCloner.ClonerPutField fields, java.util.Queue<SerializingCloner.Step> steps)private SerializingCloner.StepObjectOutputStreamcreateStepObjectOutputStream(java.lang.Object orig, SerializingCloner.ClonerPutField fields, java.util.Queue<SerializingCloner.Step> steps)private static java.lang.reflect.InvocationHandlergetInvocationHandler(java.lang.Object orig)private voidinitSerializableClone(java.lang.Object orig, SerializableClass origInfo, java.lang.Object clone, SerializableClass cloneInfo)private voidprepareFields(java.lang.Object subject, SerializingCloner.ClonerPutField fields)voidreset()Clear the cloner state and any caches.private static java.lang.ObjectsimpleClone(java.lang.Object orig, java.lang.Class<?> objClass)private voidstoreFields(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:ObjectClonerClear the cloner state and any caches.- Specified by:
resetin interfaceObjectCloner
-
clone
public java.lang.Object clone(java.lang.Object orig) throws java.io.IOException, java.lang.ClassNotFoundExceptionDescription copied from interface:ObjectClonerCreate a deep clone of the given object.- Specified by:
clonein 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.IOExceptionjava.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.IOExceptionjava.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.IOExceptionjava.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)
-
-