public static class AcrossJVMSerializationFeature.MockitoMockObjectInputStream
extends java.io.ObjectInputStream
ObjectInputStream
that will resolve the Mockito proxy class.
This specificaly crafted ObjectInoutStream has the most important role to resolve the Mockito generated
class. It is doing so via the resolveClass(java.io.ObjectStreamClass)
which looks in the stream
for a Mockito marker. If this marker is found it will try to resolve the mockito class otherwise it
delegates class resolution to the default super behavior.
The mirror method used for serializing the mock is
AcrossJVMSerializationFeature.MockitoMockObjectOutputStream.annotateClass(Class)
.
When this marker is found, ClassImposterizer
methods are being used to create the mock class.
Note that behind the ClassImposterizer
there is CGLIB and the
SearchingClassLoader
that will look if this enhanced class has
already been created in an accessible classloader ; so basically this code trusts the ClassImposterizer
code.
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 and Description |
---|
AcrossJVMSerializationFeature.MockitoMockObjectInputStream(java.io.InputStream in,
java.lang.Class typeToMock,
java.util.Set<java.lang.Class> extraInterfaces) |
Modifier and Type | Method and Description |
---|---|
protected java.lang.Class<?> |
resolveClass(java.io.ObjectStreamClass desc)
Resolve the Mockito proxy class if it is marked as such.
|
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, resolveProxyClass, skipBytes
public AcrossJVMSerializationFeature.MockitoMockObjectInputStream(java.io.InputStream in, java.lang.Class typeToMock, java.util.Set<java.lang.Class> extraInterfaces) throws java.io.IOException
java.io.IOException
protected java.lang.Class<?> resolveClass(java.io.ObjectStreamClass desc) throws java.io.IOException, java.lang.ClassNotFoundException
Uses the fields typeToMock
and extraInterfaces
to
create the Mockito proxy class as the ObjectStreamClass
doesn't carry useful information for this purpose.
resolveClass
in class java.io.ObjectInputStream
desc
- Description of the class in the stream, not used.java.io.IOException
java.lang.ClassNotFoundException