Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 220473 - [WorkingSets] unable to recover from corrupt workingsets.xml file
Summary: [WorkingSets] unable to recover from corrupt workingsets.xml file
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.4   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: 3.4 M6   Edit
Assignee: Kim Horne CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-26 16:55 EST by Steffen Pingel CLA
Modified: 2008-03-25 13:25 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Steffen Pingel CLA 2008-02-26 16:55:31 EST
After upgrading to the Mylyn Europa build my working sets weren't restored. I found these exceptions in the log:

java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at org.eclipse.ui.internal.ide.model.ResourceFactory.createElement(ResourceFactory.java:76)
at org.eclipse.ui.internal.WorkingSet.restoreWorkingSet(WorkingSet.java:163)
at org.eclipse.ui.internal.AbstractWorkingSet.getElementsArray(AbstractWorkingSet.java:151)
at org.eclipse.ui.internal.AbstractWorkingSet.getElements(AbstractWorkingSet.java:139)
at org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater.checkElementExistence(TaskWorkingSetUpdater.java:103)
at org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater.add(TaskWorkingSetUpdater.java:95)
at org.eclipse.ui.internal.AbstractWorkingSetManager.bundleChanged(AbstractWorkingSetManager.java:629)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1210)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:195)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:297)


java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at org.eclipse.ui.internal.ide.model.ResourceFactory.createElement(ResourceFactory.java:76)
at org.eclipse.ui.internal.WorkingSet.restoreWorkingSet(WorkingSet.java:163)
at org.eclipse.ui.internal.AbstractWorkingSet.getElementsArray(AbstractWorkingSet.java:151)
at org.eclipse.ui.internal.AbstractWorkingSet.getElements(AbstractWorkingSet.java:139)
at org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater.checkElementExistence(TaskWorkingSetUpdater.java:103)
at org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater.add(TaskWorkingSetUpdater.java:95)
at org.eclipse.ui.internal.AbstractWorkingSetManager.bundleChanged(AbstractWorkingSetManager.java:629)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1210)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:195)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:297)
Comment 1 Steffen Pingel CLA 2008-02-26 16:56:32 EST
If I try to open the edit dialog I get this exception:

java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at org.eclipse.ui.internal.ide.model.ResourceFactory.createElement(ResourceFactory.java:76)
at org.eclipse.ui.internal.WorkingSet.restoreWorkingSet(WorkingSet.java:163)
at org.eclipse.ui.internal.AbstractWorkingSet.getElementsArray(AbstractWorkingSet.java:151)
at org.eclipse.ui.internal.WorkingSet.hashCode(WorkingSet.java:131)
at org.eclipse.jface.viewers.CustomHashtable.hashCode(CustomHashtable.java:264)
at org.eclipse.jface.viewers.CustomHashtable.getEntry(CustomHashtable.java:248)
at org.eclipse.jface.viewers.CustomHashtable.containsKey(CustomHashtable.java:210)
at org.eclipse.jface.viewers.CheckboxTableViewer.preservingSelection(CheckboxTableViewer.java:302)
at org.eclipse.jface.viewers.AbstractTableViewer.inputChanged(AbstractTableViewer.java:574)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:251)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1606)
at org.eclipse.mylyn.internal.tasks.ui.actions.TaskWorkingSetAction$ConfigureWindowWorkingSetsDialog.createDialogArea(TaskWorkingSetAction.java:273)
at org.eclipse.jface.dialogs.Dialog.createContents(Dialog.java:752)
at org.eclipse.jface.window.Window.create(Window.java:426)
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1081)
at org.eclipse.jface.window.Window.open(Window.java:785)
at org.eclipse.mylyn.internal.tasks.ui.dialogs.AbstractWorkingSetDialogCOPY.open(AbstractWorkingSetDialogCOPY.java:318)
at org.eclipse.mylyn.internal.tasks.ui.actions.TaskWorkingSetAction.run(TaskWorkingSetAction.java:146)
at org.eclipse.mylyn.internal.tasks.ui.actions.TaskWorkingSetAction.run(TaskWorkingSetAction.java:150)
at org.eclipse.mylyn.internal.tasks.ui.actions.TaskWorkingSetAction$ManageWorkingSetsAction.run(TaskWorkingSetAction.java:179)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1101)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3319)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2971)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
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:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
Comment 2 Steffen Pingel CLA 2008-02-26 22:33:28 EST
Moving to platform since the exceptions are triggered in ResourceFactory. 

The only way to recover from the error was to manually edit the workspace/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml file and fix the tag that had an empty type string, i.e.:

<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/org.eclipse.mylar.resources" type=""/>
Comment 3 Kim Horne CLA 2008-02-28 15:38:00 EST
Fix in HEAD along with some test cases.  I also prevented the same style of error happening during saveState().
Comment 4 Mik Kersten CLA 2008-02-28 19:55:17 EST
Great, thanks!
Comment 5 Kim Horne CLA 2008-03-25 13:25:36 EDT
Verified in I20080325-0100