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 - proxyLookup.allInstances().iterator() should be interative
Summary: proxyLookup.allInstances().iterator() should be interative
Status: RESOLVED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: Lookup (show other bugs)
Version: 7.2
Hardware: Other Linux
: P1 normal (vote)
Assignee: Jaroslav Tulach
URL:
Keywords:
Depends on: 212862
Blocks: 210279 229366
  Show dependency tree
 
Reported: 2012-03-08 13:23 UTC by Jaroslav Tulach
Modified: 2013-08-30 12:38 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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