org.apache.axis2.context.externalize
Class SafeObjectOutputStream

java.lang.Object
  extended by org.apache.axis2.context.externalize.SafeObjectOutputStream
All Implemented Interfaces:
java.io.DataOutput, java.io.ObjectOutput, java.io.ObjectStreamConstants, ExternalizeConstants

public class SafeObjectOutputStream
extends java.lang.Object
implements java.io.ObjectOutput, java.io.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 Summary
static java.util.Hashtable notSerializableList
           
 
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, 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
 
Fields inherited from interface org.apache.axis2.context.externalize.ExternalizeConstants
ACTIVE_OBJECT, EMPTY_MARKER, EMPTY_OBJECT, LAST_ENTRY, OBJ_RESTORE_PROBLEM, OBJ_SAVE_PROBLEM, UNSUPPORTED_REVID, UNSUPPORTED_SUID
 
Method Summary
 void close()
           
 void defaultWriteObject()
           
 boolean equals(java.lang.Object o)
           
 void flush()
           
 int hashCode()
           
static SafeObjectOutputStream install(java.io.ObjectOutput out)
          Add the SafeOutputStream if necessary.
 java.io.ObjectOutputStream.PutField putFields()
           
 void reset()
           
 java.lang.String toString()
           
 void useProtocolVersion(int version)
           
 void write(byte[] buf)
           
 void write(byte[] buf, int off, int len)
           
 void write(int val)
           
 void writeBoolean(boolean val)
           
 void writeByte(int val)
           
 void writeBytes(java.lang.String str)
           
 void writeChar(int val)
           
 void writeChars(java.lang.String str)
           
 void writeDouble(double val)
           
 void writeFields()
           
 void writeFloat(float val)
           
 void writeInt(int val)
           
 boolean writeItem(java.lang.Object obj, boolean isSafe)
          Writes pair of objects to the stream.
 boolean writeList(java.util.List al)
          Write a list.
 void writeLong(long val)
           
 boolean writeMap(java.util.Map map)
          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
 void writeObject(java.lang.Object obj)
           
 boolean writePair(java.lang.Object obj1, boolean isSafe1, java.lang.Object obj2, boolean isSafe2)
          Writes pair of objects to the stream.
 void writeShort(int val)
           
 void writeUTF(java.lang.String str)
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

notSerializableList

public static final java.util.Hashtable notSerializableList
Method Detail

install

public static SafeObjectOutputStream install(java.io.ObjectOutput out)
                                      throws java.io.IOException
Add the SafeOutputStream if necessary.

Parameters:
out - Current ObjectOutput
Returns:
Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
Specified by:
close in interface java.io.ObjectOutput
Throws:
java.io.IOException

defaultWriteObject

public void defaultWriteObject()
                        throws java.io.IOException
Throws:
java.io.IOException

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

flush

public void flush()
           throws java.io.IOException
Specified by:
flush in interface java.io.ObjectOutput
Throws:
java.io.IOException

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

putFields

public java.io.ObjectOutputStream.PutField putFields()
                                              throws java.io.IOException
Throws:
java.io.IOException

reset

public void reset()
           throws java.io.IOException
Throws:
java.io.IOException

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

useProtocolVersion

public void useProtocolVersion(int version)
                        throws java.io.IOException
Throws:
java.io.IOException

write

public void write(byte[] buf,
                  int off,
                  int len)
           throws java.io.IOException
Specified by:
write in interface java.io.DataOutput
Specified by:
write in interface java.io.ObjectOutput
Throws:
java.io.IOException

write

public void write(byte[] buf)
           throws java.io.IOException
Specified by:
write in interface java.io.DataOutput
Specified by:
write in interface java.io.ObjectOutput
Throws:
java.io.IOException

write

public void write(int val)
           throws java.io.IOException
Specified by:
write in interface java.io.DataOutput
Specified by:
write in interface java.io.ObjectOutput
Throws:
java.io.IOException

writeBoolean

public void writeBoolean(boolean val)
                  throws java.io.IOException
Specified by:
writeBoolean in interface java.io.DataOutput
Throws:
java.io.IOException

writeByte

public void writeByte(int val)
               throws java.io.IOException
Specified by:
writeByte in interface java.io.DataOutput
Throws:
java.io.IOException

writeBytes

public void writeBytes(java.lang.String str)
                throws java.io.IOException
Specified by:
writeBytes in interface java.io.DataOutput
Throws:
java.io.IOException

writeChar

public void writeChar(int val)
               throws java.io.IOException
Specified by:
writeChar in interface java.io.DataOutput
Throws:
java.io.IOException

writeChars

public void writeChars(java.lang.String str)
                throws java.io.IOException
Specified by:
writeChars in interface java.io.DataOutput
Throws:
java.io.IOException

writeDouble

public void writeDouble(double val)
                 throws java.io.IOException
Specified by:
writeDouble in interface java.io.DataOutput
Throws:
java.io.IOException

writeFields

public void writeFields()
                 throws java.io.IOException
Throws:
java.io.IOException

writeFloat

public void writeFloat(float val)
                throws java.io.IOException
Specified by:
writeFloat in interface java.io.DataOutput
Throws:
java.io.IOException

writeInt

public void writeInt(int val)
              throws java.io.IOException
Specified by:
writeInt in interface java.io.DataOutput
Throws:
java.io.IOException

writeLong

public void writeLong(long val)
               throws java.io.IOException
Specified by:
writeLong in interface java.io.DataOutput
Throws:
java.io.IOException

writeObject

public void writeObject(java.lang.Object obj)
                 throws java.io.IOException
Specified by:
writeObject in interface java.io.ObjectOutput
Throws:
java.io.IOException

writeShort

public void writeShort(int val)
                throws java.io.IOException
Specified by:
writeShort in interface java.io.DataOutput
Throws:
java.io.IOException

writeUTF

public void writeUTF(java.lang.String str)
              throws java.io.IOException
Specified by:
writeUTF in interface java.io.DataOutput
Throws:
java.io.IOException

writeMap

public boolean writeMap(java.util.Map map)
                 throws java.io.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:
java.io.IOException

writeList

public boolean writeList(java.util.List al)
                  throws java.io.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:
java.io.IOException

writePair

public boolean writePair(java.lang.Object obj1,
                         boolean isSafe1,
                         java.lang.Object obj2,
                         boolean isSafe2)
                  throws java.io.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:
java.io.IOException

writeItem

public boolean writeItem(java.lang.Object obj,
                         boolean isSafe)
                  throws java.io.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:
java.io.IOException


Copyright © 2007 Apache Web Services Project. All Rights Reserved.