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
- 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 classes/interfaces inherited from class java.io.ObjectInputStream |
java.io.ObjectInputStream.GetField |
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 |
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 |
protected java.lang.ClassLoader |
getFallbackClassLoader()
Return the fallback ClassLoader to use when no ClassLoader was specified
and ObjectInputStream's own default ClassLoader 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 |
classLoader
private final java.lang.ClassLoader classLoader
acceptProxyClasses
private final boolean acceptProxyClasses
ConfigurableObjectInputStream
public ConfigurableObjectInputStream(java.io.InputStream in,
java.lang.ClassLoader classLoader)
throws java.io.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:
java.io.IOException
- See Also:
ObjectInputStream.ObjectInputStream(java.io.InputStream)
ConfigurableObjectInputStream
public ConfigurableObjectInputStream(java.io.InputStream in,
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 fromclassLoader
- the ClassLoader to use for loading local classesacceptProxyClasses
- 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)
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 resolveex
- 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
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 ClassLoader failed.
The default implementation simply returns null
.
- Throws:
java.io.IOException