Package com.gargoylesoftware.base.io
Class CondensedObjectOutputStream
java.lang.Object
java.io.OutputStream
java.io.ObjectOutputStream
com.gargoylesoftware.base.io.CondensedObjectOutputStream
- All Implemented Interfaces:
Closeable
,DataOutput
,Flushable
,ObjectOutput
,ObjectStreamConstants
,AutoCloseable
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
ObjectOutputStream.PutField
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final List
private final String[]
The list of classes that we can try condensing.private final List
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 TypeMethodDescriptionprotected Object
replaceObject
(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
-
Field Details
-
classNames_
The list of classes that we can try condensing. Only classes that are immutable should be in this list. -
classes_
-
objects_
-
-
Constructor Details
-
CondensedObjectOutputStream
Create the stream- Parameters:
stream
- The output stream that we are wrapping- Throws:
IOException
- If the superclass throws an IOException in it's constructor.
-
-
Method Details
-
replaceObject
Overrides the superclass to perform substitutions of duplicate immutable objects.- Overrides:
replaceObject
in classObjectOutputStream
- 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.
-