Package de.hybris.platform.util
Class SerializableChecker
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.ObjectOutputStream
-
- de.hybris.platform.util.SerializableChecker
-
- All Implemented Interfaces:
java.io.Closeable,java.io.DataOutput,java.io.Flushable,java.io.ObjectOutput,java.io.ObjectStreamConstants,java.lang.AutoCloseable
public final class SerializableChecker extends java.io.ObjectOutputStreamUtility class that analyzes objects for non-serializable nodes. Construct with the object you want to check, and then callcheck(Object obj). When a non-serializable object is found, aSerializableChecker.JaloNotSerializableExceptionis 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 theNotSerializableExceptionyou probably got before using this class.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSerializableChecker.JaloNotSerializableExceptionException that is thrown when a non-serializable object was found.
-
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 Constructor Description SerializableChecker(java.io.NotSerializableException exception)Construct.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheck(java.lang.Object obj)static booleanisAvailable()Gets whether we can execute the tests.voidreset()protected voidwriteObjectOverride(java.lang.Object obj)-
Methods 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, writeUTF
-
-
-
-
Method Detail
-
reset
public void reset() throws java.io.IOException- Overrides:
resetin classjava.io.ObjectOutputStream- Throws:
java.io.IOException- See Also:
ObjectOutputStream.reset()
-
check
public void check(java.lang.Object obj)
-
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
protected void writeObjectOverride(java.lang.Object obj) throws java.io.IOException- Overrides:
writeObjectOverridein classjava.io.ObjectOutputStream- Throws:
java.io.IOException- See Also:
ObjectOutputStream.writeObjectOverride(java.lang.Object)
-
-