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.

Bug 209322

Summary: proxyLookup.allInstances().iterator() should be interative
Product: platform Reporter: Jaroslav Tulach <jtulach>
Component: LookupAssignee: Jaroslav Tulach <jtulach>
Status: RESOLVED FIXED    
Severity: normal CC: apireviews, jglick
Priority: P1    
Version: 7.2   
Hardware: Other   
OS: Linux   
Issue Type: DEFECT Exception Reporter:
Bug Depends on: 212862    
Bug Blocks: 210279, 229366    

Description Jaroslav Tulach 2012-03-08 13:23:25 UTC
When iterating over proxyLookup.allInstances().iterator(), one should get iterative results, e.g. instances should be returned, if present, without calling beforeLookup on subsequent lookups, if their instances are not needed.

This will solve most of issues with Lookup.getDefault().allInstances() that are searching for some particular instance, but not all of them (like ClassLoader in ImageUtilities and Notifier in masterfs).
Comment 1 Jaroslav Tulach 2012-03-08 13:24:30 UTC
Currently blocks propagation of changes from ergonomics repository as tests like
org.netbeans.modules.settings.convertors.ConvertAsBeanTest.testReadWriteOnSubclass and org.netbeans.spi.settings.DOMConvertorTest.testCreateSetting_XML are failing due to deadlock between Lookup and AWT shutdown hook.
Comment 2 Jaroslav Tulach 2012-03-08 13:28:12 UTC
Group main
  Thread main
  at java.lang.Thread.dumpThreads(Thread.java:-2)
  at java.lang.Thread.getAllStackTraces(Thread.java:1530)
  at org.netbeans.junit.NbTestCase.threadDump(NbTestCase.java:302)
  at org.netbeans.junit.NbTestCase.access$000(NbTestCase.java:99)
  at org.netbeans.junit.NbTestCase$1Guard.waitFinished(NbTestCase.java:372)
  at org.netbeans.junit.NbTestCase.runBare(NbTestCase.java:430)
  at org.netbeans.junit.NbTestCase.run(NbTestCase.java:265)
  Thread Active Reference Queue Daemon
  at java.lang.Object.wait(Object.java:-2)
  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
  at org.openide.util.lookup.implspi.ActiveQueue$Daemon.run(ActiveQueue.java:174)
  Thread AWT-XAWT
  at sun.awt.X11.XToolkit.waitForEvents(XToolkit.java:-2)
  at sun.awt.X11.XToolkit.run(XToolkit.java:579)
  at sun.awt.X11.XToolkit.run(XToolkit.java:543)
  at java.lang.Thread.run(Thread.java:662)
  Thread AWT-Shutdown
  at java.lang.Object.wait(Object.java:-2)
  at java.lang.Object.wait(Object.java:485)
  at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:265)
  at java.lang.Thread.run(Thread.java:662)
  Thread AWT-EventQueue-0
  at java.lang.Object.wait(Object.java:-2)
  at java.lang.Object.wait(Object.java:485)
  at org.openide.util.Task.waitFinished(Task.java:133)
  at org.openide.util.RequestProcessor$Task.waitFinished(RequestProcessor.java:1667)
  at org.openide.loaders.FolderInstance.waitFinished(FolderInstance.java:332)
  at org.openide.loaders.FolderLookup$ProxyLkp.beforeLookup(FolderLookup.java:420)
  at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:624)
  at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:647)
  at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:634)
  at org.openide.util.lookup.ProxyLookup$R.access$600(ProxyLookup.java:332)
  at org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1009)
  at org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1003)
  at org.openide.util.lookup.ProxyLookup$LazyCollection.iterator(ProxyLookup.java:1099)
  at org.openide.util.ImageUtilities.getLoader(ImageUtilities.java:339)
  at org.openide.util.ImageUtilities.getIcon(ImageUtilities.java:420)
  at org.openide.util.ImageUtilities.loadImage(ImageUtilities.java:132)
  at org.netbeans.swing.plaf.util.UIUtils.loadWithUtilities(UIUtils.java:153)
  at org.netbeans.swing.plaf.util.UIUtils.loadImage(UIUtils.java:125)
  at org.netbeans.swing.plaf.metal.MetalLFCustoms.createApplicationSpecificKeysAndValues(MetalLFCustoms.java:106)
  at org.netbeans.swing.plaf.LFCustoms.getApplicationSpecificKeysAndValues(LFCustoms.java:96)
  at org.netbeans.swing.plaf.Startup.installLFCustoms(Startup.java:325)
  at org.netbeans.swing.plaf.Startup.installPerLFDefaults(Startup.java:255)
  at org.netbeans.swing.plaf.Startup.install(Startup.java:236)
  at org.netbeans.swing.plaf.Startup.run(Startup.java:507)
  at org.netbeans.core.CoreBridgeImpl$1.run(CoreBridgeImpl.java:131)
  at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
  at java.awt.EventQueue.access$000(EventQueue.java:84)
  at java.awt.EventQueue$1.run(EventQueue.java:602)
  at java.awt.EventQueue$1.run(EventQueue.java:600)
  at java.security.AccessController.doPrivileged(AccessController.java:-2)
  at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
  Thread Test Watch Dog: testCreateSetting
  at java.lang.Object.wait(Object.java:-2)
  at java.lang.Object.wait(Object.java:485)
  at org.openide.util.Task.waitFinished(Task.java:133)
  at org.openide.util.RequestProcessor$Task.waitFinished(RequestProcessor.java:1667)
  at org.openide.loaders.FolderInstance.waitFinished(FolderInstance.java:332)
  at org.openide.loaders.FolderLookup$ProxyLkp.beforeLookup(FolderLookup.java:420)
  at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:624)
  at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:647)
  at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:634)
  at org.openide.util.lookup.ProxyLookup$R.access$600(ProxyLookup.java:332)
  at org.openide.util.lookup.ProxyLookup$LazyCollection.computeDelegate(ProxyLookup.java:1009)
  at org.openide.util.lookup.ProxyLookup$LazyCollection.delegate(ProxyLookup.java:1003)
  at org.openide.util.lookup.ProxyLookup$LazyCollection.toArray(ProxyLookup.java:1104)
  at java.util.ArrayList.addAll(ArrayList.java:472)
  at org.netbeans.core.NbLoaderPool.loaders(NbLoaderPool.java:754)
  at org.openide.loaders.DataLoaderPool.computeLoaders(DataLoaderPool.java:286)
  at org.openide.loaders.DataLoaderPool.allLoaders(DataLoaderPool.java:336)
  at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:530)
  at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:493)
  at org.openide.loaders.DataObject.find(DataObject.java:532)
  at org.openide.loaders.DataFolder.findFolder(DataFolder.java:540)
  at org.netbeans.spi.settings.DOMConvertorTest.testCreateSetting(DOMConvertorTest.java:87)
  at org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:99)
  at org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:405)
  at org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:331)
  at java.lang.Thread.run(Thread.java:662)
  Thread Test Watch Dog: testCreateSetting_XML
  at org.netbeans.core.NbLoaderPool.loaders(NbLoaderPool.java:751)
  at org.openide.loaders.DataLoaderPool.computeLoaders(DataLoaderPool.java:286)
  at org.openide.loaders.DataLoaderPool.allLoaders(DataLoaderPool.java:336)
  at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:530)
  at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:493)
  at org.openide.loaders.DataObject.find(DataObject.java:532)
  at org.openide.loaders.DataFolder.findFolder(DataFolder.java:540)
  at org.netbeans.spi.settings.DOMConvertorTest.testCreateSetting_XML(DOMConvertorTest.java:119)
  at org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:99)
  at org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:405)
  at org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:331)
  at java.lang.Thread.run(Thread.java:662)
