Module org.apache.wicket.core
Class CheckingObjectOutputStream
java.lang.Object
java.io.OutputStream
java.io.ObjectOutputStream
org.apache.wicket.core.util.objects.checker.CheckingObjectOutputStream
- All Implemented Interfaces:
Closeable
,DataOutput
,Flushable
,ObjectOutput
,ObjectStreamConstants
,AutoCloseable
Checks an object tree during serialization for wrong state by delegating the work
to the used
IObjectChecker
s.
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 accessible that would otherwise be hidden. You should call
isAvailable()
to see whether this class can operate properly.
An ObjectOutputStream that uses IObjectChecker
s to check the
state of the object before serializing it. If the checker returns
IObjectChecker.Result.Status.FAILURE
then the serialization process is stopped and the error is logged.
-
Nested Class Summary
Nested ClassesNested 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
ConstructorsConstructorDescriptionCheckingObjectOutputStream
(OutputStream outputStream, IObjectChecker... checkers) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
static boolean
Gets whether we can execute the tests.void
reset()
protected final String
toPrettyPrintedStack
(String type) Dump with indentation.protected final void
Methods inherited from class java.io.ObjectOutputStream
annotateClass, annotateProxyClass, 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
Methods inherited from class java.io.OutputStream
nullOutputStream
-
Constructor Details
-
CheckingObjectOutputStream
public CheckingObjectOutputStream(OutputStream outputStream, IObjectChecker... checkers) throws IOException, SecurityException Constructor.- Parameters:
outputStream
- the output stream where the serialized object will be written upon successful checkcheckers
- thecheckers
that will actually check the objects- Throws:
IOException
SecurityException
-
-
Method Details
-
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
-
toPrettyPrintedStack
Dump with indentation.- Parameters:
type
- the type that couldn't be serialized- Returns:
- A very pretty dump
-
writeObjectOverride
- Overrides:
writeObjectOverride
in classObjectOutputStream
- Throws:
IOException
- See Also:
-
reset
- Overrides:
reset
in classObjectOutputStream
- Throws:
IOException
- See Also:
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceObjectOutput
- Overrides:
close
in classObjectOutputStream
- Throws:
IOException
-