code cleanup

This commit is contained in:
Martin Lippert
2017-10-30 08:49:27 +01:00
parent 6e71e28b10
commit 3c6fb89c9c
12 changed files with 38 additions and 65 deletions

View File

@@ -19,8 +19,8 @@ import org.eclipse.lsp4j.InitializeParams;
import org.eclipse.lsp4j.InitializeResult;
import org.springframework.ide.vscode.boot.java.autowired.AutowiredHoverProvider;
import org.springframework.ide.vscode.boot.java.beans.BeansSymbolProvider;
import org.springframework.ide.vscode.boot.java.beans.ComponentHoverProvider;
import org.springframework.ide.vscode.boot.java.beans.ComponentSymbolProvider;
import org.springframework.ide.vscode.boot.java.beans.ComponentInjectedIntoHoverProvider;
import org.springframework.ide.vscode.boot.java.conditionals.ConditionalsLiveHoverProvider;
import org.springframework.ide.vscode.boot.java.handlers.BootJavaCodeLensEngine;
import org.springframework.ide.vscode.boot.java.handlers.BootJavaCompletionEngine;
@@ -35,7 +35,6 @@ import org.springframework.ide.vscode.boot.java.handlers.ReferenceProvider;
import org.springframework.ide.vscode.boot.java.handlers.RunningAppProvider;
import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
import org.springframework.ide.vscode.boot.java.livehover.ActiveProfilesProvider;
import org.springframework.ide.vscode.boot.java.livehover.InjectedIntoProvider;
import org.springframework.ide.vscode.boot.java.requestmapping.LiveAppURLSymbolProvider;
import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingHoverProvider;
import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingSymbolProvider;
@@ -262,7 +261,7 @@ public class BootJavaLanguageServer extends SimpleLanguageServer {
providers.put(ActiveProfilesProvider.ANNOTATION, new ActiveProfilesProvider());
providers.put(org.springframework.ide.vscode.boot.java.autowired.Constants.SPRING_AUTOWIRED, new AutowiredHoverProvider());
providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_COMPONENT, new InjectedIntoProvider());
providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_COMPONENT, new ComponentInjectedIntoHoverProvider());
providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL, new ConditionalsLiveHoverProvider());
providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_BEAN, new ConditionalsLiveHoverProvider());

View File

