renamed annotation indexer and changed to lazy init mode
This commit is contained in:
@@ -29,7 +29,7 @@ import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
|
|||||||
import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingHoverProvider;
|
import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingHoverProvider;
|
||||||
import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingSymbolProvider;
|
import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingSymbolProvider;
|
||||||
import org.springframework.ide.vscode.boot.java.scope.ScopeCompletionProcessor;
|
import org.springframework.ide.vscode.boot.java.scope.ScopeCompletionProcessor;
|
||||||
import org.springframework.ide.vscode.boot.java.utils.AnnotationIndexer;
|
import org.springframework.ide.vscode.boot.java.utils.SpringIndexer;
|
||||||
import org.springframework.ide.vscode.boot.java.value.ValueCompletionProcessor;
|
import org.springframework.ide.vscode.boot.java.value.ValueCompletionProcessor;
|
||||||
import org.springframework.ide.vscode.boot.java.value.ValueHoverProvider;
|
import org.springframework.ide.vscode.boot.java.value.ValueHoverProvider;
|
||||||
import org.springframework.ide.vscode.boot.java.value.ValuePropertyReferencesProvider;
|
import org.springframework.ide.vscode.boot.java.value.ValuePropertyReferencesProvider;
|
||||||
@@ -90,9 +90,9 @@ public class BootJavaLanguageServer extends SimpleLanguageServer {
|
|||||||
ReferencesHandler referencesHandler = createReferenceHandler(this, javaProjectFinder);
|
ReferencesHandler referencesHandler = createReferenceHandler(this, javaProjectFinder);
|
||||||
documents.onReferences(referencesHandler);
|
documents.onReferences(referencesHandler);
|
||||||
|
|
||||||
AnnotationIndexer indexer = createAnnotationIndexer(this, javaProjectFinder);
|
SpringIndexer indexer = createAnnotationIndexer(this, javaProjectFinder);
|
||||||
documents.onDocumentSymbol(new BootJavaDocumentSymbolHandler(this, indexer));
|
documents.onDocumentSymbol(new BootJavaDocumentSymbolHandler(indexer));
|
||||||
workspaceService.onWorkspaceSymbol(new BootJavaWorkspaceSymbolHandler(this, indexer));
|
workspaceService.onWorkspaceSymbol(new BootJavaWorkspaceSymbolHandler(indexer));
|
||||||
|
|
||||||
BootJavaCodeLensEngine codeLensHandler = createCodeLensEngine(this, javaProjectFinder);
|
BootJavaCodeLensEngine codeLensHandler = createCodeLensEngine(this, javaProjectFinder);
|
||||||
documents.onCodeLens(codeLensHandler::createCodeLenses);
|
documents.onCodeLens(codeLensHandler::createCodeLenses);
|
||||||
@@ -125,7 +125,7 @@ public class BootJavaLanguageServer extends SimpleLanguageServer {
|
|||||||
return new BootJavaHoverProvider(this, javaProjectFinder, providers);
|
return new BootJavaHoverProvider(this, javaProjectFinder, providers);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected AnnotationIndexer createAnnotationIndexer(SimpleLanguageServer server, JavaProjectFinder projectFinder) {
|
protected SpringIndexer createAnnotationIndexer(SimpleLanguageServer server, JavaProjectFinder projectFinder) {
|
||||||
HashMap<String, SymbolProvider> providers = new HashMap<>();
|
HashMap<String, SymbolProvider> providers = new HashMap<>();
|
||||||
providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_REQUEST_MAPPING, new RequestMappingSymbolProvider());
|
providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_REQUEST_MAPPING, new RequestMappingSymbolProvider());
|
||||||
providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_GET_MAPPING, new RequestMappingSymbolProvider());
|
providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_GET_MAPPING, new RequestMappingSymbolProvider());
|
||||||
@@ -137,7 +137,7 @@ public class BootJavaLanguageServer extends SimpleLanguageServer {
|
|||||||
providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_BEAN, new BeansSymbolProvider());
|
providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_BEAN, new BeansSymbolProvider());
|
||||||
providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_COMPONENT, new ComponentSymbolProvider());
|
providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_COMPONENT, new ComponentSymbolProvider());
|
||||||
|
|
||||||
return new AnnotationIndexer(projectFinder, providers);
|
return new SpringIndexer(this, projectFinder, providers);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ReferencesHandler createReferenceHandler(SimpleLanguageServer server, JavaProjectFinder projectFinder) {
|
protected ReferencesHandler createReferenceHandler(SimpleLanguageServer server, JavaProjectFinder projectFinder) {
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ package org.springframework.ide.vscode.boot.java.beans;
|
|||||||
|
|
||||||
import org.eclipse.jdt.core.dom.ASTNode;
|
import org.eclipse.jdt.core.dom.ASTNode;
|
||||||
import org.eclipse.jdt.core.dom.Annotation;
|
import org.eclipse.jdt.core.dom.Annotation;
|
||||||
import org.eclipse.jdt.core.dom.MethodDeclaration;
|
|
||||||
import org.eclipse.jdt.core.dom.TypeDeclaration;
|
import org.eclipse.jdt.core.dom.TypeDeclaration;
|
||||||
import org.eclipse.lsp4j.Location;
|
import org.eclipse.lsp4j.Location;
|
||||||
import org.eclipse.lsp4j.SymbolInformation;
|
import org.eclipse.lsp4j.SymbolInformation;
|
||||||
|
|||||||
@@ -10,35 +10,26 @@
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.springframework.ide.vscode.boot.java.handlers;
|
package org.springframework.ide.vscode.boot.java.handlers;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.lsp4j.DocumentSymbolParams;
|
import org.eclipse.lsp4j.DocumentSymbolParams;
|
||||||
import org.eclipse.lsp4j.SymbolInformation;
|
import org.eclipse.lsp4j.SymbolInformation;
|
||||||
import org.springframework.ide.vscode.boot.java.utils.AnnotationIndexer;
|
import org.springframework.ide.vscode.boot.java.utils.SpringIndexer;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.util.DocumentSymbolHandler;
|
import org.springframework.ide.vscode.commons.languageserver.util.DocumentSymbolHandler;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Martin Lippert
|
* @author Martin Lippert
|
||||||
*/
|
*/
|
||||||
public class BootJavaDocumentSymbolHandler implements DocumentSymbolHandler {
|
public class BootJavaDocumentSymbolHandler implements DocumentSymbolHandler {
|
||||||
|
|
||||||
private SimpleLanguageServer server;
|
private SpringIndexer indexer;
|
||||||
private AnnotationIndexer indexer;
|
|
||||||
|
|
||||||
public BootJavaDocumentSymbolHandler(SimpleLanguageServer server, AnnotationIndexer indexer) {
|
public BootJavaDocumentSymbolHandler(SpringIndexer indexer) {
|
||||||
this.server = server;
|
|
||||||
this.indexer = indexer;
|
this.indexer = indexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<? extends SymbolInformation> handle(DocumentSymbolParams params) {
|
public List<? extends SymbolInformation> handle(DocumentSymbolParams params) {
|
||||||
Path root = this.server.getWorkspaceRoot();
|
|
||||||
|
|
||||||
indexer.reset();
|
|
||||||
indexer.scanFiles(root.toFile());
|
|
||||||
|
|
||||||
return indexer.getSymbols(params.getTextDocument().getUri());
|
return indexer.getSymbols(params.getTextDocument().getUri());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,13 +10,11 @@
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.springframework.ide.vscode.boot.java.handlers;
|
package org.springframework.ide.vscode.boot.java.handlers;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.lsp4j.SymbolInformation;
|
import org.eclipse.lsp4j.SymbolInformation;
|
||||||
import org.eclipse.lsp4j.WorkspaceSymbolParams;
|
import org.eclipse.lsp4j.WorkspaceSymbolParams;
|
||||||
import org.springframework.ide.vscode.boot.java.utils.AnnotationIndexer;
|
import org.springframework.ide.vscode.boot.java.utils.SpringIndexer;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
|
||||||
import org.springframework.ide.vscode.commons.languageserver.util.WorkspaceSymbolHandler;
|
import org.springframework.ide.vscode.commons.languageserver.util.WorkspaceSymbolHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,21 +22,14 @@ import org.springframework.ide.vscode.commons.languageserver.util.WorkspaceSymbo
|
|||||||
*/
|
*/
|
||||||
public class BootJavaWorkspaceSymbolHandler implements WorkspaceSymbolHandler {
|
public class BootJavaWorkspaceSymbolHandler implements WorkspaceSymbolHandler {
|
||||||
|
|
||||||
private SimpleLanguageServer server;
|
private SpringIndexer indexer;
|
||||||
private AnnotationIndexer indexer;
|
|
||||||
|
|
||||||
public BootJavaWorkspaceSymbolHandler(SimpleLanguageServer server, AnnotationIndexer indexer) {
|
public BootJavaWorkspaceSymbolHandler(SpringIndexer indexer) {
|
||||||
this.server = server;
|
|
||||||
this.indexer = indexer;
|
this.indexer = indexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<? extends SymbolInformation> handle(WorkspaceSymbolParams params) {
|
public List<? extends SymbolInformation> handle(WorkspaceSymbolParams params) {
|
||||||
Path root = this.server.getWorkspaceRoot();
|
|
||||||
|
|
||||||
indexer.reset();
|
|
||||||
indexer.scanFiles(root.toFile());
|
|
||||||
|
|
||||||
return indexer.getAllSymbols();
|
return indexer.getAllSymbols();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,11 @@ import java.nio.file.Paths;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentMap;
|
import java.util.concurrent.ConcurrentMap;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.FutureTask;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@@ -41,21 +44,26 @@ import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
|
|||||||
import org.springframework.ide.vscode.commons.java.IClasspath;
|
import org.springframework.ide.vscode.commons.java.IClasspath;
|
||||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
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.JavaProjectFinder;
|
||||||
|
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
||||||
import org.springframework.ide.vscode.commons.util.text.LanguageId;
|
import org.springframework.ide.vscode.commons.util.text.LanguageId;
|
||||||
import org.springframework.ide.vscode.commons.util.text.TextDocument;
|
import org.springframework.ide.vscode.commons.util.text.TextDocument;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Martin Lippert
|
* @author Martin Lippert
|
||||||
*/
|
*/
|
||||||
public class AnnotationIndexer {
|
public class SpringIndexer {
|
||||||
|
|
||||||
|
private SimpleLanguageServer server;
|
||||||
private JavaProjectFinder projectFinder;
|
private JavaProjectFinder projectFinder;
|
||||||
private Map<String, SymbolProvider> symbolProviders;
|
private Map<String, SymbolProvider> symbolProviders;
|
||||||
|
|
||||||
private List<SymbolInformation> symbols;
|
private List<SymbolInformation> symbols;
|
||||||
private ConcurrentMap<String, List<SymbolInformation>> symbolsByDoc;
|
private ConcurrentMap<String, List<SymbolInformation>> symbolsByDoc;
|
||||||
|
|
||||||
public AnnotationIndexer(JavaProjectFinder projectFinder, Map<String, SymbolProvider> specificProviders) {
|
private CompletableFuture<Void> initializeTask;
|
||||||
|
|
||||||
|
public SpringIndexer(SimpleLanguageServer server, JavaProjectFinder projectFinder, Map<String, SymbolProvider> specificProviders) {
|
||||||
|
this.server = server;
|
||||||
this.projectFinder = projectFinder;
|
this.projectFinder = projectFinder;
|
||||||
this.symbolProviders = specificProviders;
|
this.symbolProviders = specificProviders;
|
||||||
|
|
||||||
@@ -63,16 +71,45 @@ public class AnnotationIndexer {
|
|||||||
this.symbolsByDoc = new ConcurrentHashMap<>();
|
this.symbolsByDoc = new ConcurrentHashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void initialize() {
|
||||||
|
synchronized(this) {
|
||||||
|
if (this.initializeTask == null) {
|
||||||
|
this.initializeTask = CompletableFuture.runAsync(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
System.out.println("start initial scan...");
|
||||||
|
Path workspaceRoot = server.getWorkspaceRoot();
|
||||||
|
reset();
|
||||||
|
scanFiles(workspaceRoot.toFile());
|
||||||
|
System.out.println("initial scan done...!!!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.initializeTask.get();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void reset() {
|
public void reset() {
|
||||||
this.symbols.clear();
|
this.symbols.clear();
|
||||||
this.symbolsByDoc.clear();
|
this.symbolsByDoc.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateDocument(String docURI) {
|
||||||
|
// TODO: update information because of doc change
|
||||||
|
}
|
||||||
|
|
||||||
public List<? extends SymbolInformation> getAllSymbols() {
|
public List<? extends SymbolInformation> getAllSymbols() {
|
||||||
|
initialize();
|
||||||
return this.symbols;
|
return this.symbols;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<? extends SymbolInformation> getSymbols(String docURI) {
|
public List<? extends SymbolInformation> getSymbols(String docURI) {
|
||||||
|
initialize();
|
||||||
return this.symbolsByDoc.get(docURI);
|
return this.symbolsByDoc.get(docURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,29 +18,35 @@ import java.util.HashMap;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
import org.eclipse.lsp4j.SymbolInformation;
|
import org.eclipse.lsp4j.SymbolInformation;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
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.BeansSymbolProvider;
|
||||||
import org.springframework.ide.vscode.boot.java.beans.ComponentSymbolProvider;
|
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.beans.Constants;
|
||||||
import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
|
import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
|
||||||
import org.springframework.ide.vscode.boot.java.utils.AnnotationIndexer;
|
import org.springframework.ide.vscode.boot.java.utils.SpringIndexer;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.java.DefaultJavaProjectFinder;
|
import org.springframework.ide.vscode.commons.languageserver.java.DefaultJavaProjectFinder;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.java.IJavaProjectFinderStrategy;
|
import org.springframework.ide.vscode.commons.languageserver.java.IJavaProjectFinderStrategy;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
|
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
|
||||||
import org.springframework.ide.vscode.commons.maven.MavenCore;
|
import org.springframework.ide.vscode.commons.maven.MavenCore;
|
||||||
import org.springframework.ide.vscode.commons.maven.MavenProjectFinderStrategy;
|
import org.springframework.ide.vscode.commons.maven.MavenProjectFinderStrategy;
|
||||||
|
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
|
||||||
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
|
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
|
||||||
|
import org.springframework.ide.vscode.project.harness.PropertyIndexHarness;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Martin Lippert
|
* @author Martin Lippert
|
||||||
*/
|
*/
|
||||||
public class AnnotationIndexerBeansTest {
|
public class SpringIndexerBeansTest {
|
||||||
|
|
||||||
private Map<String, SymbolProvider> symbolProviders;
|
private Map<String, SymbolProvider> symbolProviders;
|
||||||
private JavaProjectFinder projectFinder;
|
private JavaProjectFinder projectFinder;
|
||||||
|
private LanguageServerHarness<BootJavaLanguageServer> harness;
|
||||||
|
private PropertyIndexHarness indexHarness;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
@@ -49,11 +55,26 @@ public class AnnotationIndexerBeansTest {
|
|||||||
symbolProviders.put(Constants.SPRING_COMPONENT, new ComponentSymbolProvider());
|
symbolProviders.put(Constants.SPRING_COMPONENT, new ComponentSymbolProvider());
|
||||||
|
|
||||||
projectFinder = new DefaultJavaProjectFinder(new IJavaProjectFinderStrategy[] {new MavenProjectFinderStrategy(MavenCore.getDefault())});
|
projectFinder = new DefaultJavaProjectFinder(new IJavaProjectFinderStrategy[] {new MavenProjectFinderStrategy(MavenCore.getDefault())});
|
||||||
|
|
||||||
|
indexHarness = new PropertyIndexHarness();
|
||||||
|
harness = new LanguageServerHarness<BootJavaLanguageServer>(new Callable<BootJavaLanguageServer>() {
|
||||||
|
@Override
|
||||||
|
public BootJavaLanguageServer call() throws Exception {
|
||||||
|
BootJavaLanguageServer server = new BootJavaLanguageServer(projectFinder, indexHarness.getIndexProvider());
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
}) {
|
||||||
|
@Override
|
||||||
|
protected String getFileExtension() {
|
||||||
|
return ".java";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScanSimpleConfigurationClass() throws Exception {
|
public void testScanSimpleConfigurationClass() throws Exception {
|
||||||
AnnotationIndexer indexer = new AnnotationIndexer(projectFinder, symbolProviders);
|
SpringIndexer indexer = new SpringIndexer(harness.getServer(), projectFinder, symbolProviders);
|
||||||
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI());
|
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI());
|
||||||
indexer.scanFiles(directory);
|
indexer.scanFiles(directory);
|
||||||
|
|
||||||
@@ -65,7 +86,7 @@ public class AnnotationIndexerBeansTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScanSimpleComponentClass() throws Exception {
|
public void testScanSimpleComponentClass() throws Exception {
|
||||||
AnnotationIndexer indexer = new AnnotationIndexer(projectFinder, symbolProviders);
|
SpringIndexer indexer = new SpringIndexer(harness.getServer(), projectFinder, symbolProviders);
|
||||||
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI());
|
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI());
|
||||||
indexer.scanFiles(directory);
|
indexer.scanFiles(directory);
|
||||||
|
|
||||||
@@ -18,28 +18,34 @@ import java.util.HashMap;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
import org.eclipse.lsp4j.SymbolInformation;
|
import org.eclipse.lsp4j.SymbolInformation;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer;
|
||||||
import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
|
import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider;
|
||||||
import org.springframework.ide.vscode.boot.java.requestmapping.Constants;
|
import org.springframework.ide.vscode.boot.java.requestmapping.Constants;
|
||||||
import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingSymbolProvider;
|
import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingSymbolProvider;
|
||||||
import org.springframework.ide.vscode.boot.java.utils.AnnotationIndexer;
|
import org.springframework.ide.vscode.boot.java.utils.SpringIndexer;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.java.DefaultJavaProjectFinder;
|
import org.springframework.ide.vscode.commons.languageserver.java.DefaultJavaProjectFinder;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.java.IJavaProjectFinderStrategy;
|
import org.springframework.ide.vscode.commons.languageserver.java.IJavaProjectFinderStrategy;
|
||||||
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
|
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
|
||||||
import org.springframework.ide.vscode.commons.maven.MavenCore;
|
import org.springframework.ide.vscode.commons.maven.MavenCore;
|
||||||
import org.springframework.ide.vscode.commons.maven.MavenProjectFinderStrategy;
|
import org.springframework.ide.vscode.commons.maven.MavenProjectFinderStrategy;
|
||||||
|
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
|
||||||
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
|
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
|
||||||
|
import org.springframework.ide.vscode.project.harness.PropertyIndexHarness;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Martin Lippert
|
* @author Martin Lippert
|
||||||
*/
|
*/
|
||||||
public class AnnotationIndexerTest {
|
public class SpringIndexerTest {
|
||||||
|
|
||||||
private Map<String, SymbolProvider> symbolProviders;
|
private Map<String, SymbolProvider> symbolProviders;
|
||||||
private JavaProjectFinder projectFinder;
|
private JavaProjectFinder projectFinder;
|
||||||
|
private LanguageServerHarness<BootJavaLanguageServer> harness;
|
||||||
|
private PropertyIndexHarness indexHarness;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
@@ -47,11 +53,27 @@ public class AnnotationIndexerTest {
|
|||||||
symbolProviders.put(Constants.SPRING_REQUEST_MAPPING, new RequestMappingSymbolProvider());
|
symbolProviders.put(Constants.SPRING_REQUEST_MAPPING, new RequestMappingSymbolProvider());
|
||||||
|
|
||||||
projectFinder = new DefaultJavaProjectFinder(new IJavaProjectFinderStrategy[] {new MavenProjectFinderStrategy(MavenCore.getDefault())});
|
projectFinder = new DefaultJavaProjectFinder(new IJavaProjectFinderStrategy[] {new MavenProjectFinderStrategy(MavenCore.getDefault())});
|
||||||
|
|
||||||
|
indexHarness = new PropertyIndexHarness();
|
||||||
|
harness = new LanguageServerHarness<BootJavaLanguageServer>(new Callable<BootJavaLanguageServer>() {
|
||||||
|
@Override
|
||||||
|
public BootJavaLanguageServer call() throws Exception {
|
||||||
|
BootJavaLanguageServer server = new BootJavaLanguageServer(projectFinder, indexHarness.getIndexProvider());
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
}) {
|
||||||
|
@Override
|
||||||
|
protected String getFileExtension() {
|
||||||
|
return ".java";
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScanningAllAnnotationsSimpleProjectUpfront() throws Exception {
|
public void testScanningAllAnnotationsSimpleProjectUpfront() throws Exception {
|
||||||
AnnotationIndexer indexer = new AnnotationIndexer(projectFinder, symbolProviders);
|
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()));
|
||||||
|
|
||||||
|
SpringIndexer indexer = new SpringIndexer(harness.getServer(), projectFinder, symbolProviders);
|
||||||
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI());
|
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI());
|
||||||
indexer.scanFiles(directory);
|
indexer.scanFiles(directory);
|
||||||
|
|
||||||
@@ -73,7 +95,9 @@ public class AnnotationIndexerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRetrievingSymbolsPerDocument() throws Exception {
|
public void testRetrievingSymbolsPerDocument() throws Exception {
|
||||||
AnnotationIndexer indexer = new AnnotationIndexer(projectFinder, symbolProviders);
|
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()));
|
||||||
|
|
||||||
|
SpringIndexer indexer = new SpringIndexer(harness.getServer(), projectFinder, symbolProviders);
|
||||||
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI());
|
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI());
|
||||||
indexer.scanFiles(directory);
|
indexer.scanFiles(directory);
|
||||||
|
|
||||||
@@ -98,7 +122,9 @@ public class AnnotationIndexerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScanningAllAnnotationsMultiModuleProjectUpfront() throws Exception {
|
public void testScanningAllAnnotationsMultiModuleProjectUpfront() throws Exception {
|
||||||
AnnotationIndexer indexer = new AnnotationIndexer(projectFinder, symbolProviders);
|
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/").toURI()));
|
||||||
|
|
||||||
|
SpringIndexer indexer = new SpringIndexer(harness.getServer(), projectFinder, symbolProviders);
|
||||||
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/").toURI());
|
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/").toURI());
|
||||||
indexer.scanFiles(directory);
|
indexer.scanFiles(directory);
|
||||||
|
|
||||||
Reference in New Issue
Block a user