Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Subclassing a private (support) class in AVM2

I am developing a dynamic mocking framework for Flex/AS3 and am having trouble with private/support types (ie. those declared outside the package {} in a class file).

In my ABC "file", I am declaring the instance with the PROTECTED_NAMESPACE class flag and with a PRIVATE_NS multiname. I have also experimented with giving it the same namespace as the class it is subclassing (eg. PRIVATE_NS("ContainerClass.as$123")).

No matter what I do, I always get the following error after loadBytes:

VerifyError: Error #1014: Class ContainerClass.as$123::PrivateClass could not be found.

I have experimented with loading the generated bytecode into the same ApplicationDomain as the private class (I use a child domain by default). I even tried registering a class alias before the load (though that was a bit of a stretch).

Am I forgetting anything or is it simply a restriction of the AVM?

Please note that I am fully aware that this is illegal in ActionScript 3.0, I am looking for whether this is actually possible in the AVM.

Edit: For those interested in the work so far, the project is asmock and is on sourceforge.

like image 983
Richard Szalay Avatar asked Feb 09 '09 14:02

Richard Szalay


1 Answers

I'm no expert with ABC files but I just don't think this is possible in the AVM2. I did several tests a while ago with the AS3 Eval lib and they all failed.

Related to dynamic mocking, I have filed an issue in Adobe bugbase, asking for a dynamic proxy mechanism: http://bugs.adobe.com/jira/browse/ASC-3136

like image 102
Christophe Herreman Avatar answered Sep 30 '22 14:09

Christophe Herreman