ClassLoaderObjectInputStream (Commons IO 2.5)
Date: 2016-12-01

org.apache.commons.io.input

## Class ClassLoaderObjectInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.ObjectInputStream
    - - org.apache.commons.io.input.ClassLoaderObjectInputStream

- All Implemented Interfaces:
    java.io.Closeable, java.io.DataInput, java.io.ObjectInput, java.io.ObjectStreamConstants, java.lang.AutoCloseable

      public class ClassLoaderObjectInputStream
      extends java.io.ObjectInputStream

  A special ObjectInputStream that loads a class based on a specified `ClassLoader` rather than the system default.

  This is useful in dynamic container environments.

  Since:
    1.1
  Version:
    $Id: ClassLoaderObjectInputStream.java 1471767 2013-04-24 23:24:19Z sebb $

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class java.io.ObjectInputStream

      `java.io.ObjectInputStream.GetField`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.lang.ClassLoader` | `classLoader` The class loader to use.

    - ### 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

    Constructors
    Constructor and Description
    `ClassLoaderObjectInputStream(java.lang.ClassLoader classLoader, java.io.InputStream inputStream)` Constructs a new ClassLoaderObjectInputStream.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected java.lang.Class<?>` | `resolveClass(java.io.ObjectStreamClass objectStreamClass)` Resolve a class specified by the descriptor using the specified ClassLoader or the super ClassLoader.
    `protected java.lang.Class<?>` | `resolveProxyClass(java.lang.String[] interfaces)` Create a proxy class that implements the specified interfaces using the specified ClassLoader or the super ClassLoader.

    - ### 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`

- - ### Field Detail

    - #### classLoader

          private final java.lang.ClassLoader classLoader

      The class loader to use.

  - ### Constructor Detail

    - #### ClassLoaderObjectInputStream

          public ClassLoaderObjectInputStream(java.lang.ClassLoader classLoader,
                                      java.io.InputStream inputStream)
                                       throws java.io.IOException,
                                              java.io.StreamCorruptedException

      Constructs a new ClassLoaderObjectInputStream.
      Parameters:
        `classLoader` - the ClassLoader from which classes should be loaded
        `inputStream` - the InputStream to work on
      Throws:
        `java.io.IOException` - in case of an I/O error
        `java.io.StreamCorruptedException` - if the stream is corrupted

  - ### Method Detail

    - #### resolveClass

          protected java.lang.Class<?> resolveClass(java.io.ObjectStreamClass objectStreamClass)
                                             throws java.io.IOException,
                                                    java.lang.ClassNotFoundException

      Resolve a class specified by the descriptor using the specified ClassLoader or the super ClassLoader.
      Overrides:
        `resolveClass` in class `java.io.ObjectInputStream`
      Parameters:
        `objectStreamClass` - descriptor of the class
      Returns:
        the Class object described by the ObjectStreamClass
      Throws:
        `java.io.IOException` - in case of an I/O error
        `java.lang.ClassNotFoundException` - if the Class cannot be found

    - #### resolveProxyClass

          protected java.lang.Class<?> resolveProxyClass(java.lang.String[] interfaces)
                                                  throws java.io.IOException,
                                                         java.lang.ClassNotFoundException

      Create a proxy class that implements the specified interfaces using the specified ClassLoader or the super ClassLoader.
      Overrides:
        `resolveProxyClass` in class `java.io.ObjectInputStream`
      Parameters:
        `interfaces` - the interfaces to implement
      Returns:
        a proxy class implementing the interfaces
      Throws:
        `java.io.IOException` - in case of an I/O error
        `java.lang.ClassNotFoundException` - if the Class cannot be found
      Since:
        2.1
      See Also:
        `ObjectInputStream.resolveProxyClass(java.lang.String[])`

Copyright (c) 2002-2016 Apache Software Foundation