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:
@@ -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;
|
package com.threerings.io;
|
||||||
|
|
||||||
@@ -105,8 +105,8 @@ public abstract class FieldMarshaller
|
|||||||
// create our table
|
// create our table
|
||||||
_marshallers = new HashMap();
|
_marshallers = new HashMap();
|
||||||
|
|
||||||
// create a marshaller for streamable instances
|
// create a generic marshaller for streamable instances
|
||||||
_marshallers.put(Streamable.class, new FieldMarshaller() {
|
FieldMarshaller gmarsh = new FieldMarshaller() {
|
||||||
public void readField (
|
public void readField (
|
||||||
Field field, Object target, ObjectInputStream in)
|
Field field, Object target, ObjectInputStream in)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
@@ -117,7 +117,15 @@ public abstract class FieldMarshaller
|
|||||||
throws Exception {
|
throws Exception {
|
||||||
out.writeObject(field.get(source));
|
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
|
// create marshallers for the primitive types
|
||||||
_marshallers.put(Boolean.TYPE, new FieldMarshaller() {
|
_marshallers.put(Boolean.TYPE, new FieldMarshaller() {
|
||||||
|
|||||||
Reference in New Issue
Block a user