Community
Participate
Working Groups
Build M5 I tried to open a Manifest Editor on a plugin.xml file which (apparently) has an invalid version number. I got an error dialog with the attach stack trace, and a prompt to exit the workspace. An invalid version number should handled in a more elegant fashion. I'm pretty sure that this was handled gracefully in the 20020321 build. org.eclipse.core.internal.runtime.AssertionFailedException: assertion failed: The minor (2nd) component of plugin version identifier, 1.0 001 (20010423_0619), must be numeric. at org.eclipse.core.internal.runtime.Assert.isTrue(Assert.java (Compiled Code)) at org.eclipse.core.runtime.PluginVersionIdentifier.<init> (PluginVersionIdentifier.java(Compiled Code)) at org.eclipse.pde.internal.core.PDECore.compare(PDECore.java:125) at org.eclipse.pde.internal.core.plugin.AbstractPluginModelBase.addMatchingFragmen ts(AbstractPluginModelBase.java:102) at org.eclipse.pde.internal.core.plugin.AbstractPluginModelBase.getFragmentLocatio ns(AbstractPluginModelBase.java:77) at org.eclipse.pde.internal.core.plugin.AbstractPluginModelBase.getNLLookupLocatio ns(AbstractPluginModelBase.java:58) at org.eclipse.pde.internal.core.plugin.WorkspacePluginModelBase.createNLResourceH elper(WorkspacePluginModelBase.java:31) at org.eclipse.pde.internal.core.AbstractModel.getResourceString (AbstractModel.java:56) at org.eclipse.pde.internal.ui.editor.manifest.ManifestEditor.getTitle (ManifestEditor.java:201) at org.eclipse.ui.internal.EditorWorkbook.updateEditorTab (EditorWorkbook.java:806) at org.eclipse.ui.internal.EditorWorkbook.createTab (EditorWorkbook.java:250) at org.eclipse.ui.internal.EditorWorkbook.createTab (EditorWorkbook.java:240) at org.eclipse.ui.internal.EditorWorkbook.createPage (EditorWorkbook.java:222) at org.eclipse.ui.internal.EditorWorkbook.add(EditorWorkbook.java:83) at org.eclipse.ui.internal.EditorArea.addEditor(EditorArea.java:43) at org.eclipse.ui.internal.EditorPresentation.openEditor (EditorPresentation.java:307) at org.eclipse.ui.internal.EditorManager$2.run(EditorManager.java:468) at org.eclipse.swt.custom.BusyIndicator.showWhile (BusyIndicator.java:56) at org.eclipse.ui.internal.EditorManager.openInternalEditor (EditorManager.java:460) at org.eclipse.ui.internal.EditorManager.openInternalEditor (EditorManager.java:529) at org.eclipse.ui.internal.EditorManager.openEditor (EditorManager.java:361) at org.eclipse.ui.internal.EditorManager.openEditor (EditorManager.java:274) at org.eclipse.ui.internal.WorkbenchPage.openEditor (WorkbenchPage.java:1561) at org.eclipse.ui.internal.WorkbenchPage.openEditor (WorkbenchPage.java:1468) at org.eclipse.ui.actions.OpenFileAction.openFile (OpenFileAction.java:91) at org.eclipse.ui.actions.OpenSystemEditorAction.run (OpenSystemEditorAction.java:91) at org.eclipse.ui.views.navigator.OpenActionGroup.runDefaultAction (OpenActionGroup.java:102) at org.eclipse.ui.views.navigator.ResourceNavigatorActionGroup.runDefaultAction (ResourceNavigatorActionGroup.java:152) at org.eclipse.ui.views.navigator.ResourceNavigator.handleOpen (ResourceNavigator.java:438) at org.eclipse.ui.views.navigator.ResourceNavigator$6.open (ResourceNavigator.java:244) at org.eclipse.jface.viewers.StructuredViewer.fireOpen (StructuredViewer.java:300) at org.eclipse.jface.viewers.StructuredViewer.handleOpen (StructuredViewer.java:460) at org.eclipse.jface.viewers.AbstractTreeViewer$2.handleOpen (AbstractTreeViewer.java:633) at org.eclipse.jface.util.OpenStrategy.handleOpen (OpenStrategy.java:134) at org.eclipse.jface.util.OpenStrategy$8.handleEvent(OpenStrategy.java (Compiled Code)) at org.eclipse.jface.util.OpenStrategy$8.handleEvent(OpenStrategy.java (Compiled Code)) at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java (Compiled Code)) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java (Compiled Code)) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java(Compiled Code)) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java (Compiled Code)) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java (Compiled Code)) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java (Compiled Code)) at org.eclipse.ui.internal.Workbench.run(Workbench.java:819) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:777) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:319) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.launcher.Main.basicRun(Main.java:190) at org.eclipse.core.launcher.Main.run(Main.java:549) at org.eclipse.core.launcher.Main.main(Main.java:390)
Good catch. Throughout PDE, I am catching RuntimeException from PluginVersionIdentifier constructor except in PDECore.compare method. Fixed by performing major.minor.service version comparison if valid version, and direct string comparison if RuntimeException is thrown.