flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Harui <aha...@adobe.com>
Subject Re: [FlexJS] Handling interfaces
Date Thu, 31 Oct 2013 13:07:16 GMT
I've been testing against DataBindingTest whose sources are up on my
people.a.o folder, so maybe this doesn't build anymore, but the console
output looks like you are referencing a full Apache Flex SDK instead of
one that is overlaid, which might cause the compiler to find CSS files in
a whole bunch of SWCs that we don't currently handle.

IOW, you can't just add FlexJSUI.swc to an existing SDK, it has to be
"overlaid" which neuters some things in an Apache Flex SDK.

-Alex

On 10/31/13 5:29 AM, "Erik de Bruin" <erik@ixsoftware.nl> wrote:

>Hi,
>
>I'm busy building support for the "is" and "as" operators into FlexJS.
>Now, first I thought I'd try to compile the FlexJSTest_again example.
>To my suprise, I get an error:
>
>CSS codegen problem. Reason: 'Unable to find compilation unit for
>Embed(source="Assets.swf",symbol="mx.skins.cursor.BusyCursor")'
>
>The error seems to originate from FalconJx, it is thrown in
>JSCSSCompilationSession.java... Now, my sources are fresh, I've
>rebuild the SDK (super-clean main), all compiler projects (wipe main)
>and the FlexUI.swc. Am I missing something (command line arg) or is
>there some source not yet committed or something more obvious I'm
>overlooking?
>
>These are my arguments:
>
>+env.PLAYERGLOBAL_HOME=/Users/erik/Documents/ApacheFlex/dependencies/Playe
>rGlobal/player
>+playerglobal.version=11.1
>-load-config="/Applications/Adobe Flash Builder
>4.7/sdks/4.10.0/frameworks/flex-config.xml"
>-library-path+=/Users/erik/Documents/ApacheFlex/git/flex-asjs/frameworks/a
>s/libs/FlexJSUI.swc
>-js-output-type=FLEXJS
>-closure-lib=/Users/erik/Documents/ApacheFlex/dependencies/GoogleClosure/l
>ibrary
>-sdk-js-lib=/Users/erik/Documents/ApacheFlex/git/flex-asjs/frameworks/js/F
>lexJS/src
>/Users/erik/Documents/ApacheFlex/git/flex-asjs/examples/FlexJSTest_again/s
>rc/FlexJSTest_again.mxml
>
>EdB
>
>
>On Thu, Oct 31, 2013 at 6:37 AM, Erik de Bruin <erik@ixsoftware.nl> wrote:
>> I'll have a look at it today.
>>
>> EdB
>>
>>
>>
>> On Wednesday, October 30, 2013, Peter Ent wrote:
>>>
>>> Thanks, Erik. Interesting read. FlexJS uses a lot of interfaces so
>>>we'll
>>> have to find a reasonable solution for this. We've managed to avoid the
>>> situation in JavaScript but it is coming up quickly.
>>>
>>> --peter
>>>
>>> On 10/30/13 3:10 PM, "Erik de Bruin" <erik@ixsoftware.nl> wrote:
>>>
>>> >Some guidance can be found here [1] and here [2].
>>> >
>>> >EdB
>>> >
>>> >1:
>>>
>>> > 
>>>>http://blogs.adobe.com/bparadie/2011/11/26/classes-inheritance-interfac
>>>>es-
>>> >packages-and-namespaces/
>>> >2:
>>>
>>> > 
>>>>https://cwiki.apache.org/confluence/display/FLEX/Simulating+AS3+languag
>>>>e+f
>>> >eatures+in+JavaScript+using+AMD+and+ES5
>>> >
>>> >
>>> >
>>> >On Wed, Oct 30, 2013 at 8:07 PM, Erik de Bruin <erik@ixsoftware.nl>
>>> > wrote:
>>> >> "instanceof" doesn't check if an interface is implemented, neither
>>>in
>>> >> Flex nor using Closure inheritance in JavaScript. What we need for
>>> >> runtime checking of interface implementation is an global "is"
>>> >> function... I think I taught FalconJx to translate "ClassA is
>>>ClassB"
>>> >> as "is(ClassA, ClassB)". All we need to do now is to implement a
>>> >> global "is()" function and somehow teach the compiler to keep track
>>>of
>>> >> which classes implement which interfaces - all the way up the chain
>>> >> and sideways (interfaces can implement interfaces).
>>> >>
>>> >> EdB
>>> >>
>>> >>
>>> >>
>>> >> On Wed, Oct 30, 2013 at 6:34 PM, Alex Harui <aharui@adobe.com>
>>>wrote:
>>> >>> Reviving this thread...
>>> >>>
>>> >>> Peter says he wants to test to see if an object implements an
>>> >>>interface at
>>> >>> runtime.  What mechanism do we want to use?
>>> >>>
>>> >>> I don't think we need to make instanceof work, just have some test
>>>to
>>> >>>call.
>>> >>>
>>> >>> -Alex
>>> >>>
>>> >>> On 7/30/13 12:46 AM, "Erik de Bruin" <erik@ixsoftware.nl>
wrote:
>>> >>>
>>> >>>>When using interfaces for type checking, there are two 'kinds':
at
>>> >>>>compilation and at runtime.
>>> >>>>
>>> >>>>The @interface and @implements annotations are for compile time
>>> >>>>checking.
>>> >>>>
>>> >>>>For runtime checking comes in two flavours: 'instanceof' and
'is'.
>>> >>>>
>>> >>>>Our method of setting up inheritance (goog.inherits) maintains
the
>>> >>>>inheritance chain, so 'instanceof' works out of the box.
>>> >>>>
>>> >>>>The work starts with 'is'. We want to story the 'extends' and
>>> >>>>'implements' metadata from AS in the JS classes and create a
>>>method to
>>> >>>>test against that metadata set. I have a pretty good idea on
how to
>>> >>>>implement such a beast, but it will require some (ha!) tinkering
>>>with
>>> >>>>the FlexJS JS framework and FalconJx. That will take some time...
>>> >>>>
>>> >>>>EdB
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>>On Mon, Jul 29, 2013 at 9:17 PM, OmPrakash Muppirala
>>> >>>><bigosmallm@gmail.com> wrote:
>>> >>>>> On Mon, Jul 29, 2013 at 11:20 AM, Alex Harui <aharui@adobe.com>
>>> >>>>>wrote:
>>> >>>>>
>>> >>>>>> I think FalconJS was going to generate something like:
>>> >>>>>>
>>> >>>>>>         if (child != undefined &&
>>> >>>>>> child.$implements["org.apache.flex.core.IChrome"])
>>> >>>>>>
>>> >>>>>> Not sure what it was going to do for classes, maybe
chase the
>>> >>>>>>prototype
>>> >>>>>> chain?
>>> >>>>>>
>>> >>>>>> The other thing that occurred to me about $implements
or
>>> >>>>>>child.is(IChrome)
>>> >>>>>> is that all objects must then have these properties
or functions
>>> >>>>>>where
>>> >>>>>>the
>>> >>>>>> global function
>>
>>
>>
>> --
>> Ix Multimedia Software
>>
>> Jan Luykenstraat 27
>> 3521 VB Utrecht
>>
>> T. 06-51952295
>> I. www.ixsoftware.nl
>
>
>
>-- 
>Ix Multimedia Software
>
>Jan Luykenstraat 27
>3521 VB Utrecht
>
>T. 06-51952295
>I. www.ixsoftware.nl


Mime
View raw message