Thread Reference Handler
  at java.lang.Object.wait(Object.java:-2)
  at java.lang.Object.wait(Object.java:485)
  at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
Thread Finalizer
  at java.lang.Object.wait(Object.java:-2)
  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
  at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
Thread Signal Dispatcher
Thread Java2D Disposer
  at java.lang.Object.wait(Object.java:-2)
  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
  at sun.java2d.Disposer.run(Disposer.java:127)
  at java.lang.Thread.run(Thread.java:662)
Thread Folder recognizer
  at org.netbeans.core.NbLoaderPool.loaders(NbLoaderPool.java:751)
  at org.openide.loaders.DataLoaderPool.computeLoaders(DataLoaderPool.java:286)
  at org.openide.loaders.DataLoaderPool.allLoaders(DataLoaderPool.java:336)
  at org.openide.loaders.DataLoaderPool.findDataObject(DataLoaderPool.java:530)
  at org.openide.loaders.FolderList.createBoth(FolderList.java:799)
  at org.openide.loaders.FolderList.getObjects(FolderList.java:595)
  at org.openide.loaders.FolderList.access$200(FolderList.java:77)
  at org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:994)
  at org.openide.loaders.FolderList$ListTask.run(FolderList.java:970)
  at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1411)
  at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1991)
Thread Inactive RequestProcessor thread [Was:TimedSoftReference/org.openide.util.TimedSoftReference]
  at java.lang.Object.wait(Object.java:-2)
  at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1942)
    [junit] 
  at org.netbeans.junit.NbTestCase$1Guard.waitFinished(NbTestCase.java:372)
  at org.netbeans.junit.NbTestCase.runBare(NbTestCase.java:430)
  at org.netbeans.junit.NbTestCase.run(NbTestCase.java:265)
Comment 3 Jaroslav Tulach 2012-03-08 15:04:13 UTC
Implemented on a branch
http://hg.netbeans.org/ergonomics/rev/IterativeProxyIterator209322
and merged as 0eca64c241c3
Comment 4 Jaroslav Tulach 2012-03-09 09:19:33 UTC
Needs few more fixes and deserves a review for semantic incompatibility:
http://hg.netbeans.org/ergonomics/rev/49f78bc9c543
Right now I am fixing 35 failed tests. Vladimir, can you check CND tests, please?
Comment 5 Jaroslav Tulach 2012-03-11 10:43:36 UTC
Running ant -f cnd.kit/misc-build.xml test seems to produce reasonable results. Seems OK in e12ef8061554.
Comment 6 Jesse Glick 2012-03-12 14:20:29 UTC
Fixed issue link in apichanges: core-main #7d552aa694b8