Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 106111

Summary: IllegalStateException when disabling project-specific settings
Product: [Eclipse Project] JDT Reporter: Daniel R Somerfield <dsomerfi>
Component: APTAssignee: Walter Harley <eclipse>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: 3.1   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Workaround for bug 106111 none

Description Daniel R Somerfield CLA 2005-08-04 18:07:35 EDT
1. With APT globally disabled, open annotation processing preference.
2. Select "Configure project-specfic settings" and Enable project-specific
settings for your project.
3. Without changing anything (annotation processing should already be off) Ok
the change. An error occurs (see
https://bugs.eclipse.org/bugs/show_bug.cgi?id=106100).
4. Select "Configure project-specfic settings" and disable project-specific
settings for your project.
5. Hit OK

The following error occurs:
java.lang.IllegalStateException: Preference node "org.eclipse.jdt.apt.core" has
been removed.
	at
org.eclipse.core.internal.preferences.EclipsePreferences.checkRemoved(EclipsePreferences.java:145)
	at
org.eclipse.core.internal.preferences.EclipsePreferences.flush(EclipsePreferences.java:325)
	at
org.eclipse.core.internal.resources.ProjectPreferences.flush(ProjectPreferences.java:585)
	at
org.eclipse.ui.internal.preferences.WorkingCopyPreferences.flush(WorkingCopyPreferences.java:478)
	at
org.eclipse.ui.internal.preferences.WorkingCopyManager.applyChanges(WorkingCopyManager.java:64)
	at
org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:299)
	at
org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.okPressed(WorkbenchPreferenceDialog.java:153)
	at
org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:227)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:556)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3080)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2713)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:809)
	at org.eclipse.jface.window.Window.open(Window.java:787)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:66)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:996)
	at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:538)
	at
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
	at
org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3080)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2713)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
	at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
	at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
	at org.eclipse.core.launcher.Main.run(Main.java:973)
	at org.eclipse.core.launcher.Main.main(Main.java:948)




java.lang.IllegalStateException: Preference node "org.eclipse.jdt.apt.core" has
been removed.
	at
org.eclipse.core.internal.preferences.EclipsePreferences.checkRemoved(EclipsePreferences.java:145)
	at
org.eclipse.core.internal.preferences.EclipsePreferences.flush(EclipsePreferences.java:325)
	at
org.eclipse.core.internal.resources.ProjectPreferences.flush(ProjectPreferences.java:585)
	at
org.eclipse.ui.internal.preferences.WorkingCopyPreferences.flush(WorkingCopyPreferences.java:478)
	at
org.eclipse.ui.internal.preferences.WorkingCopyManager.applyChanges(WorkingCopyManager.java:64)
	at
org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:299)
	at
org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.okPressed(WorkbenchPreferenceDialog.java:153)
	at
org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:227)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:556)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3080)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2713)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:809)
	at org.eclipse.jface.window.Window.open(Window.java:787)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:66)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:996)
	at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:538)
	at
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
	at
org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3080)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2713)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
	at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
	at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
	at org.eclipse.core.launcher.Main.run(Main.java:973)
	at org.eclipse.core.launcher.Main.main(Main.java:948)
Comment 1 Walter Harley CLA 2005-08-12 16:57:56 EDT
I've not been able to repro this, with latest code, although I have sometimes 
(but not reliably) seen a ClassCastException happening in 
ReconcileWorkingCopyOperation.notifyCompilationParticipants() when I enable and 
disable annotation processing.
Comment 2 Walter Harley CLA 2005-09-27 18:09:25 EDT
Can repro at least some of the time.  Searching Bugzilla for "checkRemoved" 
yields a list of similar bugs throughout JDT.  Judging by Bug 68993, the answer 
may be a listener on the parent node; I will investigate.
Comment 3 Walter Harley CLA 2005-09-29 17:46:33 EDT
This is due to Bug 111144.  Not resolving it yet, because we may need to find a 
workaround sooner than that bug can be fixed.
Comment 4 Walter Harley CLA 2005-09-29 20:01:05 EDT
Created attachment 27709 [details]
Workaround for bug 106111

This patch is a workaround, that implements (and calls) a renamed, fixed
version of hasProjectSpecificOptions() in the derived class.
Comment 5 Walter Harley CLA 2005-09-30 18:45:49 EDT
Patch committed.