gate.persist
Class GateAwareObjectInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.ObjectInputStream
          extended by gate.persist.GateAwareObjectInputStream
All Implemented Interfaces:
Closeable, DataInput, ObjectInput, ObjectStreamConstants

public class GateAwareObjectInputStream
extends ObjectInputStream

An ObjectInputStream that attempts to resolve the classes of objects loaded from the stream via the GateClassLoader if they cannot be found by the usual means. This allows LRs to be loaded successfully from a serial datastore when they have features (or annotations with features) whose class is defined in a plugin.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.io.ObjectInputStream
ObjectInputStream.GetField
 
Field Summary
 
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
 
Constructor Summary
GateAwareObjectInputStream(InputStream source)
          Creates a GATE aware object input stream to read from the given source.
 
Method Summary
protected  Class<?> resolveClass(ObjectStreamClass desc)
          Resolve the class of an object read from the stream.
protected  Class<?> resolveProxyClass(String[] interfaces)
          Resolve a proxy class that implements the given interfaces.
 
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, readUnshared, readUnsignedByte, readUnsignedShort, readUTF, registerValidation, resolveObject, skipBytes
 
Methods inherited from class java.io.InputStream
mark, markSupported, read, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.io.ObjectInput
read, skip
 

Constructor Detail

GateAwareObjectInputStream

public GateAwareObjectInputStream(InputStream source)
                           throws IOException
Creates a GATE aware object input stream to read from the given source.

Throws:
IOException
Method Detail

resolveClass

protected Class<?> resolveClass(ObjectStreamClass desc)
                         throws IOException,
                                ClassNotFoundException
Resolve the class of an object read from the stream. First attempts to use the default resolution method provided by ObjectInputStream. If that fails with a ClassNotFoundException then tries to resolve the class via the GATE classloader instead.

Overrides:
resolveClass in class ObjectInputStream
Throws:
IOException
ClassNotFoundException

resolveProxyClass

protected Class<?> resolveProxyClass(String[] interfaces)
                              throws IOException,
                                     ClassNotFoundException
Resolve a proxy class that implements the given interfaces. First attempts to use the default resolution method provided by ObjectInputStream. If that fails with a ClassNotFoundException then tries to resolve the interfaces and create the proxy class using the GATE classloader instead.

Overrides:
resolveProxyClass in class ObjectInputStream
Throws:
IOException
ClassNotFoundException