org.jbpm.util
Class CustomLoaderObjectInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.ObjectInputStream
          extended by org.jbpm.util.CustomLoaderObjectInputStream
All Implemented Interfaces:
Closeable, DataInput, ObjectInput, ObjectStreamConstants

public class CustomLoaderObjectInputStream
extends ObjectInputStream

Specialized object input stream that allows classes to be fetched through a custom class loader if the stream is unable to resolve them in the usual manner.

Author:
Alejandro Guizar

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
protected CustomLoaderObjectInputStream()
          Provide a way for subclasses to not have to allocate private data just used by the platform's implementation of ObjectInputStream.
  CustomLoaderObjectInputStream(InputStream in)
          Creates a CustomLoaderObjectInputStream that reads from the specified input stream and resolves classes using the context class loader.
  CustomLoaderObjectInputStream(InputStream in, ClassLoader customLoader)
          Creates a CustomLoaderObjectInputStream that reads from the specified input stream and resolves classes using the given class loader.
 
Method Summary
 ClassLoader getCustomLoader()
          Returns the loader used by this stream for resolving classes.
protected  Class resolveClass(ObjectStreamClass desc)
           
protected  Class resolveProxyClass(String[] 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

CustomLoaderObjectInputStream

protected CustomLoaderObjectInputStream()
                                 throws IOException
Provide a way for subclasses to not have to allocate private data just used by the platform's implementation of ObjectInputStream.

Throws:
IOException - if an I/O error occurs

CustomLoaderObjectInputStream

public CustomLoaderObjectInputStream(InputStream in)
                              throws IOException
Creates a CustomLoaderObjectInputStream that reads from the specified input stream and resolves classes using the context class loader.

Parameters:
in - input stream to read from
Throws:
IOException - if an I/O error occurs while reading stream header
SecurityException - if untrusted subclass illegally overrides security-sensitive methods; note that this class does not override said methods

CustomLoaderObjectInputStream

public CustomLoaderObjectInputStream(InputStream in,
                                     ClassLoader customLoader)
                              throws IOException
Creates a CustomLoaderObjectInputStream that reads from the specified input stream and resolves classes using the given class loader.

Parameters:
in - input stream to read from
customLoader - the loader to use for resolving classes
Throws:
IOException - if an I/O error occurs while reading stream header
IllegalArgumentException - if customLoader is null
SecurityException - if untrusted subclass illegally overrides security-sensitive methods; note that this class does not override said methods
Method Detail

getCustomLoader

public ClassLoader getCustomLoader()
Returns the loader used by this stream for resolving classes.


resolveClass

protected Class resolveClass(ObjectStreamClass desc)
                      throws IOException,
                             ClassNotFoundException
Overrides:
resolveClass in class ObjectInputStream
Throws:
IOException
ClassNotFoundException

resolveProxyClass

protected Class resolveProxyClass(String[] interfaces)
                           throws IOException,
                                  ClassNotFoundException
Overrides:
resolveProxyClass in class ObjectInputStream
Throws:
IOException
ClassNotFoundException


Copyright © 2011 JBoss, a division of Red Hat, Inc.. All Rights Reserved.