ObjectInputStream.java (readObject): Cleaned up the class hierarchy loop.

2003-02-14  Jeroen Frijters  <jeroen@sumatra.nl>

       * java/io/ObjectInputStream.java (readObject): Cleaned up the class
       hierarchy loop.
       (readFields(Object,ObjectStreamField[],boolean)): Changed argument
       list to Object,ObjectStreamClass, moved callReadMethod code up into
       readObject and added Class argument to all setXxxField calls.
       (callReadMethod): Changed Class argument to ObjectStreamClass to be
       consistent with ObjectOutputStream and to facilitate caching the
       Method in the future.
       (setBooleanField): Added Class argument.
       (setByteField): Likewise.
       (setCharField): Likewise.
       (setDoubleField): Likewise.
       (setFloatField): Likewise.
       (setIntField): Likewise.
       (setLongField): Likewise.
       (setShortField): Likewise.
       (setObjectField): Likewise.
       * java/io/ObjectOutputStream.java (writeObject): Cleaned up the
       class hierarchy loop.
       (defaultWriteObject): Call writeFields with new argument list.
       (writeFields(Object,ObjectStreamField[],boolean): Changed argument
       list to Object,ObjectStreamClass, moved callWriteMethod up into
       writeObject and added Class argument to all getXxxField calls.
       (callWriteMethod): Added ObjectStreamClass argument to be able to
       get the proper class to call getMethod on (each class can have (or
       not have) its own writeObject method).
       (getBooleanField): Added Class argument.
       (getByteField): Likewise.
       (getCharField): Likewise.
       (getDoubleField): Likewise.
       (getFloatField): Likewise.
       (getIntField): Likewise.
       (getLongField): Likewise.
       (getShortField): Likewise.
       (getObjectField): Likewise.
       * java/io/ObjectStreamClass.java (hasReadMethod): Added method to
       facilitate caching the Method object in the future.

From-SVN: r64351
This commit is contained in:
Jeroen Frijters 2003-03-14 12:54:38 +01:00 committed by Mark Wielaard
parent a721a60143
commit 70e2e8dc1d
4 changed files with 130 additions and 110 deletions

View file

@ -193,6 +193,28 @@ public class ObjectStreamClass implements Serializable
}
// Returns true iff the class that this ObjectStreamClass represents
// has the following method:
//
// private void readObject (ObjectOutputStream)
//
// This method is used by the class to override default
// serialization behavior.
boolean hasReadMethod ()
{
try
{
Class[] readObjectParams = { ObjectInputStream.class };
forClass ().getDeclaredMethod ("readObject", readObjectParams);
return true;
}
catch (NoSuchMethodException e)
{
return false;
}
}
// Returns true iff the class that this ObjectStreamClass represents
// implements Serializable but does *not* implement Externalizable.
boolean isSerializable ()