Streamlime and simplify JavaProjectFinder

Only a single method needs to be implemented now to define how
a project context is found for a given document location.
This commit is contained in:
Kris De Volder
2017-10-17 11:04:08 -07:00
parent 69491029b3
commit 71dabb8d6c
19 changed files with 56 additions and 41 deletions

View File

@@ -25,6 +25,7 @@ import org.eclipse.jdt.core.dom.Annotation;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.NodeFinder;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.springframework.ide.vscode.boot.java.snippets.JavaSnippetManager;
import org.springframework.ide.vscode.commons.java.IClasspath;
import org.springframework.ide.vscode.commons.java.IJavaProject;
@@ -108,7 +109,7 @@ public class BootJavaCompletionEngine implements ICompletionEngine {
}
private String[] getClasspathEntries(IDocument doc) throws Exception {
IJavaProject project = this.projectFinder.find(doc);
IJavaProject project = this.projectFinder.find(new TextDocumentIdentifier(doc.getUri()));
IClasspath classpath = project.getClasspath();
Stream<Path> classpathEntries = classpath.getClasspathEntries();
return classpathEntries

View File

@@ -31,6 +31,7 @@ import org.eclipse.jdt.core.dom.NormalAnnotation;
import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.eclipse.lsp4j.TextDocumentPositionParams;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer;
import org.springframework.ide.vscode.commons.boot.app.cli.SpringBootApp;
@@ -211,7 +212,7 @@ public class BootJavaHoverProvider implements HoverHandler {
}
private IJavaProject getProject(IDocument doc) throws Exception {
return this.projectFinder.find(doc);
return this.projectFinder.find(new TextDocumentIdentifier(doc.getUri()));
}
private String[] getClasspathEntries(IJavaProject project) throws Exception {

View File

@@ -26,6 +26,7 @@ import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.NodeFinder;
import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.ReferenceParams;
import org.eclipse.lsp4j.TextDocumentIdentifier;
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;
@@ -124,7 +125,7 @@ public class BootJavaReferencesHandler implements ReferencesHandler {
}
private String[] getClasspathEntries(IDocument doc) throws Exception {
IJavaProject project = this.projectFinder.find(doc);
IJavaProject project = this.projectFinder.find(new TextDocumentIdentifier(doc.getUri()));
IClasspath classpath = project.getClasspath();
Stream<Path> classpathEntries = classpath.getClasspathEntries();
return classpathEntries

View File

@@ -44,6 +44,7 @@ import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.SymbolInformation;
import org.eclipse.lsp4j.SymbolKind;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer;
import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
import org.springframework.ide.vscode.commons.java.IClasspath;
@@ -185,7 +186,7 @@ public class SpringIndexer {
try {
initializeTask.get();
IJavaProject project = projectFinder.find(new File(new URI(docURI)));
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(docURI));
if (project != null) {
String[] classpathEntries = getClasspathEntries(project);
@@ -268,7 +269,7 @@ public class SpringIndexer {
.filter(path -> path.getFileName().toString().endsWith(".java"))
.filter(Files::isRegularFile)
.map(path -> path.toAbsolutePath().toString())
.collect(Collectors.groupingBy((javaFile) -> projectFinder.find(new File(javaFile))));
.collect(Collectors.groupingBy((javaFile) -> projectFinder.find(new TextDocumentIdentifier(new File(javaFile).toURI().toString()))));
System.out.println("scan directory done!!!");

View File

@@ -11,6 +11,7 @@
package org.springframework.ide.vscode.boot.metadata;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.languageserver.ProgressService;
@@ -34,7 +35,7 @@ public class DefaultSpringPropertyIndexProvider implements SpringPropertyIndexPr
@Override
public FuzzyMap<ConfigurationMetadataProperty> getIndex(IDocument doc) {
IJavaProject jp = javaProjectFinder.find(doc);
IJavaProject jp = javaProjectFinder.find(new TextDocumentIdentifier(doc.getUri()));
if (jp != null) {
return indexManager.get(jp, progressService);
}

View File

@@ -37,6 +37,7 @@ import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.MarkedString;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.junit.Before;
import org.junit.Test;
@@ -88,7 +89,7 @@ public class AutowiredHoverProviderTest {
String docURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/MyAutowiredComponent.java";
TextDocument document = createTempTextDocument(docURI);
IJavaProject project = projectFinder.find(document);
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(docURI));
CompilationUnit cu = parse(document, project);
@@ -114,7 +115,7 @@ public class AutowiredHoverProviderTest {
String docURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/MyAutowiredComponent.java";
TextDocument document = createTempTextDocument(docURI);
IJavaProject project = projectFinder.find(document);
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(docURI));
CompilationUnit cu = parse(document, project);
@@ -133,7 +134,7 @@ public class AutowiredHoverProviderTest {
String docURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/MyAutowiredComponent.java";
TextDocument document = createTempTextDocument(docURI);
IJavaProject project = projectFinder.find(document);
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(docURI));
CompilationUnit cu = parse(document, project);
@@ -154,7 +155,7 @@ public class AutowiredHoverProviderTest {
String docURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/MyAutowiredComponent.java";
TextDocument document = createTempTextDocument(docURI);
IJavaProject project = projectFinder.find(document);
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(docURI));
CompilationUnit cu = parse(document, project);

View File

@@ -37,6 +37,7 @@ import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.MarkedString;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.junit.Before;
import org.junit.Test;
@@ -88,7 +89,7 @@ public class ComponentHoverProviderTest {
String docURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/MyAutomaticallyWiredComponent.java";
TextDocument document = createTempTextDocument(docURI);
IJavaProject project = projectFinder.find(document);
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(docURI));
CompilationUnit cu = parse(document, project);
@@ -114,7 +115,7 @@ public class ComponentHoverProviderTest {
String docURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/MyAutowiredComponent.java";
TextDocument document = createTempTextDocument(docURI);
IJavaProject project = projectFinder.find(document);
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(docURI));
CompilationUnit cu = parse(document, project);
@@ -135,7 +136,7 @@ public class ComponentHoverProviderTest {
String docURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/MyAutomaticallyWiredComponent.java";
TextDocument document = createTempTextDocument(docURI);
IJavaProject project = projectFinder.find(document);
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(docURI));
CompilationUnit cu = parse(document, project);

View File

@@ -25,7 +25,7 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.languageserver.java.AbstractJavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.FileBasedJavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.CompositeJavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
@@ -39,7 +39,7 @@ import org.springframework.ide.vscode.project.harness.PropertyIndexHarness;
*/
public class ScopeCompletionTest {
protected final CompositeJavaProjectFinder javaProjectFinder = new CompositeJavaProjectFinder(Arrays.asList((JavaProjectFinder)new AbstractJavaProjectFinder() {
protected final CompositeJavaProjectFinder javaProjectFinder = new CompositeJavaProjectFinder(Arrays.asList((JavaProjectFinder)new FileBasedJavaProjectFinder() {
@Override
public IJavaProject find(File doc) {
return getTestProject();

View File

@@ -26,7 +26,7 @@ import org.junit.Test;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer;
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.AbstractJavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.FileBasedJavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.CompositeJavaProjectFinder;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
import org.springframework.ide.vscode.languageserver.testharness.Editor;
@@ -53,7 +53,7 @@ public class ValueCompletionTest {
harness = new LanguageServerHarness<BootJavaLanguageServer>(() -> {
BootJavaLanguageServer server = new BootJavaLanguageServer(
new CompositeJavaProjectFinder(new ArrayList<>(Collections.singleton(new AbstractJavaProjectFinder() {
new CompositeJavaProjectFinder(new ArrayList<>(Collections.singleton(new FileBasedJavaProjectFinder() {
@Override
public IJavaProject find(File doc) {
return getTestProject();