java.lang.Object
java.io.InputStream
java.io.ObjectInputStream
org.apache.wsif.base.WSIFObjectInputStream
- All Implemented Interfaces:
- java.io.Closeable, java.io.DataInput, java.io.ObjectInput, java.io.ObjectStreamConstants
- class WSIFObjectInputStream
- extends java.io.ObjectInputStream
Class FObjectInputStream overloads the class ObjectInputStream
to solve the bug reported under BugID
4171142 .
If an object contains primitiv data types and you try to serialize/deserialize
it than you will get an ClassNotFoundException for the primitiv data type.
Reason for this exception is that the ObjectInputStream try to resolve the
data type from java.lang.<primitiv> which does not work.
The solution for the problem is to override the method resolveClass and to
bypass the resolution for primitiv data types.
| Nested classes inherited from class java.io.ObjectInputStream |
java.io.ObjectInputStream.GetField |
| Fields inherited from interface java.io.ObjectStreamConstants |
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, 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_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING |
| Methods inherited from class java.io.ObjectInputStream |
available, close, defaultReadObject, enableResolveObject, read, read, readBoolean, readByte, readChar, readClassDescriptor, readDouble, readFields, readFloat, readFully, readFully, readInt, readLine, readLong, readObject, readObjectOverride, readShort, readStreamHeader, readUnsignedByte, readUnsignedShort, readUTF, registerValidation, resolveObject, resolveProxyClass, skipBytes |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
WSIFObjectInputStream
WSIFObjectInputStream(java.io.InputStream in)
throws java.io.IOException,
java.io.StreamCorruptedException
- Create an ObjectInputStream that reads from the specified InputStream.
The stream header containing the magic number and version number
are read from the stream and verified. This method will block
until the corresponding ObjectOutputStream has written and flushed the
header.
resolveClass
protected java.lang.Class resolveClass(java.io.ObjectStreamClass v)
throws java.io.IOException,
java.lang.ClassNotFoundException
- Load the local class equivalent of the specified stream class description.
Subclasses may implement this method to allow classes to be
fetched from an alternate source.
The corresponding method in ObjectOutputStream is
annotateClass. This method will be invoked only once for each
unique class in the stream. This method can be implemented by
subclasses to use an alternate loading mechanism but must
return a Class object. Once returned, the serialVersionUID of the
class is compared to the serialVersionUID of the serialized class.
If there is a mismatch, the deserialization fails and an exception
is raised.
By default the class name is resolved relative to the class
that called readObject.