Class SerializationHelper
- Deep clone using serialization
- Serialize managing finally and IOException
- Deserialize managing finally and IOException
This class throws exceptions for invalid null
inputs.
- Since:
- 1.0
-
Method Summary
Modifier and TypeMethodDescriptionstatic Object
clone
(Serializable object) Deep clone an object using serialization.static ClassLoader
Returns the Thread Context ClassLoader (TCCL).static Object
deserialize
(byte[] objectData) Deserializes an object from an array of bytes using the Thread Context ClassLoader (TCCL).static Object
deserialize
(byte[] objectData, ClassLoader loader) Deserializes an object from an array of bytes.static <T> T
deserialize
(InputStream inputStream) Deserializes an object from the given stream using the Thread Context ClassLoader (TCCL).static Object
deserialize
(InputStream inputStream, ClassLoader loader) Deserializes an object from the given stream using the Thread Context ClassLoader (TCCL).static <T> T
doDeserialize
(InputStream inputStream, ClassLoader loader, ClassLoader fallbackLoader1, ClassLoader fallbackLoader2) static ClassLoader
static byte[]
serialize
(Serializable obj) Serializes an object to a byte array for storage or externalization.static void
serialize
(Serializable obj, OutputStream outputStream) Serializes an object to the given stream.
-
Method Details
-
clone
Deep clone an object using serialization.This is many times slower than writing clone methods by hand on all objects in your object graph. However, for complex object graphs, or for those that don't support deep cloning this can be a simple alternative implementation. Of course all the objects must be
Serializable
.- Parameters:
object
- theSerializable
object to clone- Returns:
- the cloned object
- Throws:
SerializationException
- (runtime) if the serialization fails
-
serialize
public static void serialize(Serializable obj, OutputStream outputStream) throws SerializationException Serializes an object to the given stream.
The stream will be closed once the object is written. This avoids the need for a finally clause, and maybe also for exception handling, in the application code.
The stream passed in is not buffered internally within this method. This is the responsibility of the caller, if desired.
- Parameters:
obj
- the object to serialize to bytes, may be nulloutputStream
- the stream to write to, must not be null- Throws:
IllegalArgumentException
- ifoutputStream
is nullSerializationException
- (runtime) if the serialization fails
-
serialize
Serializes an object to a byte array for storage or externalization.- Parameters:
obj
- the object to serialize to bytes- Returns:
- a byte[] with the converted Serializable
- Throws:
SerializationException
- (runtime) if the serialization fails
-
deserialize
Deserializes an object from the given stream using the Thread Context ClassLoader (TCCL).Delegates to
doDeserialize(java.io.InputStream, java.lang.ClassLoader, java.lang.ClassLoader, java.lang.ClassLoader)
- Parameters:
inputStream
- the serialized object input stream, must not be null- Returns:
- the deserialized object
- Throws:
IllegalArgumentException
- ifinputStream
is nullSerializationException
- (runtime) if the serialization fails
-
defaultClassLoader
Returns the Thread Context ClassLoader (TCCL).- Returns:
- The current TCCL
-
hibernateClassLoader
-
deserialize
public static Object deserialize(InputStream inputStream, ClassLoader loader) throws SerializationException Deserializes an object from the given stream using the Thread Context ClassLoader (TCCL). If there is no TCCL set, the classloader of the calling class is used.The stream will be closed once the object is read. This avoids the need for a finally clause, and maybe also for exception handling, in the application code.
The stream passed in is not buffered internally within this method. This is the responsibility of the caller, if desired.
- Parameters:
inputStream
- the serialized object input stream, must not be nullloader
- The classloader to use- Returns:
- the deserialized object
- Throws:
IllegalArgumentException
- ifinputStream
isnull
SerializationException
- (runtime) if the serialization fails
-
doDeserialize
public static <T> T doDeserialize(InputStream inputStream, ClassLoader loader, ClassLoader fallbackLoader1, ClassLoader fallbackLoader2) throws SerializationException - Throws:
SerializationException
-
deserialize
Deserializes an object from an array of bytes using the Thread Context ClassLoader (TCCL). If there is no TCCL set, the classloader of the calling class is used.Delegates to
deserialize(byte[], ClassLoader)
- Parameters:
objectData
- the serialized object, must not be null- Returns:
- the deserialized object
- Throws:
IllegalArgumentException
- ifobjectData
isnull
SerializationException
- (runtime) if the serialization fails
-
deserialize
public static Object deserialize(byte[] objectData, ClassLoader loader) throws SerializationException Deserializes an object from an array of bytes.Delegates to
deserialize(InputStream, ClassLoader)
using aByteArrayInputStream
to wrap the array.- Parameters:
objectData
- the serialized object, must not be nullloader
- The classloader to use- Returns:
- the deserialized object
- Throws:
IllegalArgumentException
- ifobjectData
isnull
SerializationException
- (runtime) if the serialization fails
-