Use the ArrayStreamer to stream regular Arrays as well.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4113 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2006-05-11 23:58:21 +00:00
parent a9567278ea
commit d123c61606
5 changed files with 32 additions and 54 deletions
@@ -19,7 +19,6 @@ public class ArrayStreamer extends Streamer
super(TypedArray, jname);
var secondChar :String = jname.charAt(1);
if (secondChar === "[") {
// if we're a multi-dimensional array then we need a delegate
_delegate = Streamer.getStreamerByJavaName(jname.substring(1));
@@ -44,8 +43,27 @@ public class ArrayStreamer extends Streamer
public override function isStreamerFor (obj :Object) :Boolean
{
return (obj is TypedArray) &&
((obj as TypedArray).getJavaType() === _jname);
if (_jname === "[Ljava.lang.Object;") {
// we fall back to streaming any array as Object
return (obj is Array);
} else {
return (obj is TypedArray) &&
((obj as TypedArray).getJavaType() === _jname);
}
}
public override function isStreamerForClass (clazz :Class) :Boolean
{
if (_jname === "[Ljava.lang.Object;") {
return (clazz != TypedArray) &&
ClassUtil.isAssignableAs(Array, clazz);
} else {
return false; // TODO: we're kinda fucked for finding a streamer
// by class for TypedArrays here. The caller should be passing
// the java name.
}
}
public override function createObject (ins :ObjectInputStream) :Object