Package org.springframework.core
Class ConfigurableObjectInputStream
- java.lang.Object
- java.io.InputStream
- java.io.ObjectInputStream
- org.springframework.core.ConfigurableObjectInputStream
- All Implemented Interfaces:
Closeable
,DataInput
,ObjectInput
,ObjectStreamConstants
,AutoCloseable
- Direct Known Subclasses:
CodebaseAwareObjectInputStream
public class ConfigurableObjectInputStream extends ObjectInputStream
Special ObjectInputStream subclass that resolves class names against a specific ClassLoader. Serves as base class forCodebaseAwareObjectInputStream
.- Since:
- 2.5.5
- Author:
- Juergen Hoeller
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, SERIAL_FILTER_PERMISSION, 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 Description ConfigurableObjectInputStream(InputStream in, ClassLoader classLoader)
Create a new ConfigurableObjectInputStream for the given InputStream and ClassLoader.ConfigurableObjectInputStream(InputStream in, 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 Description protected ClassLoader
getFallbackClassLoader()
Return the fallback ClassLoader to use when no ClassLoader was specified and ObjectInputStream's own default class loader failed.protected Class<?>
resolveClass(ObjectStreamClass classDesc)
protected Class<?>
resolveFallbackIfPossible(String className, ClassNotFoundException ex)
Resolve the given class name against a fallback class loader.protected Class<?>
resolveProxyClass(String[] interfaces)
Methods inherited from class java.io.ObjectInputStream
available, close, defaultReadObject, enableResolveObject, getObjectInputFilter, read, read, readBoolean, readByte, readChar, readClassDescriptor, readDouble, readFields, readFloat, readFully, readFully, readInt, readLine, readLong, readObject, readObjectOverride, readShort, readStreamHeader, readUnshared, readUnsignedByte, readUnsignedShort, readUTF, registerValidation, resolveObject, setObjectInputFilter, skipBytes
Methods inherited from class java.io.InputStream
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo
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(InputStream in, @Nullable ClassLoader classLoader) throws IOException
Create a new ConfigurableObjectInputStream for the given InputStream and ClassLoader.- Parameters:
in
- the InputStream to read fromclassLoader
- the ClassLoader to use for loading local classes- Throws:
IOException
- See Also:
ObjectInputStream(java.io.InputStream)
ConfigurableObjectInputStream
public ConfigurableObjectInputStream(InputStream in, @Nullable ClassLoader classLoader, boolean acceptProxyClasses) throws IOException
Create a new ConfigurableObjectInputStream for the given InputStream and ClassLoader.- Parameters:
in
- the InputStream to read fromclassLoader
- the ClassLoader to use for loading local classesacceptProxyClasses
- whether to accept deserialization of proxy classes (may be deactivated as a security measure)- Throws:
IOException
- See Also:
ObjectInputStream(java.io.InputStream)
Method Detail
resolveClass
protected Class<?> resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException
- Overrides:
resolveClass
in classObjectInputStream
- Throws:
IOException
ClassNotFoundException
resolveProxyClass
protected Class<?> resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException
- Overrides:
resolveProxyClass
in classObjectInputStream
- Throws:
IOException
ClassNotFoundException
resolveFallbackIfPossible
protected Class<?> resolveFallbackIfPossible(String className, ClassNotFoundException ex) throws IOException, 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 resolveex
- the original exception thrown when attempting to load the class- Returns:
- the newly resolved class (never
null
) - Throws:
IOException
ClassNotFoundException
getFallbackClassLoader
@Nullable protected ClassLoader getFallbackClassLoader() throws 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:
IOException