Class CondensedObjectOutputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.DataOutput, java.io.Flushable, java.io.ObjectOutput, java.io.ObjectStreamConstants, java.lang.AutoCloseable

    public class CondensedObjectOutputStream
    extends java.io.ObjectOutputStream
    A specialized subclass of ObjectOutputStream that is used to serialize objects. This stream will remove duplicate objects from the stream in order to shrink the resulting byte stream.

    Only objects of the following types will be condensed: Character, Double, Integer, Long, Short and String. The biggest benefit will come from duplicate Strings.

    Version:
    $Revision: 1.3 $
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.io.ObjectOutputStream

        java.io.ObjectOutputStream.PutField
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List classes_  
      private java.lang.String[] classNames_
      The list of classes that we can try condensing.
      private java.util.List objects_  
      • 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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Object replaceObject​(java.lang.Object object)
      Overrides the superclass to perform substitutions of duplicate immutable objects.
      • Methods inherited from class java.io.ObjectOutputStream

        annotateClass, annotateProxyClass, close, defaultWriteObject, drain, enableReplaceObject, flush, putFields, reset, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeClassDescriptor, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeObjectOverride, writeShort, writeStreamHeader, writeUnshared, writeUTF
      • Methods inherited from class java.io.OutputStream

        nullOutputStream
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • classNames_

        private final java.lang.String[] classNames_
        The list of classes that we can try condensing. Only classes that are immutable should be in this list.
      • classes_

        private final java.util.List classes_
      • objects_

        private final java.util.List objects_
    • Constructor Detail

      • CondensedObjectOutputStream

        public CondensedObjectOutputStream​(java.io.OutputStream stream)
                                    throws java.io.IOException
        Create the stream
        Parameters:
        stream - The output stream that we are wrapping
        Throws:
        java.io.IOException - If the superclass throws an IOException in it's constructor.
    • Method Detail

      • replaceObject

        protected java.lang.Object replaceObject​(java.lang.Object object)
        Overrides the superclass to perform substitutions of duplicate immutable objects.
        Overrides:
        replaceObject in class java.io.ObjectOutputStream
        Parameters:
        object - The object to be serialized
        Returns:
        Either the object that was passed in or an identical object that had previously been passed in.