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

Bug 337658

Summary: java.lang.reflect.InvocationTargetException thrown when invoking Open from Clipboard
Product: [Eclipse Project] JDT Reporter: Ankur Sharma <ankur_sharma>
Component: DebugAssignee: Deepak Azad <deepakazad>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P2 CC: daniel_megert, markus.kell.r
Version: 3.7Flags: daniel_megert: review+
Target Milestone: 3.7 M7   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
fix daniel_megert: review-

Description Ankur Sharma CLA 2011-02-20 02:16:56 EST
I20110215-0800

1. Check out o.e.pde.ui
2. copy

 org.eclipse.pde.internal.ui.wizards.imports.RepositoryImportWizard.addPages())

3. invoke Open from Clipboard


a dialog would open telling it could not understand the clipboard contents. However, the error log would log this exception


Stack trace


eclipse.buildId=I20110215-0800
java.fullversion=JRE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260sr7-20091214_49398 (JIT enabled, AOT enabled)
J9VM - 20091214_049398
JIT  - r9_20091123_13891
GC   - 20091111_AA
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Command-line arguments:  -os win32 -ws win32 -arch x86


Error
Sun Feb 20 12:42:50 IST 2011
Internal Error

java.lang.reflect.InvocationTargetException
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
	at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:275)
	at org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:960)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:995)
	at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:970)
	at org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.executeRunnable(OpenFromClipboardAction.java:416)
	at org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.getMethodMatches(OpenFromClipboardAction.java:370)
	at org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.getJavaElementMatches(OpenFromClipboardAction.java:318)
	at org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.handleSingleLineInput(OpenFromClipboardAction.java:254)
	at org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.run(OpenFromClipboardAction.java:187)
	at org.eclipse.ui.internal.handlers.ActionDelegateHandlerProxy.execute(ActionDelegateHandlerProxy.java:289)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:824)
	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:810)
	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:800)
	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.Display.runDeferredEvents(Display.java:4126)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3715)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2700)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2664)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2498)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	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:48)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:600)
	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)
Caused by: java.lang.NullPointerException
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.findIndexMatches(MatchLocator.java:264)
	at org.eclipse.jdt.internal.core.search.PatternSearchJob.search(PatternSearchJob.java:96)
	at org.eclipse.jdt.internal.core.search.PatternSearchJob.execute(PatternSearchJob.java:63)
	at org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob(JobManager.java:277)
	at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:214)
	at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:515)
	at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:584)
	at org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.doMemberSearch(OpenFromClipboardAction.java:655)
	at org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.access$1(OpenFromClipboardAction.java:616)
	at org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction$2.run(OpenFromClipboardAction.java:372)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Comment 1 Markus Keller CLA 2011-02-20 08:47:37 EST
> org.eclipse.pde.internal.ui.wizards.imports.RepositoryImportWizard.addPages())

One ')' too much at the end makes SearchPattern#createPattern(..) return null.

>     at
> org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.doMemberSearch(OpenFromClipboardAction.java:655)
Comment 2 Deepak Azad CLA 2011-04-11 09:46:51 EDT
Created attachment 192929 [details]
fix

(In reply to comment #0)
> Caused by: java.lang.NullPointerException
>     at
> org.eclipse.jdt.internal.core.search.matching.MatchLocator.findIndexMatches(MatchLocator.java:264)
>     at
> org.eclipse.jdt.internal.core.search.PatternSearchJob.search(PatternSearchJob.java:96)
>     at
> org.eclipse.jdt.internal.core.search.PatternSearchJob.execute(PatternSearchJob.java:63)
>     at
> org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob(JobManager.java:277)
>     at
> org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:214)
>     at
> org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:515)
>     at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:584)
>     at
> org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.doMemberSearch(OpenFromClipboardAction.java:655)
>     at
> org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction.access$1(OpenFromClipboardAction.java:616)
>     at
> org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction$2.run(OpenFromClipboardAction.java:372)
>     at
> org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

If the search pattern is null, a search is not performed anymore which gets rid of the above NPE. This check is same as in  org.eclipse.jdt.internal.ui.search.JavaSearchPage.isValidSearchPattern().

The dialog will still come because there is an extra ')' but there will be no exception in the error log.

Dani, please commit the patch if you are ok with it.
Comment 3 Dani Megert CLA 2011-04-12 04:48:46 EDT
Comment on attachment 192929 [details]
fix

The patch goes into the right direction but has some issues:
- it changes the work units of one progress monitor
- 'doMemberSearch1' is not really a good name
- imports are mangled

Committed patch to HEAD with fixes for the above mentioned issued.
Comment 4 Dani Megert CLA 2011-04-12 04:49:33 EDT
.