From 8851937f794692e4e1d2c5947821cc9b11d3615f Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Tue, 18 Dec 2018 12:28:06 -0500 Subject: [PATCH] PT #162728126: Update code lenses for Java editor --- .../eclipse/commons/STS4LanguageClientImpl.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageClientImpl.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageClientImpl.java index 73d5773e7..40239b2bb 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageClientImpl.java +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageClientImpl.java @@ -11,6 +11,8 @@ package org.springframework.tooling.ls.eclipse.commons; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.net.URI; import java.util.List; import java.util.Map; @@ -21,6 +23,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer; import org.eclipse.jdt.internal.ui.viewsupport.JavaElementLinks; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.preference.IPreferenceStore; @@ -172,7 +175,18 @@ public class STS4LanguageClientImpl extends LanguageClientImpl implements STS4La updateAnnotations(docUri, sourceViewer, (IAnnotationModelExtension) annotationModel); } if (sourceViewer instanceof ISourceViewerExtension5) { - ((ISourceViewerExtension5) sourceViewer).updateCodeMinings(); + if (sourceViewer instanceof JavaSourceViewer) { + // JavaSourceViewer#updateCodeMinings() is overridden and doesn't do anything + try { + Method method = JavaSourceViewer.class.getDeclaredMethod("doUpdateCodeMinings"); + method.setAccessible(true); + method.invoke(sourceViewer); + } catch (InvocationTargetException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException e) { + LanguageServerCommonsActivator.logError(e, ""); + } + } else { + ((ISourceViewerExtension5) sourceViewer).updateCodeMinings(); + } } }