test symbol infrastructure without caching enabled

This commit is contained in:
Martin Lippert
2019-03-11 09:48:59 +01:00
parent 35c110e18c
commit 65aa2ef69f
3 changed files with 28 additions and 19 deletions

View File

@@ -59,6 +59,9 @@ import org.springframework.ide.vscode.boot.java.snippets.JavaSnippetManager;
import org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache;
import org.springframework.ide.vscode.boot.java.utils.RestrictedDefaultSymbolProvider;
import org.springframework.ide.vscode.boot.java.utils.SpringSymbolIndex;
import org.springframework.ide.vscode.boot.java.utils.SymbolCache;
import org.springframework.ide.vscode.boot.java.utils.SymbolCacheOnDisc;
import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid;
import org.springframework.ide.vscode.boot.java.utils.SpringLiveChangeDetectionWatchdog;
import org.springframework.ide.vscode.boot.java.utils.SpringLiveHoverWatchdog;
import org.springframework.ide.vscode.boot.java.value.ValueCompletionProcessor;
@@ -111,6 +114,8 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
private CodeLensHandler codeLensHandler;
private DocumentHighlightHandler highlightsEngine;
private SymbolCache symbolCache;
public BootJavaLanguageServerComponents(
SimpleLanguageServer server,
BootLanguageServerParams serverParams,
@@ -136,7 +141,20 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
ReferencesHandler referencesHandler = createReferenceHandler(server, projectFinder);
documents.onReferences(referencesHandler);
indexer = createAnnotationIndexer(server, serverParams);
if ("true".equals(System.getProperty("boot.ls.symbolCache.enabled", "true"))) {
try {
this.symbolCache = new SymbolCacheOnDisc();
}
catch (Exception e) {
log.warn("symbol cache directory could not be created, no cache enabled");
this.symbolCache = new SymbolCacheVoid();
}
}
else {
this.symbolCache = new SymbolCacheVoid();
}
indexer = createAnnotationIndexer(server, serverParams, symbolCache);
documents.onDidSave(params -> {
TextDocument document = params.getDocument();
// Spring Boot LS get events from boot properties files as well, so filter them out
@@ -376,7 +394,7 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
return new BootJavaHoverProvider(this, javaProjectFinder, providers, runningAppProvider);
}
protected SpringSymbolIndex createAnnotationIndexer(SimpleLanguageServer server, BootLanguageServerParams params) {
public SpringSymbolIndex createAnnotationIndexer(SimpleLanguageServer server, BootLanguageServerParams params, SymbolCache cache) {
AnnotationHierarchyAwareLookup<SymbolProvider> providers = new AnnotationHierarchyAwareLookup<>();
RequestMappingSymbolProvider requestMappingSymbolProvider = new RequestMappingSymbolProvider();
BeansSymbolProvider beansSymbolProvider = new BeansSymbolProvider();
@@ -419,7 +437,7 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
providers.put(Annotations.REPOSITORY, dataRepositorySymbolProvider);
providers.put("", webfluxRouterSymbolProvider);
return new SpringSymbolIndex(server, params, providers);
return new SpringSymbolIndex(server, params, providers, cache);
}
protected ReferencesHandler createReferenceHandler(SimpleLanguageServer server, JavaProjectFinder projectFinder) {

View File

@@ -72,7 +72,7 @@ public class SpringSymbolIndex {
private final ExecutorService updateQueue;
private SpringIndexer[] indexer;
private SymbolCache cache;
private final SymbolCache cache;
private static final Logger log = LoggerFactory.getLogger(SpringSymbolIndex.class);
@@ -111,7 +111,8 @@ public class SpringSymbolIndex {
return params.projectObserver;
}
public SpringSymbolIndex(SimpleLanguageServer server, BootLanguageServerParams params, AnnotationHierarchyAwareLookup<SymbolProvider> specificProviders) {
public SpringSymbolIndex(SimpleLanguageServer server, BootLanguageServerParams params,
AnnotationHierarchyAwareLookup<SymbolProvider> specificProviders, SymbolCache cache) {
log.debug("Creating {}", this);
this.server = server;
this.params = params;
@@ -124,18 +125,7 @@ public class SpringSymbolIndex {
this.addonInformationByDoc = new ConcurrentHashMap<>();
this.addonInformationByProject = new ConcurrentHashMap<>();
if ("true".equals(System.getProperty("boot.ls.symbolCache.enabled", "true"))) {
try {
this.cache = new SymbolCacheOnDisc();
}
catch (Exception e) {
log.warn("symbol cache directory could not be created, no cache enabled");
}
}
if (this.cache == null) {
this.cache = new SymbolCacheVoid();
}
this.cache = cache;
SymbolHandler handler = new SymbolHandler() {
@Override

View File

@@ -20,6 +20,7 @@ import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerComponents
import org.springframework.ide.vscode.boot.java.links.SourceLinkFactory;
import org.springframework.ide.vscode.boot.java.links.SourceLinks;
import org.springframework.ide.vscode.boot.java.utils.SpringSymbolIndex;
import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid;
import org.springframework.ide.vscode.boot.metadata.DefaultSpringPropertyIndexProvider;
import org.springframework.ide.vscode.boot.metadata.ValueProviderRegistry;
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
@@ -47,8 +48,8 @@ public class SymbolProviderTestConf {
return BootLanguageServerParams.createTestDefault(server, valueProviders);
}
@Bean SpringSymbolIndex springSymbolIndex(BootLanguageServerInitializer serverInit) {
return serverInit.getComponents().get(BootJavaLanguageServerComponents.class).getSpringSymbolIndex();
@Bean SpringSymbolIndex springSymbolIndex(BootLanguageServerInitializer serverInit, SimpleLanguageServer server, BootLanguageServerParams params) {
return serverInit.getComponents().get(BootJavaLanguageServerComponents.class).createAnnotationIndexer(server, params, new SymbolCacheVoid());
}
@Bean DefaultSpringPropertyIndexProvider indexProvider(BootLanguageServerParams serverParams) {