- use isPlainObject()

- support Point and Rectangle.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4971 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2008-03-18 22:01:49 +00:00
parent 95e27a7943
commit 783ea0d166
@@ -23,6 +23,9 @@ package com.threerings.util {
import flash.net.ObjectEncoding;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.system.ApplicationDomain;
import flash.utils.ByteArray;
@@ -148,16 +151,13 @@ public class ObjectMarshaller
if (type == "number" || type == "string" || type == "boolean" ) {
return null; // kosher!
}
if (value is ByteArray) {
if (-1 != VALID_CLASSES.indexOf(ClassUtil.getClass(value))) {
return null; // kosher
}
var clazz :Class = ClassUtil.getClass(value);
var clazzparentname :String = getQualifiedSuperclassName(clazz);
var rootclass :Boolean = (clazzparentname == null);
if (! rootclass) {
if (!Util.isPlainObject(value)) {
return "Non-simple properties may not be set.";
}
// fall through and verify the object's sub-properties
// fall through and verify the plain object's sub-properties
}
// check sub-properties (of arrays and objects)
@@ -170,5 +170,8 @@ public class ObjectMarshaller
return null; // it all checks out!
}
/** Non-simple classes that we allow, as long as they are not subclassed. */
protected static const VALID_CLASSES :Array = [ ByteArray, Point, Rectangle ];
}
}