Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 341635 - Bundle Editor version value should handle invalid version format
Summary: Bundle Editor version value should handle invalid version format
Status: VERIFIED FIXED
Alias: None
Product: PDE
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.7   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 3.7 M7   Edit
Assignee: Curtis Windatt CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-04-01 10:30 EDT by Olivier Thomann CLA
Modified: 2011-04-26 12:48 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Thomann CLA 2011-04-01 10:30:16 EDT
Using eclipse.buildId=I20110331-2200
java.version=1.6.0_24
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=fr_CA
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -console,

By mistake, I typed: "1." for the mininum version for the host version of a fragment bundle and I got:
java.lang.IllegalArgumentException: invalid format: 1.
at org.osgi.framework.Version.<init>(Version.java:150)
at org.osgi.framework.Version.parseVersion(Version.java:225)
at org.eclipse.osgi.service.resolver.VersionRange.<init>(VersionRange.java:87)
at org.eclipse.pde.internal.core.bundle.BundleFragment.getPluginVersion(BundleFragment.java:39)
at org.eclipse.pde.internal.core.bundle.BundleFragment.setPluginVersion(BundleFragment.java:80)
at org.eclipse.pde.internal.ui.editor.plugin.FragmentGeneralInfoSection$3.textValueChanged(FragmentGeneralInfoSection.java:166)
at org.eclipse.pde.internal.ui.parts.FormEntry.commit(FormEntry.java:224)
at org.eclipse.pde.internal.ui.parts.FormEntry$4.focusLost(FormEntry.java:207)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:143)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:2809)
at org.eclipse.swt.widgets.Widget.wmKillFocus(Widget.java:1921)
at org.eclipse.swt.widgets.Control.WM_KILLFOCUS(Control.java:4883)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4545)
at org.eclipse.swt.widgets.Text.windowProc(Text.java:2243)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4980)
at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2419)
at org.eclipse.swt.widgets.Text.callWindowProc(Text.java:255)
at org.eclipse.swt.widgets.Widget.wmLButtonDown(Widget.java:1993)
at org.eclipse.swt.widgets.Control.WM_LBUTTONDOWN(Control.java:4891)
at org.eclipse.swt.widgets.Text.WM_LBUTTONDOWN(Text.java:2468)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4547)
at org.eclipse.swt.widgets.Text.windowProc(Text.java:2243)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4980)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2525)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3747)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:852)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:768)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:87)
at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:540)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:522)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
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:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Caused by: java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
at org.osgi.framework.Version.<init>(Version.java:131)
... 52 more

After that the form cannot be saved properly because of a NoSuchElementException.

java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
at org.osgi.framework.Version.<init>(Version.java:131)
at org.osgi.framework.Version.parseVersion(Version.java:225)
at org.eclipse.osgi.service.resolver.VersionRange.<init>(VersionRange.java:87)
at org.eclipse.pde.internal.core.bundle.BundleFragment.getPluginVersion(BundleFragment.java:39)
at org.eclipse.pde.internal.core.bundle.BundleFragment.setPluginVersion(BundleFragment.java:80)
at org.eclipse.pde.internal.ui.editor.plugin.FragmentGeneralInfoSection$3.textValueChanged(FragmentGeneralInfoSection.java:166)
at org.eclipse.pde.internal.ui.parts.FormEntry.commit(FormEntry.java:224)
at org.eclipse.pde.internal.ui.editor.plugin.FragmentGeneralInfoSection.commit(FragmentGeneralInfoSection.java:291)
at org.eclipse.ui.forms.ManagedForm.commit(ManagedForm.java:223)
at org.eclipse.ui.forms.editor.FormEditor.commitPages(FormEditor.java:295)
at org.eclipse.pde.internal.ui.editor.PDEFormEditor.doSave(PDEFormEditor.java:349)
at org.eclipse.ui.internal.SaveableHelper$2.run(SaveableHelper.java:151)
at org.eclipse.ui.internal.SaveableHelper$5.run(SaveableHelper.java:274)
at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
at org.eclipse.ui.internal.WorkbenchWindow$8.run(WorkbenchWindow.java:1613)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1610)
at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:282)
at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:261)
at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:156)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.doSave(CompatibilityPart.java:294)
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.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:226)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:232)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:196)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:86)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.savePart(PartServiceImpl.java:1047)
at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:2993)
at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3011)
at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:76)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:121)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:58)
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.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:226)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:207)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:123)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:122)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:266)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:465)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:515)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:348)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:294)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:76)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104)
at org.eclipse.swt.widgets.Text.sendKeyEvent(Text.java:1453)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1100)
at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1509)
at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4623)
at org.eclipse.swt.widgets.Text.WM_CHAR(Text.java:2248)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4511)
at org.eclipse.swt.widgets.Text.windowProc(Text.java:2243)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4967)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2525)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3747)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:852)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:768)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:87)
at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:540)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:522)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
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:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 1 Olivier Thomann CLA 2011-04-01 10:32:05 EDT
To get it, you need the maximum version range to be empty. If there is a maximum version range, the error is properly reported.
Comment 2 Curtis Windatt CLA 2011-04-01 16:19:08 EDT
Fixed in HEAD. Thanks!
Comment 3 Curtis Windatt CLA 2011-04-01 16:24:35 EDT
This is not the bug I am looking for...
Comment 4 Curtis Windatt CLA 2011-04-01 16:38:14 EDT
Fixed in HEAD.  See BundleFragment.java.  We just need to catch an illegal argument exception when creating a version range to try to clean up the provided version.

In most places where we work with version ranges, we catch number format exceptions.  The OSGi class does not specify when it will return which exception, so there may be other places in PDE that this could cause a problem.  Every where I tried messing with things though, it seemed to handle it ok.
Comment 5 Ankur Sharma CLA 2011-04-26 12:48:53 EDT
Verified in I20110424-2000