Hi Alex, yesterday I get metadata working but only if I declare at level class. But I'm seeing more strange behavior that I can hardly describe since I don't see a pattern. I'll try to add the example as I have some time to manualtests.
thanks El lun., 8 oct. 2018 a las 5:00, Alex Harui (<[email protected]>) escribió: > I'm pretty sure I saw Metadata work in manualtests/ReflectionTest at one > point in time. It could be broken now, or maybe you can follow that > example in your code. > > HTH, > -Alex > > On 10/7/18, 9:12 AM, "Carlos Rovira" <[email protected]> wrote: > > Thanks Greg, Alex, > > I now understand that Bindable in a property introduces > EventDispatcher, > now that has more sense. What confuse me is that Bindable is on > property > not in class, but is normal that class has event dispatcher. > > For me now the problem is just about the const and the metadata. For > the > latest, where I should retrieve the [injection] and [Bindable] > metadata? > > I'm going to check the test and try the class in my example. I'll > report if > something goes wrong so you can take a look at it. > > El dom., 7 oct. 2018 a las 0:26, Greg Dove (<[email protected]>) > escribió: > > > Hi Carlos, > > > > There could still be bugs, but there are some unit tests. You might > find > > some useful reference in the unit tests : > > > > > https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Fblob%2Fdevelop%2Fmanualtests%2FUnitTests%2Fsrc%2Fmain%2Froyale%2FflexUnitTests%2Freflection%2FReflectionTesterTest.as&data=02%7C01%7Caharui%40adobe.com%7Cee518d80d49d4283762a08d62c6fb7b7%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636745255666448646&sdata=oBsEe5MN2ley3qJQ%2BRtXnyqF%2B3fOokzxgPZdnEqJhnw%3D&reserved=0 > > > > And some of the test classes used: > > > > > https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Ftree%2Fdevelop%2Fmanualtests%2FUnitTests%2Fsrc%2Fmain%2Froyale%2FflexUnitTests%2Freflection%2Fsupport&data=02%7C01%7Caharui%40adobe.com%7Cee518d80d49d4283762a08d62c6fb7b7%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636745255666458656&sdata=rcnxH4LtYdEx1MsJNCTeMiSaU7D0XNRJDGZ1bdWyKCU%3D&reserved=0 > > > > If there is a case not working, then the coverage would need to > include > > that. I can take a look at this in the coming week if you add a > failing > > case. > > > > I can't recall offhand about whether consts (static or instance) were > > included as part of the reflection data. But I can see at least one > Test > > Class that includes both static and instance consts, so the > reflection data > > should either intentionally include or exclude them - if the tests > fail > > then something may have changed. > > > > In terms of EventDispatcher as base class, I did not check, but > maybe this > > class is bindable? In which case it will have EventDispatcher > injected as a > > base class by the compiler. Because the reflection data is collected > from > > the runtime inheritance chain in javascript, it should be related to > > whatever the compiler provided as output code. This would apply in > flash as > > well as javascript, although flash would have more data below the > Royale > > EventDispatcher as the native classes are reflectable (not the case > with > > the google event base classes on the js side). > > > > Hope there is something helpful there for now. > > > > -Greg > > > > > > On Sun, Oct 7, 2018 at 7:33 AM Carlos Rovira < > [email protected]> > > wrote: > > > > > Hi, > > > > > > I'm trying to do some Reflection work and finding some unexpected > > results. > > > Given this example class: > > > > > > package controllers > > > { > > > import interfaces.IController; > > > > > > import models.User; > > > > > > import services.UserService; > > > > > > public class UserController implements IController > > > { > > > public static const USER_CONTROLLER_EVENT:String = > "userControllerEvent"; > > > > > > /** > > > * Constructor > > > */ > > > public function UserController() > > > { > > > trace("UserController constructor"); > > > } > > > > > > private var _userService:UserService; > > > > > > [Inject] > > > public function get userService():UserService > > > { > > > return _userService; > > > } > > > public function set userService(value:UserService):void > > > { > > > trace("setting userService: ", value); > > > _userService = value; > > > } > > > [Bindable] > > > public var currentUser:User; > > > } > > > } > > > > > > I want to retrieve, super class, interface, metadata, const and > vars and > > > methods, so I think I should use this: > > > > > > var typeDefinition:TypeDefinition = describeType(target); > > > > > > To see what this retrieves for this email the toString method is > great: > > > > > > typeDefinition.toString(true); > > > > > > RESULT: > > > > > > *typeDefinition.toString Typedefinition: > controllers.UserController, > > > kind:class* > > > *constructor :* > > > * method: 'UserController', returnType:'' > > > declaredBy:controllers.UserController* > > > * {No parameters}* > > > *interfaces :* > > > * Typedefinition: interfaces.IController, kind:interface* > > > * Typedefinition: org.apache.royale.events.IEventDispatcher, > > > kind:interface. <---- this is unexpected* > > > *baseClasses :* > > > * Typedefinition: org.apache.royale.events.EventDispatcher, > kind:class. > > > **<---- > > > this is unexpected* > > > *variables :* > > > * {none}* > > > *accessors :* > > > * accessor: 'currentUser' access:readwrite, type:models.User, > > > declaredBy:controllers.UserController* > > > * accessor: 'userService' access:readwrite, > type:services.UserService, > > > declaredBy:controllers.UserController* > > > *methods :* > > > * method: 'hasEventListener', returnType:Boolean > > > declaredBy:org.apache.royale.events.EventDispatcher. **<---- this > is > > > unexpected (but normal due to EventDispatcher listed as base class* > > > * parameter 1, optional:false, type:String* > > > * method: 'dispatchEvent', returnType:Boolean > > > declaredBy:org.apache.royale.events.EventDispatcher. * *<---- > this is > > > unexpected (but normal due to EventDispatcher listed as base class* > > > * parameter 1, optional:false, type:Object* > > > * method: 'toString', returnType:String > > > declaredBy:org.apache.royale.events.EventDispatcher * *<---- this > is > > > unexpected (but normal due to EventDispatcher listed as base class* > > > * {No parameters}* > > > *static variables :* > > > * {none} * *<---- this is unexpected where is > *USER_CONTROLLER_EVENT*?* > > > *static accessors :* > > > * {none}* > > > *static methods :* > > > * {none}* > > > > > > As I stated in other email, the most annoying thing is the > > > *EventDispatcher* > > > and *methods* listed as super class of this class... > > > the other is no *static var* listed > > > > > > One thing I need most is to retrieve new *Metadata* I want to > insert, I'm > > > taking about the [Inject] metadata, I put [Bindable] as well since > is > > > already used, but I don't see any signals of any one of them > > > > > > I must say that I have in config/compile-swf-config.xml this code: > > > > > > <keep-as3-metadata> > > > <name>Bindable</name> > > > ... > > > ... > > > <name>Inject</name> > > > </keep-as3-metadata> > > > > > > and building with maven > > > > > > Is this a bug, or maybe this API is unfinished ? or maybe I'm > missing > > > something ? > > > > > > Thanks > > > > > > > > > -- > > > Carlos Rovira > > > > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cee518d80d49d4283762a08d62c6fb7b7%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636745255666458656&sdata=dV0n8IOhs6PhVzzNZ2llCtTCO2TYt%2BNujqVsdL6wQx0%3D&reserved=0 > > > > > > > > -- > Carlos Rovira > > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Cee518d80d49d4283762a08d62c6fb7b7%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636745255666458656&sdata=dV0n8IOhs6PhVzzNZ2llCtTCO2TYt%2BNujqVsdL6wQx0%3D&reserved=0 > > > -- Carlos Rovira http://about.me/carlosrovira
