You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flex.apache.org by "Mihai Chira (JIRA)" <ji...@apache.org> on 2014/08/21 11:25:11 UTC

[jira] [Updated] (FLEX-34440) 'Bookmark no longer valid' CursorError caused by HierarchicalCollectionView's conversion of CollectionEventKind.REPLACE into CollectionEventKind.REMOVE

     [ https://issues.apache.org/jira/browse/FLEX-34440?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mihai Chira updated FLEX-34440:
-------------------------------

    Description: 
*Steps to reproduce A*:
Run [HierarchicalCollectionViewCursor_FLEX_34440_Test.as|https://git-wip-us.apache.org/repos/asf?p=flex-sdk.git;a=blob_plain;f=frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34440_Test.as;hb=develop] against a previous version of HierarchicalCollectionViewCursor/HierarchicalCollectionView/LeafNodeCursor.

*Steps to reproduce B*:
# Create a HierarchicalCollectionView with the structure below
# Create a HierarchicalCollectionViewCursor, and call seek(new CursorBookmark(10));
# Call setItemAt(new DataNode*("Replaced Node"), 1) on the collection of companies (effectively replacing "Region(2) -> City(1) -> Company(2)TBR" with a new node)

*Expected behaviour*: no error.
*Actual behaviour*: this runtime error is thrown:
Error: Bookmark no longer valid.
	at ListCollectionViewCursor/seek()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:2522]
	at mx.collections::HierarchicalCollectionViewCursor/collectionChangeHandler()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\mx\collections\HierarchicalCollectionViewCursor.as:1296]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.collections::HierarchicalCollectionView/nestedCollectionChangeHandler()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\mx\collections\HierarchicalCollectionView.as:1664]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.collections::ListCollectionView/dispatchEvent()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1090]
	at mx.collections::ListCollectionView/replaceItemsInView()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1822]
	at mx.collections::ListCollectionView/listChangeHandler()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1397]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.collections::ArrayList/setItemAt()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ArrayList.as:371]
	at mx.collections::ListCollectionView/setItemAt()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:558]
	at HierarchicalCollectionViewCursor_FLEX_34119_SET_Test/performReplacement()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\HierarchicalCollectionViewCursor_FLEX_34119_SET_Test.as:90]

\* Or whichever data class you use to structure the hierarchical data.

*Structure*:
Region(1)
Region(2)
Region(2) -> City(0)
Region(2) -> City(1)
Region(2) -> City(1) -> Company(1)
Region(2) -> City(1) -> Company(2)TBR
Region(2) -> City(1) -> Company(2)TBR -> Department(1)
Region(2) -> City(1) -> Company(2)TBR -> Department(2)
Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(1)
Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(2)
Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(3)SEL
Region(2) -> City(1) -> Company(2)TBR -> Department(3)
Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(1)
Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(2)
Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(3)
Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(4)
Region(2) -> City(1) -> Company(3)
Region(2) -> City(1) -> Company(3) -> Department(1)
Region(2) -> City(1) -> Company(3) -> Department(1) -> Employee(1)
Region(2) -> City(1) -> Company(3) -> Department(2)

  was:
*Steps to reproduce*:
# Create a HierarchicalCollectionView with the structure below
# Create a HierarchicalCollectionViewCursor, and call seek(new CursorBookmark(10));
# Call setItemAt(new DataNode*("Replaced Node"), 1) on the collection of companies (effectively replacing "Region(2) -> City(1) -> Company(2)TBR" with a new node)

*Expected behaviour*: no error.
*Actual behaviour*: this runtime error is thrown:
Error: Bookmark no longer valid.
	at ListCollectionViewCursor/seek()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:2522]
	at mx.collections::HierarchicalCollectionViewCursor/collectionChangeHandler()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\mx\collections\HierarchicalCollectionViewCursor.as:1296]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.collections::HierarchicalCollectionView/nestedCollectionChangeHandler()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\mx\collections\HierarchicalCollectionView.as:1664]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.collections::ListCollectionView/dispatchEvent()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1090]
	at mx.collections::ListCollectionView/replaceItemsInView()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1822]
	at mx.collections::ListCollectionView/listChangeHandler()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1397]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.collections::ArrayList/setItemAt()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ArrayList.as:371]
	at mx.collections::ListCollectionView/setItemAt()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:558]
	at HierarchicalCollectionViewCursor_FLEX_34119_SET_Test/performReplacement()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\HierarchicalCollectionViewCursor_FLEX_34119_SET_Test.as:90]

\* Or whichever data class you use to structure the hierarchical data.

