Package de.hybris.platform.util
Class SerializableChecker
java.lang.Object
java.io.OutputStream
java.io.ObjectOutputStream
de.hybris.platform.util.SerializableChecker
- All Implemented Interfaces:
Closeable,DataOutput,Flushable,ObjectOutput,ObjectStreamConstants,AutoCloseable
Utility class that analyzes objects for non-serializable nodes. Construct with the object you want to check, and then
call
check(Object obj). When a non-serializable object is found, a SerializableChecker.JaloNotSerializableException is
thrown with a message that shows the trace up to the not-serializable object. The exception is thrown for the first
non-serializable instance it encounters, so multiple problems will not be shown.
As this class depends heavily on JDK's serialization internals using introspection, analyzing may not be possible,
for instance when the runtime environment does not have sufficient rights to set fields accesible that would
otherwise be hidden. You should call isAvailable() to see whether this class can operate
properly. If it doesn't, you should fall back to e.g. re-throwing/ printing the NotSerializableException you
probably got before using this class.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classException that is thrown when a non-serializable object was found.Nested classes/interfaces inherited from class java.io.ObjectOutputStream
ObjectOutputStream.PutField -
Field Summary
Fields inherited from interface java.io.ObjectStreamConstants
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, SERIAL_FILTER_PERMISSION, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidstatic booleanGets whether we can execute the tests.voidreset()protected voidMethods inherited from class java.io.ObjectOutputStream
annotateClass, annotateProxyClass, close, defaultWriteObject, drain, enableReplaceObject, flush, putFields, replaceObject, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeClassDescriptor, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeShort, writeStreamHeader, writeUnshared, writeUTFMethods inherited from class java.io.OutputStream
nullOutputStream
-
Constructor Details
-
SerializableChecker
Construct.- Parameters:
exception- exception that should be set as the cause when throwing a new exception- Throws:
IOException
-
-
Method Details
-
reset
- Overrides:
resetin classObjectOutputStream- Throws:
IOException- See Also:
-
check
-
isAvailable
public static boolean isAvailable()Gets whether we can execute the tests. If false, callingcheck(Object)will just return and you are advised to rely on theNotSerializableException. Clients are advised to call this method prior to calling the check method.- Returns:
- whether security settings and underlying API etc allow for accessing the serialization API using introspection
-
writeObjectOverride
- Overrides:
writeObjectOverridein classObjectOutputStream- Throws:
IOException- See Also:
-