Revision: 7807
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 13, 2008 16:43 by dan_mcweeney
Initial Code
package
{
import flash.utils.Proxy;
import flash.utils.describeType;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
import flash.utils.flash_proxy;
// import flash.utils.flash_proxy;
public dynamic class ActiveRecord extends Proxy
{
private static var functionsToAdd:Array = ["find_by_name","find_by_id","find_all"];
protected static var methodFactory:DynamicMethodFactory;
public function ActiveRecord()
{
}
public static function staticInitializer(klass:Class):void{
var typeInfo:XML = describeType(klass);
for each(var s:String in functionsToAdd){
klass[s] = getMethod(typeInfo.@name,s);
}
}
public static function getMethod(objectName:String,methodName:String):Function{
return function(...args):Object{return endPoint(objectName,methodName,args);};
}
public static function endPoint(objectName:String,methodName:String,...args):Object{
trace("You called: " + objectName + "." + methodName + "(" + args + ")");
var klass:Class = getDefinitionByName(objectName) as Class;
var o:ActiveRecord = new klass();
return o;
}
flash_proxy override function callProperty(method: *, ...args): * {
try {
var clazz : Class = getDefinitionByName(getQualifiedClassName(this)) as Class;
return clazz.prototype[method].apply(method, args);
}
catch (e : Error) {
return methodMissing (method, args);
}
}
protected function methodMissing(method : *, args : Array) : Object{
throw( new Error("Method Missing"));
return null;
}
}
}
Initial URL
Initial Description
Initial Title
ActiveRecord v0.2
Initial Tags
Initial Language
ActionScript 3