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:
java.io.Closeable, java.io.DataInput, java.io.ObjectInput, java.io.ObjectStreamConstants

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

Throws:
java.io.IOException - if an I/O error occurs

CustomLoaderObjectInputStream

public CustomLoaderObjectInputStream(java.io.InputStream in)
                              throws java.io.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:
java.io.IOException - if an I/O error occurs while reading stream header
java.lang.SecurityException - if untrusted subclass illegally overrides security-sensitive methods; note that this class does not override said methods

CustomLoaderObjectInputStream

public CustomLoaderObjectInputStream(java.io.InputStream in,
                                     java.lang.ClassLoader customLoader)
                              throws java.io.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:
java.io.IOException - if an I/O error occurs while reading stream header
java.lang.IllegalArgumentException - if customLoader is null
java.lang.SecurityException - if untrusted subclass illegally overrides security-sensitive methods; note that this class does not override said methods
Method Detail

getCustomLoader

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


resolveClass

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

resolveProxyClass

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


Copyright © 2010 JBoss Community. All Rights Reserved.