@@ -8,7 +8,7 @@
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.vscode.boot.java.livehover;
package org.springframework.ide.vscode.boot.java.beans;
import java.util.Collection;
import java.util.List;
@@ -20,12 +20,12 @@ import java.util.stream.Stream;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.Annotation;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.Name;
import org.eclipse.jdt.core.dom.TypeDeclaration;
import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.springframework.ide.vscode.boot.java.handlers.HoverProvider;
import org.springframework.ide.vscode.boot.java.livehover.ASTUtils;
import org.springframework.ide.vscode.commons.boot.app.cli.SpringBootApp;
import org.springframework.ide.vscode.commons.boot.app.cli.livebean.LiveBean;
import org.springframework.ide.vscode.commons.boot.app.cli.livebean.LiveBeansModel;
@@ -35,15 +35,15 @@ import org.springframework.ide.vscode.commons.util.text.TextDocument;
import com.google.common.collect.ImmutableList;
public class InjectedIntoProvider implements HoverProvider {
public class ComponentInjectedIntoHoverProvider implements HoverProvider {
@Override
public Collection<Range> getLiveHoverHints(Annotation annotation, TextDocument doc, SpringBootApp[] runningApps) {
//Highlight if any running app contains an instance of this component
// Highlight if any running app contains an instance of this component
try {
if (runningApps.length > 0) {
LiveBean definedBean = getDefinedBean(annotation);
if (definedBean!=null) {
if (definedBean != null) {
if (Stream.of(runningApps).anyMatch(app -> hasRelevantBeans(app, definedBean))) {
Optional<Range> nameRange = ASTUtils.nameRange(doc, annotation);
if (nameRange.isPresent()) {
@@ -63,17 +63,13 @@ public class InjectedIntoProvider implements HoverProvider {
}
private Stream<LiveBean> findRelevantBeans(SpringBootApp app, LiveBean definedBean) {
return app.getBeans()
.getBeansOfName(definedBean.getId())
.stream()
.filter(bean ->
definedBean.getType().equals(bean.getType())
);
return app.getBeans().getBeansOfName(definedBean.getId()).stream()
.filter(bean -> definedBean.getType().equals(bean.getType()));
}
private LiveBean getDefinedBean(Annotation annotation) {
ITypeBinding beanType = getAnnotatedType(annotation);
if (beanType!=null) {
if (beanType != null) {
String id = getBeanId(annotation, beanType);
if (StringUtil.hasText(id)) {
return LiveBean.builder().id(id).type(beanType.getQualifiedName()).build();
@@ -85,13 +81,13 @@ public class InjectedIntoProvider implements HoverProvider {
@Override
public CompletableFuture<Hover> provideHover(ASTNode node, Annotation annotation, ITypeBinding type, int offset,
TextDocument doc, SpringBootApp[] runningApps) {
if (runningApps.length>0) {
if (runningApps.length > 0) {
LiveBean definedBean = getDefinedBean(annotation);
if (definedBean!=null) {
if (definedBean != null) {
StringBuilder hover = new StringBuilder();
hover.append("**Injection report for "+showBean(definedBean)+"**\n\n");
hover.append("**Injection report for " + showBean(definedBean) + "**\n\n");
boolean hasInterestingApp = false;
for (SpringBootApp app : runningApps) {
for (SpringBootApp app : runningApps) {
LiveBeansModel beans = app.getBeans();
List<LiveBean> relevantBeans = findRelevantBeans(app, definedBean).collect(Collectors.toList());
if (!relevantBeans.isEmpty()) {
@@ -100,12 +96,12 @@ public class InjectedIntoProvider implements HoverProvider {
} else {
hover.append("\n\n");
}
hover.append(niceAppName(app)+":");
hover.append(niceAppName(app) + ":");
for (LiveBean bean : relevantBeans) {
hover.append("\n\n");
List<LiveBean> dependers = beans.getBeansDependingOn(bean.getId());
if (dependers.isEmpty()) {
hover.append(showBean(bean)+" exists but is **Not injected anywhere**");
hover.append(showBean(bean) + " exists but is **Not injected anywhere**");
} else {
hover.append(showBean(definedBean) + " injected into:\n\n");
boolean firstDependency = true;
@@ -113,7 +109,7 @@ public class InjectedIntoProvider implements HoverProvider {
if (!firstDependency) {
hover.append("\n");
}
hover.append("- "+showBean(dependingBean));
hover.append("- " + showBean(dependingBean));
firstDependency = false;
}
}
@@ -122,9 +118,8 @@ public class InjectedIntoProvider implements HoverProvider {
}
if (hasInterestingApp) {
System.out.println(hover);
return CompletableFuture.completedFuture(new Hover(
ImmutableList.of(Either.forLeft(hover.toString()))
));
return CompletableFuture
.completedFuture(new Hover(ImmutableList.of(Either.forLeft(hover.toString()))));
}
}
}
@@ -138,13 +133,13 @@ public class InjectedIntoProvider implements HoverProvider {
}
String typeName = beanType.getName();
if (StringUtil.hasText(typeName)) {
return Character.toLowerCase(typeName.charAt(0))+typeName.substring(1);
return Character.toLowerCase(typeName.charAt(0)) + typeName.substring(1);
}
return null;
}
private String showBean(LiveBean bean) {
return "Bean [id: "+bean.getId()+", type: `"+bean.getType()+"`]";
return "Bean [id: " + bean.getId() + ", type: `" + bean.getType() + "`]";
}
private ITypeBinding getAnnotatedType(Annotation annotation) {
@@ -157,7 +152,7 @@ public class InjectedIntoProvider implements HoverProvider {
}
private String niceAppName(SpringBootApp app) {
return "Process [PID="+app.getProcessID()+", name=`"+app.getProcessName()+"`]";
return "Process [PID=" + app.getProcessID() + ", name=`" + app.getProcessName() + "`]";
}
}

View File

@@ -38,10 +38,7 @@ import org.springframework.ide.vscode.commons.util.text.TextDocument;
import com.google.common.collect.ImmutableList;
/**
* @author Martin Lippert
*/
public class ComponentHoverProvider implements HoverProvider {
public class ComponentInjectionsHoverProvider implements HoverProvider {
@Override
public CompletableFuture<Hover> provideHover(ASTNode node, Annotation annotation,
@@ -211,5 +208,4 @@ public class ComponentHoverProvider implements HoverProvider {
return null;
}
}

View File

@@ -27,11 +27,11 @@ import org.springframework.ide.vscode.commons.util.text.TextDocument;
public class BootJavaCodeLensEngine {
private final SimpleLanguageServer server;
private final JavaProjectFinder projectFinder;
// private final JavaProjectFinder projectFinder;
public BootJavaCodeLensEngine(SimpleLanguageServer server, JavaProjectFinder projectFinder) {
this.server = server;
this.projectFinder = projectFinder;
// this.projectFinder = projectFinder;
}
public CompletableFuture<List<? extends CodeLens>> createCodeLenses(CodeLensParams params) {

View File

@@ -21,8 +21,6 @@ import org.eclipse.lsp4j.Range;
import org.springframework.ide.vscode.commons.boot.app.cli.SpringBootApp;
import org.springframework.ide.vscode.commons.util.text.TextDocument;
import com.google.common.collect.ImmutableList;
/**
* @author Martin Lippert
*/

View File

@@ -26,8 +26,9 @@ public class ASTUtils {
try {
int start = annotation.getTypeName().getStartPosition();
int len = annotation.getTypeName().getLength();
if (doc.getSafeChar(start-1)=='@') {
start--; len++;
if (doc.getSafeChar(start - 1) == '@') {
start--;
len++;
}
return Optional.of(doc.toRange(start, len));
} catch (Exception e) {
@@ -48,5 +49,4 @@ public class ASTUtils {
return Optional.empty();
}
}

View File

@@ -8,7 +8,7 @@
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.vscode.boot.java.livehover.test;
package org.springframework.ide.vscode.boot.java.beans.test;
import static org.junit.Assert.assertTrue;
@@ -27,7 +27,7 @@ import org.springframework.ide.vscode.project.harness.ProjectsHarness;
import org.springframework.ide.vscode.project.harness.ProjectsHarness.CustomizableProjectContent;
import org.springframework.ide.vscode.project.harness.ProjectsHarness.ProjectCustomizer;
public class InjectedIntoProviderTest {
public class ComponentInjectedIntoHoverProviderTest {
private static final ProjectCustomizer FOO_INTERFACE = (CustomizableProjectContent p) -> {
p.createType("com.examle.Foo",
@@ -384,7 +384,7 @@ public class InjectedIntoProviderTest {
);
}
@Test public void hoHoversWhenRunningAppDoesntHaveTheComponent() throws Exception {
@Test public void noHoversWhenRunningAppDoesntHaveTheComponent() throws Exception {
LiveBeansModel beans = LiveBeansModel.builder()
.add(LiveBean.builder()
.id("whateverBean")
@@ -423,7 +423,7 @@ public class InjectedIntoProviderTest {
editor.assertNoHover("@Component");
}
@Test public void hoHoversWhenNoRunningApps() throws Exception {
@Test public void noHoversWhenNoRunningApps() throws Exception {
Editor editor = harness.newEditor(LanguageId.JAVA,
"package com.example;\n" +
"\n" +

View File

@@ -41,7 +41,7 @@ import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.junit.Before;
import org.junit.Test;
import org.springframework.ide.vscode.boot.java.autowired.SpringBootAppProvider;
import org.springframework.ide.vscode.boot.java.beans.ComponentHoverProvider;
import org.springframework.ide.vscode.boot.java.beans.ComponentInjectionsHoverProvider;
import org.springframework.ide.vscode.commons.boot.app.cli.livebean.LiveBeansModel;
import org.springframework.ide.vscode.commons.java.IClasspath;
import org.springframework.ide.vscode.commons.java.IJavaProject;
@@ -55,7 +55,7 @@ import org.springframework.ide.vscode.project.harness.ProjectsHarness;
/**
* @author Martin Lippert
*/
public class ComponentHoverProviderTest {
public class ComponentInjectionsHoverProviderTest {
private JavaProjectFinder projectFinder;
private BootLanguageServerHarness harness;
@@ -80,7 +80,7 @@ public class ComponentHoverProviderTest {
int offset = document.toOffset(new Position(4, 2));
ASTNode node = NodeFinder.perform(cu, offset, 0).getParent();
ComponentHoverProvider provider = new ComponentHoverProvider();
ComponentInjectionsHoverProvider provider = new ComponentInjectionsHoverProvider();
String beansJSON = new String(Files.readAllBytes(new File(directory, "runtime-bean-information-automatically-wired.json").toPath()));
Range hint = provider.getLiveHoverHint((Annotation)node, document, LiveBeansModel.parse(beansJSON));
@@ -106,7 +106,7 @@ public class ComponentHoverProviderTest {
int offset = document.toOffset(new Position(5, 2));
ASTNode node = NodeFinder.perform(cu, offset, 0).getParent();
ComponentHoverProvider provider = new ComponentHoverProvider();
ComponentInjectionsHoverProvider provider = new ComponentInjectionsHoverProvider();
String beansJSON = new String(Files.readAllBytes(new File(directory, "runtime-bean-information.json").toPath()));
Range hint = provider.getLiveHoverHint((Annotation)node, document, LiveBeansModel.parse(beansJSON));
@@ -127,7 +127,7 @@ public class ComponentHoverProviderTest {
int offset = document.toOffset(new Position(4, 2));
ASTNode node = NodeFinder.perform(cu, offset, 0).getParent();
ComponentHoverProvider provider = new ComponentHoverProvider();
ComponentInjectionsHoverProvider provider = new ComponentInjectionsHoverProvider();
LiveBeansModel beansModel = LiveBeansModel.parse(new String(Files.readAllBytes(new File(directory, "runtime-bean-information-automatically-wired.json").toPath())));
SpringBootAppProvider bootApp = new SpringBootAppProvider() {

View File

@@ -18,23 +18,18 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import org.eclipse.lsp4j.SymbolInformation;
import org.junit.Before;
import org.junit.Test;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer;
import org.springframework.ide.vscode.boot.java.beans.BeansSymbolProvider;
import org.springframework.ide.vscode.boot.java.beans.ComponentSymbolProvider;
import org.springframework.ide.vscode.boot.java.beans.Constants;
import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
import org.springframework.ide.vscode.boot.java.utils.SpringIndexer;
import org.springframework.ide.vscode.commons.languageserver.java.CompositeJavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness;
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
import org.springframework.ide.vscode.project.harness.PropertyIndexHarness;
/**
* @author Martin Lippert

View File

@@ -21,11 +21,8 @@ import org.apache.commons.io.IOUtils;
import org.eclipse.lsp4j.CompletionItem;
import org.junit.Before;
import org.junit.Test;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerParams;
import org.springframework.ide.vscode.boot.java.handlers.RunningAppProvider;
import org.springframework.ide.vscode.boot.java.value.ValueCompletionProcessor;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
import org.springframework.ide.vscode.languageserver.testharness.Editor;
import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness;

View File

@@ -13,13 +13,10 @@ package org.springframework.ide.vscode.project.harness;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeoutException;
import org.apache.commons.io.FileUtils;
import org.springframework.ide.vscode.commons.java.IJavaProject;
@@ -27,7 +24,7 @@ import org.springframework.ide.vscode.commons.maven.MavenBuilder;
import org.springframework.ide.vscode.commons.maven.MavenCore;
import org.springframework.ide.vscode.commons.maven.java.MavenJavaProject;
import org.springframework.ide.vscode.commons.maven.java.classpathfile.JavaProjectWithClasspathFile;
import org.springframework.ide.vscode.project.harness.ProjectsHarness.CustomizableProjectContent;
import org.springframework.ide.vscode.commons.util.IOUtil;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
@@ -36,8 +33,6 @@ import com.google.common.io.Files;
import reactor.util.function.Tuple3;
import reactor.util.function.Tuples;
import org.springframework.ide.vscode.commons.util.IOUtil;
/**
* Test projects harness
*

View File

@@ -19,13 +19,11 @@ import org.springframework.boot.configurationmetadata.ConfigurationMetadataPrope
import org.springframework.boot.configurationmetadata.Deprecation;
import org.springframework.boot.configurationmetadata.ValueHint;
import org.springframework.boot.configurationmetadata.ValueProvider;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerParams;
import org.springframework.ide.vscode.boot.metadata.SpringPropertyIndex;
import org.springframework.ide.vscode.boot.metadata.SpringPropertyIndexProvider;
import org.springframework.ide.vscode.commons.java.IClasspath;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.util.LSFactory;
import org.springframework.ide.vscode.commons.util.FuzzyMap;
import org.springframework.ide.vscode.commons.util.text.IDocument;