flex-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nick Kwiatkowski (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLEX-34283) XML item's parent null in item renderer when added to XMLListCollection
Date Wed, 21 May 2014 04:35:38 GMT

    [ https://issues.apache.org/jira/browse/FLEX-34283?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14004333#comment-14004333
] 

Nick Kwiatkowski commented on FLEX-34283:
-----------------------------------------

Alex,

I don't think we do this for other bugs, do we?  We are doing what is expected and documented
at the moment.

Michael,

I didn't change the behavior of the remove function yet.  Not sure where to start with that
(other than I can do the same as I did with the add, but in reverse -- create a new source
list and go through each one and not add it back to that one).  I'll update the addItem to
not call addItemAt to make it a bit more efficient tomorrow.

-Nick

> XML item's parent null in item renderer when added to XMLListCollection
> -----------------------------------------------------------------------
>
>                 Key: FLEX-34283
>                 URL: https://issues.apache.org/jira/browse/FLEX-34283
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Spark: List
>    Affects Versions: Apache Flex 4.12.0
>            Reporter: Frédéric Monjo
>            Assignee: Nick Kwiatkowski
>            Priority: Critical
>              Labels: collections, xml
>             Fix For: Apache Flex 4.13.0
>
>         Attachments: Tests.mxml
>
>
> Since 4.12, there seems to be a regression bug in XMLListCollection. The scenario is:
> # The user selects an item in a list and clicks a button to create a copy of this item
below the selected one
> # Clone the item through {{item.copy()}}, make some modifications to this item
> # Add the item to the XMLListCollection using {{addItemAt}}, then call {{refresh()}}
on the collection
> # Inside some item renderers (not obviously the cloned one), XML item's parent is null,
and never get updated, which could cause runtime errors.
> Up to version 4.11, there has never been such problems. After a short investigation,
this problem may be caused by a change in {{XMLListAdapter}} from [this commit|https://github.com/apache/flex-sdk/commit/59dd2be7f6a9b0fda745249cf979adeac7f406b7].

> Please find attached a sample program to reproduce the bug. Run the program, select an
item and click on the "Duplicate after" button. 
> When run in 4.11, you should see the following console trace :
> {code}
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="2"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> --------------------------------------------------
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="1+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="2"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> {code}
> Whereas when run in 4.12, you would get :
> {code}
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="2"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> --------------------------------------------------
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="1+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="2"/> --- is child of ---> null
> {code}
> Where you can see that the last item has lost his parent (note that it is not the cloned
item). You may try to clone several random items, and results get even more confusing as you
clone more items :
> {code}
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> <foo id="2"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="2"/></root>
> --------------------------------------------------
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="1+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="2"/></root>
> <foo id="2"/> --- is child of ---> null
> --------------------------------------------------
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/></root>
> <foo id="1+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/></root>
> <foo id="1++"/> --- is child of ---> <root><foo id="0"/><foo
id="1"/><foo id="1+"/><foo id="1++"/><foo id="2"/></root>
> <foo id="2"/> --- is child of ---> null
> --------------------------------------------------
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/></root>
> <foo id="1+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/></root>
> <foo id="1++"/> --- is child of ---> <root><foo id="0"/><foo
id="1"/><foo id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/></root>
> <foo id="2"/> --- is child of ---> null
> <foo id="2+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/></root>
> --------------------------------------------------
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/></root>
> <foo id="1+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/></root>
> <foo id="1++"/> --- is child of ---> <root><foo id="0"/><foo
id="1"/><foo id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo
id="2+"/></root>
> <foo id="2"/> --- is child of ---> null
> <foo id="2+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/></root>
> <foo id="2+"/> --- is child of ---> null
> --------------------------------------------------
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/><foo
id="2++"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/><foo
id="2++"/></root>
> <foo id="1+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/><foo
id="2++"/></root>
> <foo id="1++"/> --- is child of ---> <root><foo id="0"/><foo
id="1"/><foo id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo
id="2+"/><foo id="2++"/></root>
> <foo id="2"/> --- is child of ---> null
> <foo id="2+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/><foo
id="2++"/></root>
> <foo id="2+"/> --- is child of ---> null
> <foo id="2++"/> --- is child of ---> <root><foo id="0"/><foo
id="1"/><foo id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo
id="2+"/><foo id="2++"/></root>
> --------------------------------------------------
> <foo id="0"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/><foo
id="2+"/><foo id="2++"/></root>
> <foo id="1"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/><foo
id="2+"/><foo id="2++"/></root>
> <foo id="1+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/><foo
id="2+"/><foo id="2++"/></root>
> <foo id="1++"/> --- is child of ---> <root><foo id="0"/><foo
id="1"/><foo id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo
id="2+"/><foo id="2+"/><foo id="2++"/></root>
> <foo id="2"/> --- is child of ---> null
> <foo id="2+"/> --- is child of ---> <root><foo id="0"/><foo id="1"/><foo
id="1+"/><foo id="1++"/><foo id="2"/><foo id="2+"/><foo id="2+"/><foo
id="2+"/><foo id="2++"/></root>
> <foo id="2+"/> --- is child of ---> null
> <foo id="2+"/> --- is child of ---> null
> <foo id="2++"/> --- is child of ---> null
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message