test symbol infrastructure without caching enabled
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user