Ok, rounding off the 'is' and 'as' implementation. One quick question: how do I figure out - in FalconJx - if the 'current' class is the 'main' or 'toplevel' class? I need to inject a special 'goog.require', which I rather don't do in all classes, instead I'd like to only add it to the first class ('Application' or similar)...
Thoughts? EdB On Thu, Oct 31, 2013 at 6:05 PM, Alex Harui <aha...@adobe.com> wrote: > It's been so long since I've seen that, that I don't completely remember. > > I believe it could be a Java class path issue. That the compiler is > picking up an different version of MapMaker than expected. > > -Alex > > On 10/31/13 9:58 AM, "Erik de Bruin" <e...@ixsoftware.nl> wrote: > >>And I killed it again... Now I'm getting this (vaguely familiar) error: >> >>Using Falcon codebase: >>/Users/erik/Documents/ApacheFlex/git/flex-falcon/compiler.jx/bin/../../com >>piler >>Using Flex SDK: /Users/erik/Desktop/OverlayedSDK >>Exception in thread "main" java.lang.IllegalAccessError: tried to >>access method >>com.google.common.collect.MapMaker.makeComputingMap(Lcom/google/common/bas >>e/Function;)Ljava/util/concurrent/ConcurrentMap; >>from class org.apache.flex.compiler.internal.projects.CompilerProject >>at >>org.apache.flex.compiler.internal.projects.CompilerProject.<init>(Compiler >>Project.java:114) >>at >>org.apache.flex.compiler.internal.projects.ASProject.<init>(ASProject.java >>:71) >>at >>org.apache.flex.compiler.internal.projects.FlexProject.<init>(FlexProject. >>java:109) >>at >>org.apache.flex.compiler.internal.projects.FlexProject.<init>(FlexProject. >>java:129) >>at >>org.apache.flex.compiler.internal.projects.FlexJSProject.<init>(FlexJSProj >>ect.java:48) >>at org.apache.flex.compiler.clients.MXMLJSC.<init>(MXMLJSC.java:198) >>at org.apache.flex.compiler.clients.MXMLJSC.main(MXMLJSC.java:171) >> >>Remind me, how do I fix this? >> >>EdB >> >> >> >>On Thu, Oct 31, 2013 at 3:09 PM, Erik de Bruin <e...@ixsoftware.nl> wrote: >>> Basically, I'm complaining it's getting too hard to develop for this, >>> but I guess that's to be expected at this stage. >>> >>> It's up and running now. >>> >>> EdB >>> >>> >>> >>> On Thu, Oct 31, 2013 at 2:33 PM, Alex Harui <aha...@adobe.com> wrote: >>>> Not sure what you're asking. There isn't any Adobe code in there. The >>>> zip contains binaries so it can't go in the repo. The sh/bat files in >>>>the >>>> zip are not in the repo because I keep hoping they will go away someday >>>> and be replaced by an installer. >>>> >>>> -Alex >>>> >>>> On 10/31/13 6:30 AM, "Erik de Bruin" <e...@ixsoftware.nl> wrote: >>>> >>>>>Ok... is that proprietary code, or just not in the repo yet? >>>>> >>>>>EdB >>>>> >>>>> >>>>> >>>>>On Thu, Oct 31, 2013 at 2:26 PM, Alex Harui <aha...@adobe.com> wrote: >>>>>> 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+Ado >>>>>>be+ >>>>>>Fl >>>>>> ash+Builder >>>>>> >>>>>> -Alex >>>>>> >>>>>> On 10/31/13 6:20 AM, "Erik de Bruin" <e...@ixsoftware.nl> wrote: >>>>>> >>>>>>>And how does one 'overlay' an SDK? >>>>>>> >>>>>>>EdB >>>>>>> >>>>>>> >>>>>>> >>>>>>>On Thu, Oct 31, 2013 at 2:07 PM, Alex Harui <aha...@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" <e...@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/dependencie >>>>>>>>>s/P >>>>>>>>>la >>>>>>>>>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/frame >>>>>>>>>wor >>>>>>>>>ks >>>>>>>>>/a >>>>>>>>>s/libs/FlexJSUI.swc >>>>>>>>>-js-output-type=FLEXJS >>>>>>>>>-closure-lib=/Users/erik/Documents/ApacheFlex/dependencies/GoogleCl >>>>>>>>>osu >>>>>>>>>re >>>>>>>>>/l >>>>>>>>>ibrary >>>>>>>>>-sdk-js-lib=/Users/erik/Documents/ApacheFlex/git/flex-asjs/framewor >>>>>>>>>ks/ >>>>>>>>>js >>>>>>>>>/F >>>>>>>>>lexJS/src >>>>>>>>>/Users/erik/Documents/ApacheFlex/git/flex-asjs/examples/FlexJSTest_ >>>>>>>>>aga >>>>>>>>>in >>>>>>>>>/s >>>>>>>>>rc/FlexJSTest_again.mxml >>>>>>>>> >>>>>>>>>EdB >>>>>>>>> >>>>>>>>> >>>>>>>>>On Thu, Oct 31, 2013 at 6:37 AM, Erik de Bruin <e...@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" <e...@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-i >>>>>>>>>>>>nte >>>>>>>>>>>>rf >>>>>>>>>>>>ac >>>>>>>>>>>>es- >>>>>>>>>>> >packages-and-namespaces/ >>>>>>>>>>> >2: >>>>>>>>>>> >>>>>>>>>>> > >>>>>>>>>>>>https://cwiki.apache.org/confluence/display/FLEX/Simulating+AS3+ >>>>>>>>>>>>lan >>>>>>>>>>>>gu >>>>>>>>>>>>ag >>>>>>>>>>>>e+f >>>>>>>>>>> >eatures+in+JavaScript+using+AMD+and+ES5 >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> >On Wed, Oct 30, 2013 at 8:07 PM, Erik de Bruin >>>>>>>>>>><e...@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 >>>>>>>>>>><aha...@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" <e...@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 >>>>>>>>>>> >>>><bigosma...@gmail.com> wrote: >>>>>>>>>>> >>>>> On Mon, Jul 29, 2013 at 11:20 AM, Alex Harui >>>>>>>>>>><aha...@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 >>>>>> >>>>> >>>>> >>>>> >>>>>-- >>>>>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 > -- Ix Multimedia Software Jan Luykenstraat 27 3521 VB Utrecht T. 06-51952295 I. www.ixsoftware.nl