Bug 94435 - PRE_CLOSE listener attempting to modify tree.
Summary: PRE_CLOSE listener attempting to modify tree.
Status: RESOLVED DUPLICATE of bug 85846
Alias: None
Product: PDE
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows 2000
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: PDE-UI-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-05-10 13:23 EDT by John Arthorne CLA
Modified: 2006-04-28 01:07 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Arthorne CLA 2005-05-10 13:23:40 EDT
Build: I20050509-2010

IResourceRuleFactory#modifyRule returns the argument by default when modifying a
project.  This is not correct for project close. Since closing a project calls
arbitrary resource change listeners, it rule must be the workspace root.  Either
we need to add a new rule for closing resources, or change the default modify
rule for projects to be the parent.  Here is an error that occurs in this build
as a result of this invalid rule:

java.lang.IllegalArgumentException: Attempted to beginRule: R/, does not match
outer scope rule:
MultiRule[P/org.eclipse.core.boot,P/org.eclipse.core.commands,P/org.eclipse.core.filebuffers,P/org.eclipse.core.resources,P/org.eclipse.core.resources.compatibility,P/org.eclipse.core.resources.hpux,P/org.eclipse.core.resources.linux,P/org.eclipse.core.resources.macosx,P/org.eclipse.core.resources.qnx,P/org.eclipse.core.resources.spysupport,P/org.eclipse.core.resources.win32,P/org.eclipse.core.runtime,P/org.eclipse.core.runtime.compatibility,P/org.eclipse.core.tests.harness,P/org.eclipse.core.tests.resources,P/org.eclipse.core.tests.runtime,P/org.eclipse.core.tools,P/org.eclipse.core.tools.benchmark,P/org.eclipse.core.tools.resources,P/org.eclipse.jface,P/org.eclipse.jface.text,P/org.eclipse.osgi,P/org.eclipse.osgi.services,P/org.eclipse.osgi.tests,P/org.eclipse.osgi.tests.framework,P/org.eclipse.osgi.util,P/org.eclipse.pde.build,P/org.eclipse.pde.core,P/org.eclipse.pde.ui,P/org.eclipse.platform,P/org.eclipse.platform.doc.isv,P/org.eclipse.platform.doc.user,P/org.eclipse.platform-feature,P/org.eclipse.releng,P/org.eclipse.sdk,P/org.eclipse.sdk.win32,P/org.eclipse.swt,P/org.eclipse.swt.win32.win32.x86,P/org.eclipse.test,P/org.eclipse.test.performance,P/org.eclipse.test.performance.win32,P/org.eclipse.text,P/org.eclipse.ui,P/org.eclipse.ui.browser,P/org.eclipse.ui.console,P/org.eclipse.ui.editors,P/org.eclipse.ui.examples.job,P/org.eclipse.ui.ide,P/org.eclipse.ui.tests,P/org.eclipse.ui.tests.rcp,P/org.eclipse.ui.views,P/org.eclipse.ui.workbench,P/org.eclipse.ui.workbench.texteditor,P/org.eclipse.update.configurator,P/org.junit,P/perf.eclipse.org,P/platform-core-home,P/test,P/zzJohn]
	at org.eclipse.core.internal.runtime.Assert.isLegal(Assert.java:58)
	at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:117)
	at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:211)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:81)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:190)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:96)
	at
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1671)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1711)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:782)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:2836)
	at org.eclipse.jdt.core.JavaCore$3.run(JavaCore.java:3871)
	at
org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1716)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3680)
	at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:3854)
	at
org.eclipse.pde.internal.core.SearchablePluginsManager.updateClasspathContainer(SearchablePluginsManager.java:175)
	at
org.eclipse.pde.internal.core.SearchablePluginsManager.updateClasspathContainer(SearchablePluginsManager.java:160)
	at
org.eclipse.pde.internal.core.PluginModelManager.handleModelsChanged(PluginModelManager.java:271)
	at
org.eclipse.pde.internal.core.PluginModelManager.access$0(PluginModelManager.java:188)
	at
org.eclipse.pde.internal.core.PluginModelManager$1.modelsChanged(PluginModelManager.java:37)
	at
org.eclipse.pde.internal.core.WorkspaceModelManager.fireModelProviderEvent(WorkspaceModelManager.java:717)
	at
org.eclipse.pde.internal.core.WorkspaceModelManager.processModelChanges(WorkspaceModelManager.java:711)
	at
org.eclipse.pde.internal.core.WorkspaceModelManager.resourceChanged(WorkspaceModelManager.java:428)
	at
org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:276)
	at
org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1029)
	at org.eclipse.core.runtime.Platform.run(Platform.java:775)
	at
org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:270)
	at
org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:242)
	at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:195)
	at org.eclipse.core.internal.resources.Project.close(Project.java:171)
	at
org.eclipse.ui.actions.CloseResourceAction.invokeOperation(CloseResourceAction.java:169)
	at org.eclipse.ui.actions.WorkspaceAction.execute(WorkspaceAction.java:133)
	at
org.eclipse.ui.actions.WorkspaceAction$2.runInWorkspace(WorkspaceAction.java:414)
	at
org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:67)
Comment 1 John Arthorne CLA 2005-05-10 13:24:06 EDT
Should consider for M7.
Comment 2 John Arthorne CLA 2005-05-11 11:49:06 EDT
After further inspection, this is actually a bug in PDE or JDT.  It is trying to
perform an IWorkspace.run from within a PRE_CLOSE resource change listener.  The
workspace is closed for modification during change events so this is not
allowed.  I have entered bug 94764 against platform resources to fix the error
reporting in this case to accurately describe the problem.
Comment 3 Wassim Melhem CLA 2006-04-28 01:07:05 EDT

*** This bug has been marked as a duplicate of 85846 ***