On 19/10/2016 20:59, Roger Riggs wrote:
The support in sun.reflect.ReflectionFactory for custom serialization,
such as IIOP input
and output streams, is being expanded beyond the necessary constructor
of a serializable
class to include access to the private methods readObject,
writeObject, readResolve,
writeReplace, etc.
The IIOP implementation is updated to use a combination of
ReflectionFactory and
Unsafe to serialize and deserialize objects and no longer rely on
setAccessible.
Tests are included for ReflectionFactory and the affected IIOP classes.
Please review and comment,
jdk repo webrev:
http://cr.openjdk.java.net/~rriggs/webrev-reflection-factory-8164908/
corba repo webrev :
http://cr.openjdk.java.net/~rriggs/webrev-reflection-factory-iiop-8164908/
I skimmed through the changes.
I assume findReadWriteObjectForSerialization should throw InternalError,
rather than return null, if IllegalAccessException is thrown (as IAE is
not possible here).
You've added @since 9 to sun.reflect.ReflectionFactory but that class is
not new.
The javadoc for
sun.reflect.ReflectionFactory.newConstructorForSerialization doesn't say
that it returns null when the Class is not Serializable.
For the MH returning methods then I assume the javadoc should say that
it returns a direct method handle.
The synchronization in the IIOP ObjectStreamClass isn't very clear. Are
the invoke*, read*, write* methods all invoked by the same thread that
creates the ObjectStreamClass with the lookup method?
-Alan