Handle Object fields by using readObject() and writeObject() to serialize

them assuming they'll contain either a primitive type or an instance of
Streamable.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2076 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2002-12-20 23:27:52 +00:00
parent a63d7446dd
commit 00baff9000
@@ -1,5 +1,5 @@
//
// $Id: FieldMarshaller.java,v 1.2 2002/10/27 18:49:51 mdb Exp $
// $Id: FieldMarshaller.java,v 1.3 2002/12/20 23:27:52 mdb Exp $
package com.threerings.io;
@@ -105,8 +105,8 @@ public abstract class FieldMarshaller
// create our table
_marshallers = new HashMap();
// create a marshaller for streamable instances
_marshallers.put(Streamable.class, new FieldMarshaller() {
// create a generic marshaller for streamable instances
FieldMarshaller gmarsh = new FieldMarshaller() {
public void readField (
Field field, Object target, ObjectInputStream in)
throws Exception {
@@ -117,7 +117,15 @@ public abstract class FieldMarshaller
throws Exception {
out.writeObject(field.get(source));
}
});
};
_marshallers.put(Streamable.class, gmarsh);
// use the same generic marshaller for fields declared to by type
// Object with the expectation that they will contain only
// primitive types or Streamables; the runtime will fail
// informatively if the user attempts to store non-Streamable
// objects in that field
_marshallers.put(Object.class, gmarsh);
// create marshallers for the primitive types
_marshallers.put(Boolean.TYPE, new FieldMarshaller() {