Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 337658 - java.lang.reflect.InvocationTargetException thrown when invoking Open from Clipboard
Summary: java.lang.reflect.InvocationTargetException thrown when invoking Open from Cl...
Status: RESOLVED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Debug (show other bugs)
Version: 3.7   Edit
Hardware: PC Windows XP
: P2 normal (vote)
Target Milestone: 3.7 M7   Edit
Assignee: Deepak Azad CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-20 02:16 EST by Ankur Sharma CLA
Modified: 2011-04-12 04:49 EDT (History)
2 users (show)

See Also:
daniel_megert: review+


Attachments
fix (6.29 KB, patch)
2011-04-11 09:46 EDT, Deepak Azad CLA
daniel_megert: review-
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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
.