Hi Josh,
I remember the problem was not showing in TDJ, Piotr sent me a minimal
project that showed the problem.
Will try to send you directly to your email so you can try that.
Thanks for taking the time to look at it.

El mar., 8 sept. 2020 a las 19:34, Josh Tynjala (<[email protected]>)
escribió:

> I checked out the bug/presentationmodel branch, rebuilt royale-asjs, and
> then built and ran a release build of TourDeJewel. I am seeing the correct
> console.log() output, and I'm not getting any runtime exceptions.
>
> Tried building with both the normal SDK and with Maven. Same result. Both
> good.
>
> --
> Josh Tynjala
> Bowler Hat LLC <https://bowlerhat.dev>
>
>
> On Thu, Sep 3, 2020 at 2:27 AM Carlos Rovira <[email protected]>
> wrote:
>
> > Hi Josh,
> >
> > it seems that my latest changes to solve the problem is making no
> behaving
> > as before.
> > So I created a branch to get the fail again.
> >
> > You can checkout the branch: "bug/presentationmodel" to reproduce the
> > problem.
> > You'll see how debug works, but release fails.
> >
> > The changes done in the branch are 2:
> >
> > 1.- In "IDataGridColumnList" remove again interface "
> > IListWithPresentationModel"
> > 2.- change the use in DataGridView to avoid using "beadsAdded":
> >
> > (_listArea as IParent).addElement(list as IChild);
> >
> > var pm:DataGridColumnListPresentationModel = list.getBeadByType(
> > IListPresentationModel) as DataGridColumnListPresentationModel;
> > var zzz:Object = list.getBeadByType(IListPresentationModel);
> > COMPILE::JS {
> > console.log(zzz, zzz as DataGridColumnListPresentationModel);
> > }
> > pm.rowHeight = _presentationModel.rowHeight;
> > pm.variableRowHeight = false;
> > pm.align = list.columnInfo.align;
> >
> > columnLists.push(list);
> >
> > js code created for DataGridView is:
> >
> >
> this.org_apache_royale_jewel_beads_views_DataGridView__listArea.addElement
> > (list);
> > var /** @type {Object} */ pm =
> list.getBeadByType(org.apache.royale.jewel.
> > supportClasses.list.IListPresentationModel);
> > var /** @type {Object} */ zzz =
> list.getBeadByType(org.apache.royale.jewel.
> > supportClasses.list.IListPresentationModel);
> > console.log(zzz, zzz);
> > pm.rowHeight = this.
> > org_apache_royale_jewel_beads_views_DataGridView__presentationModel.
> > rowHeight;
> > pm.variableRowHeight = false;
> > pm.align = list.columnInfo.align;
> > this.columnLists.push(list);
> >
> > a) In DEBUG mode I get the logs of zzz, zzz right with the instances
> >
> > org.apache.royale.jewel.beads.models.DataGridColumnListPresentationModel
> > {disposed_:
> > false, onDisposeCallbacks_: undefined, eventTargetListeners_:
> > g…g.e…s.ListenerMap, actualEventTarget_:
> > org.a…e.r…e.j…l.b…s.m…s.DataGridColumnListPresentationModel,
> > parentEventTarget_: null, …}
> > org.apache.royale.jewel.beads.models.DataGridColumnListPresentationModel
> > {disposed_:
> > false, onDisposeCallbacks_: undefined, eventTargetListeners_:
> > g…g.e…s.ListenerMap, actualEventTarget_:
> > org.a…e.r…e.j…l.b…s.m…s.DataGridColumnListPresentationModel,
> > parentEventTarget_: null, …}
> > ,
> > org.apache.royale.jewel.beads.models.DataGridColumnListPresentationModel
> > {disposed_:
> > false, onDisposeCallbacks_: undefined, eventTargetListeners_:
> > g…g.e…s.ListenerMap, actualEventTarget_:
> > org.a…e.r…e.j…l.b…s.m…s.DataGridColumnListPresentationModel,
> > parentEventTarget_: null, …}
> > org.apache.royale.jewel.beads.models.DataGridColumnListPresentationModel
> > {disposed_:
> > false, onDisposeCallbacks_: undefined, eventTargetListeners_:
> > g…g.e…s.ListenerMap, actualEventTarget_:
> > org.a…e.r…e.j…l.b…s.m…s.DataGridColumnListPresentationModel,
> > parentEventTarget_: null, …}
> >
> > b) In RELEASE it fails with this error:
> >
> > DataGridView.as:244 null null
> > DataGridView.as:246 Uncaught TypeError: Cannot set property 'rowHeight'
> of
> > null
> >     at yo (DataGridView.as:246)
> >     at wo.G.m (DataGridView.as:134)
> >     at ul.G.addBead (ElementWrapper.as:270)
> >     at ul.Yk.addBead (HTMLElementWrapper.js:43)
> >     at ul.G.addBead (UIBase.js:372)
> >     at cl (loadBeadFromValuesManager.js:41)
> >     at ul.G.loadBeads (UIBase.as:1415)
> >     at ul.G.addedToParent (UIBase.as:1398)
> >     at ul.G.addedToParent (GroupBase.js:58)
> >     at ul.tl.addedToParent (Group.js:67)
> >
> >
> > El mié., 2 sept. 2020 a las 21:16, Josh Tynjala (<
> > [email protected]>)
> > escribió:
> >
> > > I don't think that this code is compiled incorrectly. I think that we
> > > haven't found the proper code to reproduce your original issue. As
> best I
> > > can tell, the list.presentationModel getter is where the
> > > IListPresentationModel is created, so returning null is the correct
> > > behavior for getBeadByType() in this particular code. Clearly, this is
> > not
> > > the right way to reproduce the issue that you described (which involved
> > the
> > > release build not behaving the same as the debug build), so I need your
> > > help to find out how to reproduce it.
> > >
> > > --
> > > Josh Tynjala
> > > Bowler Hat LLC <https://bowlerhat.dev>
> > >
> > >
> > > On Wed, Sep 2, 2020 at 12:01 PM Carlos Rovira <[email protected]
> >
> > > wrote:
> > >
> > > > Hi Josh,
> > > >
> > > > If I change that function to this code:
> > > >
> > > > /**
> > > > * @private
> > > > */
> > > > protected function
> > configureColumnListPresentationModel(event:Event):void
> > > > {
> > > > var list:IDataGridColumnList = event.target as IDataGridColumnList;
> > > > var zzz:Object = (list as
> > IStrand).getBeadByType(IListPresentationModel);
> > > > COMPILE::JS {
> > > > console.log(zzz, zzz as DataGridColumnListPresentationModel);
> > > > }
> > > > //var pm:DataGridColumnListPresentationModel =
> > > > list.getBeadByType(IListPresentationModel) as
> > > > DataGridColumnListPresentationModel; --> this line doesn't work
> > > > var pm:DataGridColumnListPresentationModel = list.presentationModel
> as
> > > > DataGridColumnListPresentationModel;
> > > > pm.rowHeight = _presentationModel.rowHeight;
> > > > pm.variableRowHeight = false;
> > > > pm.align = list.columnInfo.align;
> > > > }
> > > >
> > > > I get null, null too
> > > >
> > > > I think it's ok with the current problem, instead of getting the
> IBead,
> > > we
> > > > are getting null, so I guess something is compiling wrongly
> > > >
> > > > The compiled code I get is this:
> > > >
> > > > /**
> > > > * @asprivate
> > > > * @protected
> > > > * @param {org.apache.royale.events.Event} event
> > > > */
> > > > org.apache.royale.jewel.beads.views.DataGridView.prototype.
> > > > configureColumnListPresentationModel = function(event) {
> > > > var /** @type
> > > > {org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList}
> > */
> > > > list = org.apache.royale.utils.Language.as(event.target,
> > > > org.apache.royale.
> > > > jewel.supportClasses.datagrid.IDataGridColumnList);
> > > > var /** @type {Object} */ zzz = org.apache.royale.utils.Language.as
> > > (list,
> > > >
> org.apache.royale.core.IStrand).getBeadByType(org.apache.royale.jewel.
> > > > supportClasses.list.IListPresentationModel);
> > > > console.log(zzz, org.apache.royale.utils.Language.as(zzz,
> > > > org.apache.royale.
> > > > jewel.beads.models.DataGridColumnListPresentationModel));
> > > > var /** @type
> > > >
> > >
> >
> {org.apache.royale.jewel.beads.models.DataGridColumnListPresentationModel}
> > > > */ pm = org.apache.royale.utils.Language.as(list.presentationModel,
> > org.
> > > >
> apache.royale.jewel.beads.models.DataGridColumnListPresentationModel);
> > > > pm.rowHeight = this.
> > > > org_apache_royale_jewel_beads_views_DataGridView__presentationModel.
> > > > rowHeight;
> > > > pm.variableRowHeight = false;
> > > > pm.align = list.columnInfo.align;
> > > > };
> > > >
> > > >
> > > > El mié., 2 sept. 2020 a las 19:44, Josh Tynjala (<
> > > > [email protected]>)
> > > > escribió:
> > > >
> > > > > I had a free moment to look into this, but I'm having trouble
> > > reproducing
> > > > > the same behavior.
> > > > >
> > > > > I added the following code inside
> > > > > DataGridView.configureColumnListPresentationModel():
> > > > >
> > > > > var zzz:Object = list.getBeadByType(IListPresentationModel);
> > > > > COMPILE::JS {
> > > > >     console.log(zzz, zzz as DataGridColumnListPresentationModel);
> > > > > }
> > > > >
> > > > > If I build and run TourDeJewel, it prints "null null" to the debug
> > > > console.
> > > > > There's no difference between debug and release builds, so I guess
> > I'm
> > > > > doing something wrong.
> > > > >
> > > > > Can you put together some simple code that will reproduce the
> issue?
> > > > >
> > > > > --
> > > > > Josh Tynjala
> > > > > Bowler Hat LLC <https://bowlerhat.dev>
> > > > >
> > > > >
> > > > > On Wed, Sep 2, 2020 at 9:27 AM Josh Tynjala <
> > [email protected]
> > > >
> > > > > wrote:
> > > > >
> > > > > > In a release build, what gets returned by
> > > > > > getBeadByType(IListPresentationModel) if you don't cast it with
> "as
> > > > > > DataGridColumnListPresentationModel"? Is it the correct object?
> Or
> > is
> > > > it
> > > > > > also null?
> > > > > >
> > > > > > --
> > > > > > Josh Tynjala
> > > > > > Bowler Hat LLC <https://bowlerhat.dev>
> > > > > >
> > > > > >
> > > > > > On Wed, Sep 2, 2020 at 6:43 AM Carlos Rovira <
> > > [email protected]>
> > > > > > wrote:
> > > > > >
> > > > > >> Hi,
> > > > > >>
> > > > > >> I did some more testing and it's not a timing issue.
> > > > > >> I refactored the PM code to "beadsAdded" since is the right
> place
> > to
> > > > > >> configure it (or was retrieved from the beads array or it's
> > created
> > > > from
> > > > > >> scratch).
> > > > > >> Trying to use the "getBeadByType" line fails the same way, so
> the
> > > > > problem
> > > > > >> is clearly a compiler issue, from my point of view.
> > > > > >>
> > > > > >> El mié., 2 sept. 2020 a las 14:17, Carlos Rovira (<
> > > > > >> [email protected]>)
> > > > > >> escribió:
> > > > > >>
> > > > > >> > Hi,
> > > > > >> >
> > > > > >> > I just committed a fix to solve an issue Piotr was getting in
> > > > > DataGrid.
> > > > > >> >
> > > > > >> > The issue only can be seen in release mode, in debug works, so
> > it
> > > > > seems
> > > > > >> a
> > > > > >> > compiler bug so hope others like Greg or Josh with more
> > knowledge
> > > in
> > > > > >> that
> > > > > >> > field can see what could be wrong, or if maybe it is just some
> > > issue
> > > > > in
> > > > > >> the
> > > > > >> > code.
> > > > > >> >
> > > > > >> > Problem is in DataGridView line 239:
> > > > > >> >
> > > > > >> > // var pm:DataGridColumnListPresentationModel =
> > > > > >> > list.getBeadByType(IListPresentationModel) as
> > > > > >> > DataGridColumnListPresentationModel;
> > > > > >> > var pm:DataGridColumnListPresentationModel =
> > > list.presentationModel
> > > > as
> > > > > >> > DataGridColumnListPresentationModel;
> > > > > >> > Commented line does not work, I need to refactor to the next
> > one.
> > > > > >> >
> > > > > >> > in the commit I added missed coercions and need to make
> > > > > >> > IDataGridColumnList implement "IListWithPresentationModel"
> > (what I
> > > > > think
> > > > > >> > is ok since that is needed for all column lists.
> > > > > >> >
> > > > > >> > So the problem is: Why can't I retrieve the bead from the
> list?
> > > > > >> >
> > > > > >> > I'm thinking this could be a timing issue, since the list
> needs
> > to
> > > > be
> > > > > >> > added to the parent to process the beads and be able to
> retrieve
> > > the
> > > > > >> one.
> > > > > >> > I'll try one more test now trying to put some time out after
> > > > > addElement.
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >> > ---------- Forwarded message ---------
> > > > > >> > De: Piotr Zarzycki <[email protected]>
> > > > > >> > Date: mié., 2 sept. 2020 a las 12:48
> > > > > >> > Subject: Re: NPE in DataGridView - release build of
> application
> > > > > >> > To: Apache Royale Development <[email protected]>
> > > > > >> >
> > > > > >> >
> > > > > >> > I have sent you.
> > > > > >> >
> > > > > >> > śr., 2 wrz 2020 o 12:41 Carlos Rovira <
> [email protected]>
> > > > > >> > napisał(a):
> > > > > >> >
> > > > > >> > > cool :)
> > > > > >> > > yeah send me :)
> > > > > >> > >
> > > > > >> >
> > > > > >> > --
> > > > > >> > Carlos Rovira
> > > > > >> > http://about.me/carlosrovira
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >>
> > > > > >> --
> > > > > >> Carlos Rovira
> > > > > >> http://about.me/carlosrovira
> > > > > >>
> > > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Carlos Rovira
> > > > http://about.me/carlosrovira
> > > >
> > >
> >
> >
> > --
> > Carlos Rovira
> > http://about.me/carlosrovira
> >
>


-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to