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:26:12 GMT
By using the FlexJSOverlay.zip on my people.a.o folder.  Instructions are
available at
https://cwiki.apache.org/confluence/display/FLEX/Using+FlexJS+with+Adobe+Fl
ash+Builder

-Alex

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

>And how does one 'overlay' an SDK?
>
>EdB
>
>
>
>On Thu, Oct 31, 2013 at 2:07 PM, Alex Harui <aharui@adobe.com> wrote:
>> 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/Pla
>>>ye
>>>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-interf
>>>>>>ac
>>>>>>es-
>>>>> >packages-and-namespaces/
>>>>> >2:
>>>>>
>>>>> >
>>>>>>https://cwiki.apache.org/confluence/display/FLEX/Simulating+AS3+langu
>>>>>>ag
>>>>>>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
>>
>
>
>
>-- 
>Ix Multimedia Software
>
>Jan Luykenstraat 27
>3521 VB Utrecht
>
>T. 06-51952295
>I. www.ixsoftware.nl


Mime
View raw message