eclipse-wildwebdeveloper / eclipse-wildwebdeveloper/wildwebdeveloper

Clicking XML CodeLens link results in Unhandled event loop exception

未关闭
#644 5 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

主要语言
Java
星标
201
派生
76
平均合并
4 天 7 小时
30 天内合并 PR
21

描述

In the eclipseide-wild-web-developer-0.11.5-win32.win32.x86_64.zip I get an Unhandled event loop exception when clicking on a <n> reference(s) XML CodeLens link.

Steps to reproduce using the following sample.dtd file:

<!ELEMENT sample (foo, bar)>
<!ELEMENT foo (bar*)>
<!ELEMENT bar (#PCDATA)>
  1. In Window > Preferences: XML (Wild Web Developer) > CodeLens tick the Enable XML CodeLens checkbox (see #636)
  2. Open sample.dtd file (see above)
  3. Klick on the 1 reference (above line 2) or 2 references (above line 3) XML CodeLens link

Result:

  • Expected: Any kind of navigation to the clicked reference(s)
  • Actual: No navigation; instead, the following Unhandled event loop exception will be logged:
eclipse.buildId=4.18.0.I20201202-1800
java.version=15.0.2
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product org.eclipse.wildwebdeveloper.product.branding.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.wildwebdeveloper.product.branding.product

org.eclipse.ui
Error
Sun Feb 28 22:18:43 CET 2021
Unhandled event loop exception

java.lang.IllegalArgumentException: The handle object must not have a zero-length identifier
	at org.eclipse.core.commands.common.HandleObjectManager.checkId(HandleObjectManager.java:65)
	at org.eclipse.core.commands.CommandManager.getCommand(CommandManager.java:522)
	at org.eclipse.ui.internal.commands.CommandService.getCommand(CommandService.java:159)
	at org.eclipse.lsp4e.command.CommandExecutor.createEclipseCoreCommand(CommandExecutor.java:212)
	at org.eclipse.lsp4e.command.CommandExecutor.executeCommandClientSide(CommandExecutor.java:185)
	at org.eclipse.lsp4e.command.CommandExecutor.executeCommand(CommandExecutor.java:107)
	at org.eclipse.lsp4e.operations.codelens.LSPCodeMining.performAction(LSPCodeMining.java:79)
	at org.eclipse.jface.text.source.inlined.InlinedAnnotationSupport$MouseTracker.mouseUp(InlinedAnnotationSupport.java:318)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:224)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1037)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4026)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3626)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1461)

By the way, why it is called CodeLens which is a trademark owned by Microsoft and not Code Minings in Eclipse (see also Eclipse bug 526969 comment 15)?

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

启用 XML CodeLens 后按照 sample.dtd 中的步骤复现,然后根据堆栈跟踪通过 LSPCodeMining.performAction 和 CommandExecutor.executeCommandClientSide/createEclipseCoreCommand 跟踪点击操作。完成的标准是:点击引用链接不再引发零长度标识符异常,并提供预期的导航行为。

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
desktop, devtools
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。