Project: JDT
Bug 49242 NPE when canceling a reference search for a Java Type in the workspace [search]
Reported: 2003-12-20 19:08:26 | Status: resolved fixed

When performing a reference search for an ambiguous Type (such as "List") using the context menu of the java editor and you cancel the dialog box, a NullPointerException is thrown. This happens on both M5 and M6. Steps to replicate: 1. Create a new class file 2. Type in "List" 3. Right click on List 4. Select References->Workspace 5. A dialog box should pop up asking you to qualify the type 6. Press Cancel 7. Dialog will pop up indicating an error has occured and to check the log It looks like the problem is that SelectionConverter.codeResolve will return null if cancel is selected. ActionUtil.isProcessable does not check that the object being checked is null, so the operation continues instead of cancelling. I added a null check in the run method in FindAction#run(ITextSelection) and it seemed to fix the problem. here is the stacktrace, if it helps: java.lang.reflect.InvocationTargetException at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:283) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run (ProgressMonitorDialog.java:394) at org.eclipse.jdt.ui.actions.FindAction.run(FindAction.java:293) at org.eclipse.jdt.ui.actions.FindReferencesAction.run (FindReferencesAction.java:84) at org.eclipse.jdt.ui.actions.FindAction.run(FindAction.java:239) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun (SelectionDispatchAction.java:216) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run (SelectionDispatchAction.java:188) at org.eclipse.jface.action.Action.runWithEvent(Action.java:842) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection (ActionContributionItem.java:509) at org.eclipse.jface.action.ActionContributionItem.access$2 (ActionContributionItem.java:461) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent (ActionContributionItem.java:408) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2311) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1992) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1506) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1482) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench (Workbench.java:246) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139) at org.eclipse.ui.internal.ide.IDEApplication.run (IDEApplication.java:47) at org.eclipse.core.internal.runtime.PlatformActivator$1.run (PlatformActivator.java:226) at org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.core.launcher.Main.basicRun(Main.java:279) at org.eclipse.core.launcher.Main.run(Main.java:742) at org.eclipse.core.launcher.Main.main(Main.java:581) Caused by: java.lang.NullPointerException at org.eclipse.jdt.core.search.SearchEngine.createSearchPattern (SearchEngine.java:381) at org.eclipse.jdt.internal.ui.search.JavaSearchOperation.execute (JavaSearchOperation.java:99) at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run (WorkspaceModifyOperation.java:91) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1555) at org.eclipse.ui.actions.WorkspaceModifyOperation.run (WorkspaceModifyOperation.java:105) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run (ModalContext.java:101)

Files changed in fix:
org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/FindAction.java