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 160245 - FodDataObjectFactory DataObjects do not override getLookup()
Summary: FodDataObjectFactory DataObjects do not override getLookup()
Status: RESOLVED DUPLICATE of bug 160237
Alias: None
Product: ide
Classification: Unclassified
Component: Features On Demand (show other bugs)
Version: 6.x
Hardware: All All
: P1 blocker (vote)
Assignee: Jaroslav Tulach
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-03-13 08:52 UTC by _ tboudreau
Modified: 2009-06-21 13:43 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 _ tboudreau 2009-03-13 08:52:12 UTC
Trunk build 090312.

I have some simple code which allows me to define a project template in a properties file
(relative/path/in/project=sfs/path/to/template).  I am using FreeMarker for templating.

With ergonomics disabled, this works fine.  With ergonomics enabled, project creation fails with the exception below. 
First there is the following warning:

WARNING [org.openide.loaders]: Should override getLookup() in class
org.netbeans.modules.ide.ergonomics.fod.FodDataObjectFactory$Cookies, e.g.:
[MultiDataObject.this.]getCookieSet().getLookup()

Then I get the exception below.

I must hold ProjectManager.mutex() while creating a project on disk.  But if ergonomics is enabled, the code that looks
up the file encoding calls the default DataObject.getLookup() which invokes getNodeDelegate().getLookup() - and acquires
Children.MUTEX, causing the exception.

I must not create the project outside of ProjectManager.mutex(), and I cannot instantiate a template inside
ProjectManager.mutex()... == I cannot create a project.  Probably either having FodDataObjectFactory's DataObjects
properly override getLookup(), or creating some code path to query file encoding would solve the problem.  But I wonder
how many more problems like this there are.


java.lang.IllegalStateException: Should not acquire Children.MUTEX while holding ProjectManager.mutex()
	at org.openide.nodes.Children$ProjectManagerDeadlockDetector.execute(Children.java:1805)
	at org.openide.util.Mutex.doWrapperAccess(Mutex.java:1320)
	at org.openide.util.Mutex.readAccess(Mutex.java:351)
	at org.openide.loaders.DataObject.getNodeDelegateImpl(DataObject.java:281)
	at org.openide.loaders.DataObject.getLookup(DataObject.java:1010)
	at
org.netbeans.modules.openide.loaders.DataObjectEncodingQueryImplementation.getEncoding(DataObjectEncodingQueryImplementation.java:111)
	at org.netbeans.api.queries.FileEncodingQuery.getEncoding(FileEncodingQuery.java:91)
	at
org.netbeans.modules.templates.ScriptingCreateFromTemplateHandler.createFromTemplate(ScriptingCreateFromTemplateHandler.java:80)
	at org.openide.loaders.MultiDataObject.handleCreateFromTemplate(MultiDataObject.java:711)
	at org.openide.loaders.DataObject$CreateAction.run(DataObject.java:1285)
	at org.openide.loaders.DataObjectPool$1WrapAtomicAction.run(DataObjectPool.java:258)
	at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:120)
	at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:509)
	at org.openide.loaders.DataObjectPool.runAtomicAction(DataObjectPool.java:270)
	at org.openide.loaders.DataObject.invokeAtomicAction(DataObject.java:873)
	at org.openide.loaders.DataObject.createFromTemplate(DataObject.java:805)
	at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator$FileEntry.create(JavacardProjectGenerator.java:223)
	at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator.doCreateProject(JavacardProjectGenerator.java:102)
	at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator.access$000(JavacardProjectGenerator.java:42)
	at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator$1$1.run(JavacardProjectGenerator.java:75)
	at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator$1$1.run(JavacardProjectGenerator.java:72)
	at org.openide.util.Mutex.writeAccess(Mutex.java:433)
	at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator$1.run(JavacardProjectGenerator.java:72)
	at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:120)
	at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:509)
	at org.netbeans.modules.javacard.wizard.JavacardProjectGenerator.createProject(JavacardProjectGenerator.java:67)
	at org.netbeans.modules.javacard.wizard.ProjectWizardIterator.instantiate(ProjectWizardIterator.java:118)
	at org.openide.loaders.TemplateWizard$InstantiatingIteratorBridge.instantiate(TemplateWizard.java:1016)
	at org.openide.loaders.TemplateWizard.handleInstantiate(TemplateWizard.java:588)
	at org.openide.loaders.TemplateWizard.instantiateNewObjects(TemplateWizard.java:409)
	at org.openide.loaders.TemplateWizardIterImpl.instantiate(TemplateWizardIterImpl.java:253)
	at org.openide.loaders.TemplateWizardIteratorWrapper.instantiate(TemplateWizardIteratorWrapper.java:165)
	at org.openide.WizardDescriptor.callInstantiateOpen(WizardDescriptor.java:1513)
	at org.openide.WizardDescriptor.callInstantiate(WizardDescriptor.java:1470)
	at org.openide.WizardDescriptor.access$1700(WizardDescriptor.java:121)
	at org.openide.WizardDescriptor$Listener$2$1.run(WizardDescriptor.java:2041)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:573)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1005)
Comment 1 Jaroslav Tulach 2009-03-13 09:31:56 UTC

*** This issue has been marked as a duplicate of 160237 ***