Class SafeObjectOutputStream

  • All Implemented Interfaces:
    DataOutput, ObjectOutput, ObjectStreamConstants, AutoCloseable, ExternalizeConstants

    public class SafeObjectOutputStream
    extends Object
    implements ObjectOutput, ObjectStreamConstants, ExternalizeConstants
    A SafeObjectOutputStream provides extra mechanisms to ensure that objects can be safely serialized to the ObjectOutput. If an Object is written to a normal ObjectOutput, the ObjectOutput is left in an unknown state if a NotSerializableException occurs. The SafeObjectOutputStream does some additonal checking to ensure that the Object can be safely written. If the Object is suspicious, it is first written to a buffer to ensure that the underlying ObjectOutput is not corrupted. In addition, SafeObjectOutputStream provides extra methods to write containers of Objects. For example the writeMap object will write the key and value pairs that are can be serialized.
    See Also:
    SafeObjectInputStream
    • Field Detail

      • notSerializableList

        public static final Hashtable notSerializableList
    • Method Detail

      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • writeMap

        public boolean writeMap​(Map map)
                         throws IOException
        Write a map FORMAT for null map EMPTY_OBJECT FORMAT for non-empty map ACTIVE_OBJECT for each contained key value pair writePair EMPTY_OBJECT (indicates end of the list
        Parameters:
        ll -
        Returns:
        Throws:
        IOException
      • writeList

        public boolean writeList​(List al)
                          throws IOException
        Write a list. FORMAT for null list EMPTY_OBJECT FORMAT for non-empty list ACTIVE_OBJECT for each contained object ACTOVE_OBJECT writeObject EMPTY_OBJECT (indicates end of the list
        Parameters:
        ll -
        Returns:
        Throws:
        IOException
      • writePair

        public boolean writePair​(Object obj1,
                                 boolean isSafe1,
                                 Object obj2,
                                 boolean isSafe2)
                          throws IOException
        Writes pair of objects to the stream. If the objects are known (apriori) to be completely serializable they are "safe". Safe objects are written directly to the stream. Objects that are not known are to be safe are tested for safety and only written if they are deemed safe. Unsafe objects are not written. Note: The java.io.ObjectOutputStream is left in an unrecoverable state if any object written to it causes a serialization error. So please use the isSafe parameter wisely FORMAT for non-serializable key/value pair nothing is written FORMAT for safe serializable key/value pair ACTIVE_OBJECT FORM_OBJECT Object FORMAT for other serializable key/value pair ACTIVE_OBJECT FORM_BYTE length of bytes bytes representing the object
        Parameters:
        obj1 -
        isSafe1 - true if you know that object can be safely serialized. false if the object needs to be tested for serialization.
        obj2 -
        isSafe2 - true if you know that object can be safely serialized. false if the object needs to be tested for serialization.
        Throws:
        IOException
      • writeItem

        public boolean writeItem​(Object obj,
                                 boolean isSafe)
                          throws IOException
        Writes pair of objects to the stream. If the objects are known (apriori) to be completely serializable they are "safe". Safe objects are written directly to the stream. Objects that are not known are to be safe are tested for safety and only written if they are deemed safe. Unsafe objects are not written. Note: The java.io.ObjectOutputStream is left in an unrecoverable state if any object written to it causes a serialization error. So please use the isSafe parameter wisely FORMAT for non-serializable key/value pair nothing is written FORMAT for safe serializable key/value pair ACTIVE_OBJECT FORM_OBJECT Object FORMAT for other serializable key/value pair ACTIVE_OBJECT FORM_BYTE length of bytes bytes representing the object
        Parameters:
        obj1 -
        isSafe1 - true if you know that object can be safely serialized. false if the object needs to be tested for serialization.
        obj2 -
        isSafe2 - true if you know that object can be safely serialized. false if the object needs to be tested for serialization.
        Throws:
        IOException