remove hasActuator checks before searching for live hovers

This commit is contained in:
Martin Lippert
2019-02-08 13:53:29 +01:00
parent c9b189bfae
commit dad40ae81e
2 changed files with 7 additions and 37 deletions

View File

@@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableMap;
import com.sun.tools.attach.VirtualMachine;
import com.sun.tools.attach.VirtualMachineDescriptor;
@SuppressWarnings("restriction")
public class LocalSpringBootAppCache {
private static final Duration EXPIRE_AFTER = Duration.ofMillis(500); //Limits rate at which we refresh list of apps

View File

@@ -10,11 +10,9 @@
*******************************************************************************/
package org.springframework.ide.vscode.boot.java.handlers;
import java.io.File;
import java.net.URI;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Optional;
import org.eclipse.jdt.core.dom.ASTNode;
@@ -44,7 +42,6 @@ import org.springframework.ide.vscode.commons.java.IClasspath;
import org.springframework.ide.vscode.commons.java.IClasspathUtil;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.ls.Classpath;
import org.springframework.ide.vscode.commons.languageserver.util.HoverHandler;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService;
import org.springframework.ide.vscode.commons.util.text.DocumentRegion;
@@ -103,35 +100,6 @@ public class BootJavaHoverProvider implements HoverHandler {
if (runningBootApps.length == 0) return new CodeLens[0];
if (project == null) return new CodeLens[0];
if (!hasActuatorDependency(project)) {
// double check the running apps in case there is a non-boot app running with live beans enabled
boolean nonBootLiveBeansAround = false;
boolean onAppsClasspath = false;
for (SpringBootApp bootApp : runningBootApps) {
if (bootApp.providesNonBootLiveBeans()) {
nonBootLiveBeansAround = true;
break;
} else {
try {
List<File> binaryRoots = IClasspathUtil.getBinaryRoots(project.getClasspath(), Classpath::isSource);
for (String path : bootApp.getClasspath()) {
File file = new File(path);
if (binaryRoots.contains(file)) {
onAppsClasspath = true;
break;
}
}
} catch (Exception e) {
logger.error("", e);
}
}
}
if (!nonBootLiveBeansAround && !onAppsClasspath) {
return new CodeLens[0];
}
}
return server.getCompilationUnitCache().withCompilationUnit(project, URI.create(document.getUri()), cu -> {
Collection<CodeLens> result = new LinkedHashSet<>();
try {
@@ -318,18 +286,19 @@ public class BootJavaHoverProvider implements HoverHandler {
for (HoverProvider provider : this.hoverProviders.get(type)) {
Hover hover = provider.provideHover(exactNode, annotation, type, offset, doc, project, runningApps);
if (hover!=null) {
if (hover != null) {
logger.debug("Hover found: "+hover);
//TODO: compose multiple hovers somehow instead of just returning the first one?
return hover;
}
logger.debug("NO Hover!");
}
//Only reaching here if we didn't get a hover.
if (!hasActuatorDependency(project)) {
DocumentRegion region = ASTUtils.nameRegion(doc, annotation);
if (region.containsOffset(offset)) {
return actuatorWarning(project);
return liveHoverWarning(project);
}
}
}
@@ -353,12 +322,12 @@ public class BootJavaHoverProvider implements HoverHandler {
return null;
}
private Hover actuatorWarning(IJavaProject project) {
private Hover liveHoverWarning(IJavaProject project) {
String hoverText =
"**No live hover information available**.\n"+
"\n" +
"Live hover providers use various `spring-boot-actuator` endpoints to retrieve information. "+
"Consider adding `spring-boot-actuator` as a dependency to your project `"+project.getElementName()+"`";
"Live hover providers use either `spring-boot-actuator` endpoints to retrieve information or the Spring live beans option. "+
"Consider adding `spring-boot-actuator` as a dependency to your project `"+project.getElementName()+"` or enable the live beans option in your launch configuration.";
return new Hover(ImmutableList.of(Either.forLeft(hoverText)));
}