Now we have a cool @ActionScript annotation that allows us to specify different

field/method names for the ActionScript version of a class (or to omit
something entirely). This removes the need for special case hackery for
toStringBuilder().

In order for annotations to work, however, we have to require that the
GenActionScriptTask be loaded from the same classloader that loads the classes
to be reflected upon. Before we only reflected on the target classes, never
instantiated them. Annotations are actually instantiated, so we have to be able
to create an instance of the ActionScript.class that is compiled into our
target classes and assign it to a reference that is compiled into
GenActionScriptTask. Beware the complexities of dealing with multiple class
loaders.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4405 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2006-10-04 23:35:41 +00:00
parent ed51df0807
commit 4a9fde7830
5 changed files with 100 additions and 70 deletions
@@ -22,6 +22,7 @@
package com.threerings.io;
import com.samskivert.util.StringUtil;
import com.threerings.util.ActionScript;
/**
* A simple serializable object implements the {@link Streamable}
@@ -44,6 +45,7 @@ public class SimpleStreamableObject implements Streamable
* Handles the toString-ification of all public members. Derived
* classes can override and include non-public members if desired.
*/
@ActionScript(name="toStringBuilder")
protected void toString (StringBuilder buf)
{
StringUtil.fieldsToString(buf, this);