*Structure*:
Region(1)
Region(2)
Region(2) -> City(0)
Region(2) -> City(1)
Region(2) -> City(1) -> Company(1)
Region(2) -> City(1) -> Company(2)TBR
Region(2) -> City(1) -> Company(2)TBR -> Department(1)
Region(2) -> City(1) -> Company(2)TBR -> Department(2)
Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(1)
Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(2)
Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(3)SEL
Region(2) -> City(1) -> Company(2)TBR -> Department(3)
Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(1)
Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(2)
Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(3)
Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(4)
Region(2) -> City(1) -> Company(3)
Region(2) -> City(1) -> Company(3) -> Department(1)
Region(2) -> City(1) -> Company(3) -> Department(1) -> Employee(1)
Region(2) -> City(1) -> Company(3) -> Department(2)


> 'Bookmark no longer valid' CursorError caused by HierarchicalCollectionView's conversion of CollectionEventKind.REPLACE into CollectionEventKind.REMOVE
> -------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: FLEX-34440
>                 URL: https://issues.apache.org/jira/browse/FLEX-34440
>             Project: Apache Flex
>          Issue Type: Sub-task
>          Components: Advanced Data Grid, mx: Tree
>    Affects Versions: Apache Flex 4.13.0
>            Reporter: Mihai Chira
>            Assignee: Mihai Chira
>             Fix For: Apache Flex 4.14.0
>
>
> *Steps to reproduce A*:
> Run [HierarchicalCollectionViewCursor_FLEX_34440_Test.as|https://git-wip-us.apache.org/repos/asf?p=flex-sdk.git;a=blob_plain;f=frameworks/tests/unitTests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34440_Test.as;hb=develop] against a previous version of HierarchicalCollectionViewCursor/HierarchicalCollectionView/LeafNodeCursor.
> *Steps to reproduce B*:
> # Create a HierarchicalCollectionView with the structure below
> # Create a HierarchicalCollectionViewCursor, and call seek(new CursorBookmark(10));
> # Call setItemAt(new DataNode*("Replaced Node"), 1) on the collection of companies (effectively replacing "Region(2) -> City(1) -> Company(2)TBR" with a new node)
> *Expected behaviour*: no error.
> *Actual behaviour*: this runtime error is thrown:
> Error: Bookmark no longer valid.
> 	at ListCollectionViewCursor/seek()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:2522]
> 	at mx.collections::HierarchicalCollectionViewCursor/collectionChangeHandler()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\mx\collections\HierarchicalCollectionViewCursor.as:1296]
> 	at flash.events::EventDispatcher/dispatchEventFunction()
> 	at flash.events::EventDispatcher/dispatchEvent()
> 	at mx.collections::HierarchicalCollectionView/nestedCollectionChangeHandler()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\mx\collections\HierarchicalCollectionView.as:1664]
> 	at flash.events::EventDispatcher/dispatchEventFunction()
> 	at flash.events::EventDispatcher/dispatchEvent()
> 	at mx.collections::ListCollectionView/dispatchEvent()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1090]
> 	at mx.collections::ListCollectionView/replaceItemsInView()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1822]
> 	at mx.collections::ListCollectionView/listChangeHandler()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:1397]
> 	at flash.events::EventDispatcher/dispatchEventFunction()
> 	at flash.events::EventDispatcher/dispatchEvent()
> 	at mx.collections::ArrayList/setItemAt()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ArrayList.as:371]
> 	at mx.collections::ListCollectionView/setItemAt()[C:\Users\mihaichira\workspaceFlex\FlexSDKSource\sdk\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:558]
> 	at HierarchicalCollectionViewCursor_FLEX_34119_SET_Test/performReplacement()[C:\Users\mihaichira\workspaceFlex\TFC-10693\src\HierarchicalCollectionViewCursor_FLEX_34119_SET_Test.as:90]
> \* Or whichever data class you use to structure the hierarchical data.
> *Structure*:
> Region(1)
> Region(2)
> Region(2) -> City(0)
> Region(2) -> City(1)
> Region(2) -> City(1) -> Company(1)
> Region(2) -> City(1) -> Company(2)TBR
> Region(2) -> City(1) -> Company(2)TBR -> Department(1)
> Region(2) -> City(1) -> Company(2)TBR -> Department(2)
> Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(1)
> Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(2)
> Region(2) -> City(1) -> Company(2)TBR -> Department(2) -> Employee(3)SEL
> Region(2) -> City(1) -> Company(2)TBR -> Department(3)
> Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(1)
> Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(2)
> Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(3)
> Region(2) -> City(1) -> Company(2)TBR -> Department(3) -> Employee(4)
> Region(2) -> City(1) -> Company(3)
> Region(2) -> City(1) -> Company(3) -> Department(1)
> Region(2) -> City(1) -> Company(3) -> Department(1) -> Employee(1)
> Region(2) -> City(1) -> Company(3) -> Department(2)



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