diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguagServerBootApp.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguagServerBootApp.java index e9bd08587..46291e1a6 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguagServerBootApp.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguagServerBootApp.java @@ -68,11 +68,8 @@ public class BootLanguagServerBootApp { @ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness") @Bean - SymbolCache symbolCache() { - //TODO: Don't use system properties. This should be done via 'proper' spring boot property. That way it can - // be controlled via sysprop or via application.yml, or via env var etc. - //Question... who sets this property? I don't find anything setting this. - if ("true".equals(System.getProperty("boot.ls.symbols.caching.enabled", "true"))) { + SymbolCache symbolCache(BootLsConfigProperties props) { + if (props.isSymbolCacheEnabled()) { return new SymbolCacheOnDisc(); } else { return new SymbolCacheVoid(); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLsConfigProperties.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLsConfigProperties.java index 2fa38d374..5a1011bbf 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLsConfigProperties.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLsConfigProperties.java @@ -31,5 +31,17 @@ public class BootLsConfigProperties { this.enableJandexIndex = enableJandexIndex; } + /** + * Enable's or disables disk-based symbol cache. This is + * enabled by default. + */ + private boolean symbolCacheEnabled = true; + public boolean isSymbolCacheEnabled() { + return symbolCacheEnabled; + } + + public void setSymbolCacheEnabled(boolean symbolCacheEnabled) { + this.symbolCacheEnabled = symbolCacheEnabled; + } }