org.springframework.core

Class ConfigurableObjectInputStream

  • java.lang.Object
    • java.io.InputStream
      • java.io.ObjectInputStream
        • org.springframework.core.ConfigurableObjectInputStream
  • All Implemented Interfaces:
    java.io.Closeable, java.io.DataInput, java.io.ObjectInput, java.io.ObjectStreamConstants, java.lang.AutoCloseable
    Direct Known Subclasses:
    CodebaseAwareObjectInputStream


    public class ConfigurableObjectInputStream
    extends java.io.ObjectInputStream
    Special ObjectInputStream subclass that resolves class names against a specific ClassLoader. Serves as base class for CodebaseAwareObjectInputStream.
    Since:
    2.5.5
    Author:
    Juergen Hoeller
    • 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

      Constructors 
      Constructor and Description
      ConfigurableObjectInputStream(java.io.InputStream in, java.lang.ClassLoader classLoader)
      Create a new ConfigurableObjectInputStream for the given InputStream and ClassLoader.
      ConfigurableObjectInputStream(java.io.InputStream in, java.lang.ClassLoader classLoader, boolean acceptProxyClasses)
      Create a new ConfigurableObjectInputStream for the given InputStream and ClassLoader.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      protected java.lang.ClassLoader getFallbackClassLoader()
      Return the fallback ClassLoader to use when no ClassLoader was specified and ObjectInputStream's own default class loader failed.
      protected java.lang.Class<?> resolveClass(java.io.ObjectStreamClass classDesc) 
      protected java.lang.Class<?> resolveFallbackIfPossible(java.lang.String className, java.lang.ClassNotFoundException ex)
      Resolve the given class name against a fallback class loader.
      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

      • ConfigurableObjectInputStream

        public ConfigurableObjectInputStream(java.io.InputStream in,
                                             @Nullable
                                             java.lang.ClassLoader classLoader)
                                      throws java.io.IOException
        Create a new ConfigurableObjectInputStream for the given InputStream and ClassLoader.
        Parameters:
        in - the InputStream to read from
        classLoader - the ClassLoader to use for loading local classes
        Throws:
        java.io.IOException
        See Also:
        ObjectInputStream.ObjectInputStream(java.io.InputStream)
      • ConfigurableObjectInputStream

        public ConfigurableObjectInputStream(java.io.InputStream in,
                                             @Nullable
                                             java.lang.ClassLoader classLoader,
                                             boolean acceptProxyClasses)
                                      throws java.io.IOException
        Create a new ConfigurableObjectInputStream for the given InputStream and ClassLoader.
        Parameters:
        in - the InputStream to read from
        classLoader - the ClassLoader to use for loading local classes
        acceptProxyClasses - whether to accept deserialization of proxy classes (may be deactivated as a security measure)
        Throws:
        java.io.IOException
        See Also:
        ObjectInputStream.ObjectInputStream(java.io.InputStream)
    • Method Detail

      • resolveClass

        protected java.lang.Class<?> resolveClass(java.io.ObjectStreamClass classDesc)
                                           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
      • resolveFallbackIfPossible

        protected java.lang.Class<?> resolveFallbackIfPossible(java.lang.String className,
                                                               java.lang.ClassNotFoundException ex)
                                                        throws java.io.IOException,
                                                               java.lang.ClassNotFoundException
        Resolve the given class name against a fallback class loader.

        The default implementation simply rethrows the original exception, since there is no fallback available.

        Parameters:
        className - the class name to resolve
        ex - the original exception thrown when attempting to load the class
        Returns:
        the newly resolved class (never null)
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • getFallbackClassLoader

        @Nullable
        protected java.lang.ClassLoader getFallbackClassLoader()
                                                                  throws java.io.IOException
        Return the fallback ClassLoader to use when no ClassLoader was specified and ObjectInputStream's own default class loader failed.

        The default implementation simply returns null, indicating that no specific fallback is available.

        Throws:
        java.io.IOException