This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
DataFolder currently offers to crate the presentation of it's children with a given filter. Although this filter can not be changed during the lifecycle of the children. With the introduction of VisibilityQiery (where the list of ignored files can be changed by the user) this API becomes insufficient. Sugessted solution is to add ChangeableDataFilter which will be able to fire events when the filtering semantics get changed.
Created attachment 15493 [details] Proposed new interface
Created attachment 15494 [details] Diff for FolderChildren and it's test
Hrebejku have you thought about memory leaks? public void testChildrenCanGC () { Filter f = new Filter (); DataFolder folder = DataFolder.findFolder (bb); Children ch = folder.createNodeChildren( filter ); Node[] arr = ch.getNodes (true); WeakReference ref = new WeakReference (ch); ch = null; arr = null; assertGC ("Children can disappear even we hold the filter", ch); }
The test now looks like: public void testChildrenCanGC () { Filter filter = new Filter (); FileSystem fs = Repository.getDefault ().getDefaultFileSystem(); FileObject bb = fs.findResource("/BB"); DataFolder folder = DataFolder.findFolder (bb); Children ch = folder.createNodeChildren( filter ); Node[] arr = ch.getNodes (true); WeakReference ref = new WeakReference (ch); ch = null; arr = null; assertGC ("Children can disappear even we hold the filter", ref); } and it passes.
Created attachment 15638 [details] Newer diff for FolderChildren (does not collapse nodes on filter change)
Changeable data filter added. RCS file: /cvs/openide/loaders/src/org/openide/loaders/ChangeableDataFilter.java,v done Checking in openide/loaders/src/org/openide/loaders/ChangeableDataFilter.java; /cvs/openide/loaders/src/org/openide/loaders/ChangeableDataFilter.java,v <-- ChangeableDataFilter.java initial revision: 1.1 done Checking in openide/loaders/src/org/openide/loaders/FolderChildren.java; /cvs/openide/loaders/src/org/openide/loaders/FolderChildren.java,v <-- FolderChildren.java new revision: 1.5; previous revision: 1.4 done Processing log script arguments... More commits to come... Checking in openide/test/unit/src/org/openide/loaders/FolderChildrenTest.java; /cvs/openide/test/unit/src/org/openide/loaders/FolderChildrenTest.java,v <-- FolderChildrenTest.java new revision: 1.3; previous revision: 1.2 done