From 7dfbad709f11cb969b88131100a89e75e33741ff Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Tue, 11 Jul 2023 12:27:53 +0200 Subject: [PATCH] reorganize names and package locations around symbol and index caches --- .../boot/app/BootLanguageServerBootApp.java | 12 +- .../app/BootLanguageServerInitializer.java | 4 +- .../vscode/boot/app/SpringSymbolIndex.java | 4 +- .../boot/app/SpringSymbolIndexerConfig.java | 4 +- .../vscode/boot/index/cache/IndexCache.java | 42 +++++++ .../cache/IndexCacheKey.java} | 12 +- .../cache/IndexCacheOnDisc.java} | 31 ++--- .../cache/IndexCacheVoid.java} | 19 ++-- .../java/utils/SpringFactoriesIndexer.java | 20 ++-- .../boot/java/utils/SpringIndexerJava.java | 26 +++-- .../boot/java/utils/SpringIndexerXML.java | 20 ++-- .../vscode/boot/java/utils/SymbolCache.java | 41 ------- .../vscode/boot/bootiful/HoverTestConf.java | 8 +- .../boot/bootiful/PropertyEditorTestConf.java | 8 +- .../boot/bootiful/SourceLinksTestConf.java | 8 +- .../boot/bootiful/SymbolProviderTestConf.java | 8 +- .../boot/bootiful/XmlBeansTestConf.java | 8 +- .../cache/test/IndexCacheKeyTest.java} | 26 ++--- .../cache/test/IndexCacheOnDiscTest.java} | 106 +++++++++--------- .../cache/test/IndexCacheTimestampsOnly.java} | 28 ++--- .../test/SpringIndexViaLSPMethodTest.java | 2 +- .../test/SpringMetamodelIndexTest.java | 8 +- .../test/SpringMetamodelIndexerBeansTest.java | 2 +- .../test/SpringMetamodelIndexingTest.java | 2 +- .../utils/test/CompilationUnitCacheTest.java | 8 +- .../test/SpringIndexerMultipleFilesTest.java | 7 +- .../java/value/test/ValueCompletionTest.java | 8 +- .../ValueSpelExpressionValidationTest.java | 8 +- 28 files changed, 245 insertions(+), 235 deletions(-) create mode 100644 headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCache.java rename headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/{java/utils/SymbolCacheKey.java => index/cache/IndexCacheKey.java} (86%) rename headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/{java/utils/SymbolCacheOnDisc.java => index/cache/IndexCacheOnDisc.java} (91%) rename headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/{java/utils/SymbolCacheVoid.java => index/cache/IndexCacheVoid.java} (51%) delete mode 100644 headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCache.java rename headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/{java/utils/test/SymbolCacheKeyTest.java => index/cache/test/IndexCacheKeyTest.java} (70%) rename headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/{java/utils/test/SymbolCacheOnDiscTest.java => index/cache/test/IndexCacheOnDiscTest.java} (85%) rename headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/{java/utils/test/SymbolCacheTimestampsOnly.java => index/cache/test/IndexCacheTimestampsOnly.java} (67%) rename headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/{metamodel => index}/test/SpringIndexViaLSPMethodTest.java (98%) rename headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/{metamodel => index}/test/SpringMetamodelIndexTest.java (98%) rename headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/{metamodel => index}/test/SpringMetamodelIndexerBeansTest.java (99%) rename headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/{metamodel => index}/test/SpringMetamodelIndexingTest.java (99%) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerBootApp.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerBootApp.java index bce4abe5d..67893ccd3 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerBootApp.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerBootApp.java @@ -41,6 +41,9 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.ide.vscode.boot.common.PropertyCompletionFactory; import org.springframework.ide.vscode.boot.common.RelaxedNameConfig; import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDisc; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; import org.springframework.ide.vscode.boot.java.JavaDefinitionHandler; import org.springframework.ide.vscode.boot.java.handlers.BootJavaCodeActionProvider; import org.springframework.ide.vscode.boot.java.handlers.BootJavaProjectReconcilerScheduler; @@ -62,9 +65,6 @@ import org.springframework.ide.vscode.boot.java.reconcilers.JavaReconciler; import org.springframework.ide.vscode.boot.java.reconcilers.JdtReconciler; import org.springframework.ide.vscode.boot.java.rewrite.RewriteRecipeRepository; import org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache; -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.value.PropertyValueAnnotationDefProvider; import org.springframework.ide.vscode.boot.jdt.ls.JavaProjectsService; import org.springframework.ide.vscode.boot.jdt.ls.JdtLsProjectCache; @@ -138,11 +138,11 @@ public class BootLanguageServerBootApp { @ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness") @Bean - SymbolCache symbolCache(BootLsConfigProperties props) { + IndexCache symbolCache(BootLsConfigProperties props) { if (props.isSymbolCacheEnabled()) { - return new SymbolCacheOnDisc(new File(props.getSymbolCacheDir())); + return new IndexCacheOnDisc(new File(props.getSymbolCacheDir())); } else { - return new SymbolCacheVoid(); + return new IndexCacheVoid(); } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java index 31dd5dbed..cbc390c9a 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationContext; import org.springframework.ide.vscode.boot.factories.SpringFactoriesLanguageServerComponents; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerComponents; import org.springframework.ide.vscode.boot.java.links.JavaElementLocationProvider; import org.springframework.ide.vscode.boot.java.links.SourceLinks; @@ -30,7 +31,6 @@ import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessLiveDa import org.springframework.ide.vscode.boot.java.rewrite.RewriteRecipeRepository; import org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache; import org.springframework.ide.vscode.boot.java.utils.ServerUtils; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; import org.springframework.ide.vscode.boot.metadata.ProjectBasedPropertyIndexProvider; import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServerComponents; import org.springframework.ide.vscode.boot.xml.SpringXMLLanguageServerComponents; @@ -66,7 +66,7 @@ public class BootLanguageServerInitializer implements InitializingBean { @Autowired YamlASTProvider parser; @Autowired YamlStructureProvider yamlStructureProvider; @Autowired YamlAssistContextProvider yamlAssistContextProvider; - @Autowired SymbolCache symbolCache; + @Autowired IndexCache symbolCache; @Autowired SpringProcessLiveDataProvider liveDataProvider; @Autowired ApplicationContext appContext; @Autowired BootJavaConfig config; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java index 18f8f8671..d6d22a2ef 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndex.java @@ -44,6 +44,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerComponents; import org.springframework.ide.vscode.boot.java.annotations.AnnotationHierarchyAwareLookup; import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation; @@ -56,7 +57,6 @@ import org.springframework.ide.vscode.boot.java.utils.SpringIndexerJava; import org.springframework.ide.vscode.boot.java.utils.SpringIndexerXML; import org.springframework.ide.vscode.boot.java.utils.SpringIndexerXMLNamespaceHandler; import org.springframework.ide.vscode.boot.java.utils.SpringIndexerXMLNamespaceHandlerBeans; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; import org.springframework.ide.vscode.boot.java.utils.SymbolHandler; import org.springframework.ide.vscode.boot.java.utils.SymbolIndexConfig; import org.springframework.ide.vscode.commons.java.IJavaProject; @@ -91,7 +91,7 @@ public class SpringSymbolIndex implements InitializingBean, SpringIndex { @Autowired BootJavaConfig config; @Autowired BootLanguageServerParams params; @Autowired AnnotationHierarchyAwareLookup specificProviders; - @Autowired SymbolCache cache; + @Autowired IndexCache cache; @Autowired FutureProjectFinder futureProjectFinder; @Autowired SpringMetamodelIndex springIndex; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndexerConfig.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndexerConfig.java index c2fa14466..b481b9292 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndexerConfig.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/SpringSymbolIndexerConfig.java @@ -13,6 +13,7 @@ package org.springframework.ide.vscode.boot.app; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; import org.springframework.ide.vscode.boot.java.Annotations; import org.springframework.ide.vscode.boot.java.annotations.AnnotationHierarchyAwareLookup; import org.springframework.ide.vscode.boot.java.beans.BeansSymbolProvider; @@ -22,13 +23,12 @@ import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider; import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingSymbolProvider; import org.springframework.ide.vscode.boot.java.requestmapping.WebfluxRouterSymbolProvider; import org.springframework.ide.vscode.boot.java.utils.RestrictedDefaultSymbolProvider; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; @Configuration(proxyBeanMethods = false) public class SpringSymbolIndexerConfig { @Bean - AnnotationHierarchyAwareLookup symbolProviders(SymbolCache cache) { + AnnotationHierarchyAwareLookup symbolProviders(IndexCache cache) { AnnotationHierarchyAwareLookup providers = new AnnotationHierarchyAwareLookup<>(); RequestMappingSymbolProvider requestMappingSymbolProvider = new RequestMappingSymbolProvider(); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCache.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCache.java new file mode 100644 index 000000000..6795f871e --- /dev/null +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCache.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2019, 2020 Pivotal, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Pivotal, Inc. - initial API and implementation + *******************************************************************************/ +package org.springframework.ide.vscode.boot.index.cache; + +import java.util.List; +import java.util.Set; + +import org.apache.commons.lang3.tuple.Pair; +import org.springframework.ide.vscode.boot.java.utils.CachedSymbol; + +import com.google.common.collect.Multimap; + +/** + * @author Martin Lippert + */ +public interface IndexCache { + + void store(IndexCacheKey cacheKey, String[] files, List generatedSymbols, Multimap dependencies); + Pair> retrieve(IndexCacheKey cacheKey, String[] files); + + void update(IndexCacheKey cacheKey, String file, long lastModified, List generatedSymbols, Set dependencies); + void update(IndexCacheKey cacheKey, String[] files, long[] lastModified, List generatedSymbols, Multimap dependencies); + + void remove(IndexCacheKey cacheKey); + void removeFile(IndexCacheKey symbolCacheKey, String file); + + default CachedSymbol[] retrieveSymbols(IndexCacheKey cacheKey, String[] files) { + Pair> r = retrieve(cacheKey, files); + return r!=null ? r.getLeft() : null; + } + + long getModificationTimestamp(IndexCacheKey cacheKey, String docURI); + +} diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheKey.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheKey.java similarity index 86% rename from headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheKey.java rename to headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheKey.java index a5e714d21..cddfab85f 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheKey.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheKey.java @@ -8,19 +8,19 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.utils; +package org.springframework.ide.vscode.boot.index.cache; /** * @author Martin Lippert */ -public class SymbolCacheKey { +public class IndexCacheKey { private static final String SEPARATOR = "-"; private final String primaryIdentifier; private final String version; - public SymbolCacheKey(String primaryIdentifier, String version) { + public IndexCacheKey(String primaryIdentifier, String version) { this.primaryIdentifier = primaryIdentifier; this.version = version; } @@ -56,11 +56,11 @@ public class SymbolCacheKey { if (getClass() != obj.getClass()) return false; - SymbolCacheKey other = (SymbolCacheKey) obj; + IndexCacheKey other = (IndexCacheKey) obj; return this.toString().equals(other.toString()); } - public static SymbolCacheKey parse(String fileName) { + public static IndexCacheKey parse(String fileName) { if (fileName != null && fileName.length() > 0) { int separatorIndex = fileName.lastIndexOf(SEPARATOR); if (separatorIndex > 0) { @@ -72,7 +72,7 @@ public class SymbolCacheKey { version = version.substring(0, fileextensionIndex); } - return new SymbolCacheKey(primary, version); + return new IndexCacheKey(primary, version); } } return null; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheOnDisc.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheOnDisc.java similarity index 91% rename from headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheOnDisc.java rename to headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheOnDisc.java index 5768f02a4..c10b0ce2e 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheOnDisc.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheOnDisc.java @@ -8,7 +8,7 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.utils; +package org.springframework.ide.vscode.boot.index.cache; import java.io.File; import java.io.FileReader; @@ -34,6 +34,7 @@ import org.eclipse.lsp4j.Location; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation; +import org.springframework.ide.vscode.boot.java.utils.CachedSymbol; import org.springframework.ide.vscode.commons.protocol.spring.Bean; import org.springframework.ide.vscode.commons.protocol.spring.InjectionPoint; import org.springframework.ide.vscode.commons.util.UriUtil; @@ -57,14 +58,14 @@ import com.google.gson.stream.JsonReader; /** * @author Martin Lippert */ -public class SymbolCacheOnDisc implements SymbolCache { +public class IndexCacheOnDisc implements IndexCache { private final File cacheDirectory; - private final Map stores; + private final Map stores; - private static final Logger log = LoggerFactory.getLogger(SymbolCacheOnDisc.class); + private static final Logger log = LoggerFactory.getLogger(IndexCacheOnDisc.class); - public SymbolCacheOnDisc(File cacheDirectory) { + public IndexCacheOnDisc(File cacheDirectory) { this.cacheDirectory = cacheDirectory; this.stores = new ConcurrentHashMap<>(); @@ -78,7 +79,7 @@ public class SymbolCacheOnDisc implements SymbolCache { } @Override - public void store(SymbolCacheKey cacheKey, String[] files, List generatedSymbols, Multimap dependencies) { + public void store(IndexCacheKey cacheKey, String[] files, List generatedSymbols, Multimap dependencies) { if (dependencies==null) { dependencies = ImmutableMultimap.of(); } @@ -98,7 +99,7 @@ public class SymbolCacheOnDisc implements SymbolCache { } @Override - public Pair> retrieve(SymbolCacheKey cacheKey, String[] files) { + public Pair> retrieve(IndexCacheKey cacheKey, String[] files) { File cacheStore = new File(cacheDirectory, cacheKey.toString() + ".json"); if (cacheStore.exists()) { @@ -142,7 +143,7 @@ public class SymbolCacheOnDisc implements SymbolCache { } @Override - public void removeFile(SymbolCacheKey cacheKey, String file) { + public void removeFile(IndexCacheKey cacheKey, String file) { CacheStore cacheStore = this.stores.get(cacheKey); if (cacheStore != null) { String docURI = UriUtil.toUri(new File(file)).toASCIIString(); @@ -160,7 +161,7 @@ public class SymbolCacheOnDisc implements SymbolCache { } @Override - public void remove(SymbolCacheKey cacheKey) { + public void remove(IndexCacheKey cacheKey) { File cacheStore = new File(cacheDirectory, cacheKey.toString() + ".json"); if (cacheStore.exists()) { cacheStore.delete(); @@ -169,7 +170,7 @@ public class SymbolCacheOnDisc implements SymbolCache { } @Override - public void update(SymbolCacheKey cacheKey, String file, long lastModified, List generatedSymbols, Set dependencies) { + public void update(IndexCacheKey cacheKey, String file, long lastModified, List generatedSymbols, Set dependencies) { if (dependencies == null) { dependencies = ImmutableSet.of(); } @@ -199,7 +200,7 @@ public class SymbolCacheOnDisc implements SymbolCache { } @Override - public void update(SymbolCacheKey cacheKey, String[] files, long[] lastModified, List generatedSymbols, Multimap dependencies) { + public void update(IndexCacheKey cacheKey, String[] files, long[] lastModified, List generatedSymbols, Multimap dependencies) { if (dependencies == null) { dependencies = ImmutableMultimap.of(); } @@ -241,7 +242,7 @@ public class SymbolCacheOnDisc implements SymbolCache { } @Override - public long getModificationTimestamp(SymbolCacheKey cacheKey, String file) { + public long getModificationTimestamp(IndexCacheKey cacheKey, String file) { CacheStore cacheStore = this.stores.get(cacheKey); if (cacheStore != null) { @@ -254,7 +255,7 @@ public class SymbolCacheOnDisc implements SymbolCache { return 0; } - private void save(SymbolCacheKey cacheKey, List generatedSymbols, + private void save(IndexCacheKey cacheKey, List generatedSymbols, SortedMap timestampedFiles, Map> dependencies) { CacheStore store = new CacheStore(timestampedFiles, generatedSymbols, dependencies); this.stores.put(cacheKey, store); @@ -282,12 +283,12 @@ public class SymbolCacheOnDisc implements SymbolCache { return true; } - private void cleanupCacheFiles(SymbolCacheKey cacheKey) { + private void cleanupCacheFiles(IndexCacheKey cacheKey) { File[] cacheFiles = this.cacheDirectory.listFiles(); for (int i = 0; i < cacheFiles.length; i++) { String fileName = cacheFiles[i].getName(); - SymbolCacheKey key = SymbolCacheKey.parse(fileName); + IndexCacheKey key = IndexCacheKey.parse(fileName); if (key != null && !key.equals(cacheKey) && key.getPrimaryIdentifier().equals(cacheKey.getPrimaryIdentifier())) { diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheVoid.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheVoid.java similarity index 51% rename from headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheVoid.java rename to headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheVoid.java index 31319a2ff..729650fdc 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCacheVoid.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/index/cache/IndexCacheVoid.java @@ -8,47 +8,48 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.utils; +package org.springframework.ide.vscode.boot.index.cache; import java.util.List; import java.util.Set; import org.apache.commons.lang3.tuple.Pair; +import org.springframework.ide.vscode.boot.java.utils.CachedSymbol; import com.google.common.collect.Multimap; /** * @author Martin Lippert */ -public class SymbolCacheVoid implements SymbolCache { +public class IndexCacheVoid implements IndexCache { @Override - public void store(SymbolCacheKey cacheKey, String[] files, List generatedSymbols, Multimap dependencies) { + public void store(IndexCacheKey cacheKey, String[] files, List generatedSymbols, Multimap dependencies) { } @Override - public Pair> retrieve(SymbolCacheKey cacheKey, String[] files) { + public Pair> retrieve(IndexCacheKey cacheKey, String[] files) { return null; } @Override - public void update(SymbolCacheKey cacheKey, String file, long lastModified, List generatedSymbols, Set dependencies) { + public void update(IndexCacheKey cacheKey, String file, long lastModified, List generatedSymbols, Set dependencies) { } @Override - public void update(SymbolCacheKey cacheKey, String[] file, long[] lastModified, List generatedSymbols, Multimap dependencies) { + public void update(IndexCacheKey cacheKey, String[] file, long[] lastModified, List generatedSymbols, Multimap dependencies) { } @Override - public void remove(SymbolCacheKey cacheKey) { + public void remove(IndexCacheKey cacheKey) { } @Override - public void removeFile(SymbolCacheKey symbolCacheKey, String file) { + public void removeFile(IndexCacheKey symbolCacheKey, String file) { } @Override - public long getModificationTimestamp(SymbolCacheKey cacheKey, String docURI) { + public long getModificationTimestamp(IndexCacheKey cacheKey, String docURI) { return 0; } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringFactoriesIndexer.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringFactoriesIndexer.java index afe6aeb60..fa66d0813 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringFactoriesIndexer.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringFactoriesIndexer.java @@ -34,6 +34,8 @@ import org.eclipse.lsp4j.WorkspaceSymbol; import org.eclipse.lsp4j.jsonrpc.messages.Either; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheKey; import org.springframework.ide.vscode.boot.java.beans.BeanUtils; import org.springframework.ide.vscode.boot.java.beans.BeansSymbolAddOnInformation; import org.springframework.ide.vscode.boot.java.beans.BeansSymbolProvider; @@ -69,9 +71,9 @@ public class SpringFactoriesIndexer implements SpringIndexer { ); private final SymbolHandler symbolHandler; - private final SymbolCache cache; + private final IndexCache cache; - public SpringFactoriesIndexer(SymbolHandler symbolHandler, SymbolCache cache) { + public SpringFactoriesIndexer(SymbolHandler symbolHandler, IndexCache cache) { super(); this.symbolHandler = symbolHandler; this.cache = cache; @@ -142,7 +144,7 @@ public class SpringFactoriesIndexer implements SpringIndexer { return fqName; } - private SymbolCacheKey getCacheKey(IJavaProject project) { + private IndexCacheKey getCacheKey(IJavaProject project) { String filesIndentifier = getFiles(project).stream() .filter(f -> Files.isRegularFile(f)) .map(f -> { @@ -154,7 +156,7 @@ public class SpringFactoriesIndexer implements SpringIndexer { } }) .collect(Collectors.joining(",")); - return new SymbolCacheKey(project.getElementName() + "-factories-", DigestUtils.md5Hex(filesIndentifier).toUpperCase()); + return new IndexCacheKey(project.getElementName() + "-factories-", DigestUtils.md5Hex(filesIndentifier).toUpperCase()); } @@ -166,7 +168,7 @@ public class SpringFactoriesIndexer implements SpringIndexer { log.info("scan factories files for symbols for project: " + project.getElementName() + " - no. of files: " + files.size()); - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); CachedSymbol[] symbols = this.cache.retrieveSymbols(cacheKey, filesStr); if (symbols == null) { @@ -238,7 +240,7 @@ public class SpringFactoriesIndexer implements SpringIndexer { @Override public void removeProject(IJavaProject project) throws Exception { - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); this.cache.remove(cacheKey); } @@ -252,7 +254,7 @@ public class SpringFactoriesIndexer implements SpringIndexer { if (!outputFolders.stream().anyMatch(out -> path.startsWith(out))) { List generatedSymbols = scanFile(path); - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); String file = new File(new URI(docURI)).getAbsolutePath(); this.cache.update(cacheKey, file, updatedDoc.getLastModified(), generatedSymbols, null); @@ -264,7 +266,7 @@ public class SpringFactoriesIndexer implements SpringIndexer { @Override public void updateFiles(IJavaProject project, DocumentDescriptor[] updatedDocs) throws Exception { - SymbolCacheKey key = getCacheKey(project); + IndexCacheKey key = getCacheKey(project); List outputFolders = IClasspathUtil.getOutputFolders(project.getClasspath()).map(f -> f.toPath()).collect(Collectors.toList()); for (DocumentDescriptor d : updatedDocs) { Path path = Paths.get(URI.create(d.getDocURI())); @@ -281,7 +283,7 @@ public class SpringFactoriesIndexer implements SpringIndexer { @Override public void removeFiles(IJavaProject project, String[] docURIs) throws Exception { - SymbolCacheKey key = getCacheKey(project); + IndexCacheKey key = getCacheKey(project); for (String docUri : docURIs) { String file = new File(new URI(docUri)).getAbsolutePath(); cache.removeFile(key, file); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerJava.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerJava.java index a27b9b013..8d24a6e63 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerJava.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerJava.java @@ -48,6 +48,8 @@ import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.lsp4j.WorkspaceSymbol; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheKey; import org.springframework.ide.vscode.boot.java.annotations.AnnotationHierarchies; import org.springframework.ide.vscode.boot.java.annotations.AnnotationHierarchyAwareLookup; import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation; @@ -80,14 +82,14 @@ public class SpringIndexerJava implements SpringIndexer { private final SymbolHandler symbolHandler; private final AnnotationHierarchyAwareLookup symbolProviders; - private final SymbolCache cache; + private final IndexCache cache; private final JavaProjectFinder projectFinder; private boolean scanTestJavaSources = false; private FileScanListener fileScanListener = null; //used by test code only private final SpringIndexerJavaDependencyTracker dependencyTracker = new SpringIndexerJavaDependencyTracker(); - public SpringIndexerJava(SymbolHandler symbolHandler, AnnotationHierarchyAwareLookup symbolProviders, SymbolCache cache, + public SpringIndexerJava(SymbolHandler symbolHandler, AnnotationHierarchyAwareLookup symbolProviders, IndexCache cache, JavaProjectFinder projectFimder) { this.symbolHandler = symbolHandler; this.symbolProviders = symbolProviders; @@ -124,13 +126,13 @@ public class SpringIndexerJava implements SpringIndexer { @Override public void removeProject(IJavaProject project) throws Exception { - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); this.cache.remove(cacheKey); } @Override public void updateFile(IJavaProject project, DocumentDescriptor updatedDoc, String content) throws Exception { - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); if (updatedDoc != null && shouldProcessDocument(project, updatedDoc.getDocURI()) && isCacheOutdated(cacheKey, updatedDoc.getDocURI(), updatedDoc.getLastModified())) { this.symbolHandler.removeSymbols(project, updatedDoc.getDocURI()); @@ -153,7 +155,7 @@ public class SpringIndexerJava implements SpringIndexer { @Override public void removeFiles(IJavaProject project, String[] docURIs) throws Exception { - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); for (String docURI : docURIs) { String file = new File(new URI(docURI)).getAbsolutePath(); @@ -162,7 +164,7 @@ public class SpringIndexerJava implements SpringIndexer { } private DocumentDescriptor[] filterDocuments(IJavaProject project, DocumentDescriptor[] updatedDocs) { - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); return Arrays.stream(updatedDocs).filter(doc -> shouldProcessDocument(project, doc.getDocURI())) .filter(doc -> isCacheOutdated(cacheKey, doc.getDocURI(), doc.getLastModified())).toArray(DocumentDescriptor[]::new); } @@ -180,7 +182,7 @@ public class SpringIndexerJava implements SpringIndexer { } } - private boolean isCacheOutdated(SymbolCacheKey cacheKey, String docURI, long modifiedTimestamp) { + private boolean isCacheOutdated(IndexCacheKey cacheKey, String docURI, long modifiedTimestamp) { long cachedModificationTImestamp = this.cache.getModificationTimestamp(cacheKey, UriUtil.toFileString(docURI)); return modifiedTimestamp > cachedModificationTImestamp; } @@ -223,7 +225,7 @@ public class SpringIndexerJava implements SpringIndexer { scanAST(context); - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); this.cache.update(cacheKey, file, lastModified, generatedSymbols, context.getDependencies()); // dependencyTracker.dump(); @@ -318,7 +320,7 @@ public class SpringIndexerJava implements SpringIndexer { Bean[] beans = generatedSymbols.stream().filter(cachedSymbol -> cachedSymbol.getBean() != null).map(cachedSymbol -> cachedSymbol.getBean()).toArray(Bean[]::new); symbolHandler.addSymbols(project, symbols, beans); - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); this.cache.update(cacheKey, javaFiles, lastModified, generatedSymbols, dependencies); return scannedTypes; @@ -356,7 +358,7 @@ public class SpringIndexerJava implements SpringIndexer { } private void scanFiles(IJavaProject project, String[] javaFiles) throws Exception { - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); Pair> cached = this.cache.retrieve(cacheKey, javaFiles); CachedSymbol[] symbols; @@ -606,7 +608,7 @@ public class SpringIndexerJava implements SpringIndexer { .toArray(String[]::new); } - private SymbolCacheKey getCacheKey(IJavaProject project) { + private IndexCacheKey getCacheKey(IJavaProject project) { IClasspath classpath = project.getClasspath(); Stream classpathEntries = IClasspathUtil.getAllBinaryRoots(classpath).stream(); @@ -615,7 +617,7 @@ public class SpringIndexerJava implements SpringIndexer { .map(file -> file.getAbsolutePath() + "#" + file.lastModified()) .collect(Collectors.joining(",")); - return new SymbolCacheKey(project.getElementName() + "-java-", DigestUtils.md5Hex(GENERATION + "-" + classpathIdentifier).toUpperCase()); + return new IndexCacheKey(project.getElementName() + "-java-", DigestUtils.md5Hex(GENERATION + "-" + classpathIdentifier).toUpperCase()); } public void setScanTestJavaSources(boolean scanTestJavaSources) { diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXML.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXML.java index 0b389e177..19d25fd4a 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXML.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXML.java @@ -31,6 +31,8 @@ import org.eclipse.lemminx.dom.DOMNode; import org.eclipse.lemminx.dom.DOMParser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheKey; import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation; import org.springframework.ide.vscode.commons.java.IClasspath; import org.springframework.ide.vscode.commons.java.IClasspathUtil; @@ -49,13 +51,13 @@ public class SpringIndexerXML implements SpringIndexer { private final SymbolHandler symbolHandler; private final Map namespaceHandler; - private final SymbolCache cache; + private final IndexCache cache; private final JavaProjectFinder projectFinder; private String[] scanFolders = new String[0]; public SpringIndexerXML(SymbolHandler handler, Map namespaceHandler, - SymbolCache cache, JavaProjectFinder projectFinder) { + IndexCache cache, JavaProjectFinder projectFinder) { this.symbolHandler = handler; this.namespaceHandler = namespaceHandler; this.cache = cache; @@ -104,7 +106,7 @@ public class SpringIndexerXML implements SpringIndexer { log.info("scan xml files for symbols for project: " + project.getElementName() + " - no. of files: " + files.length); - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); CachedSymbol[] symbols = this.cache.retrieveSymbols(cacheKey, files); if (symbols == null) { @@ -135,7 +137,7 @@ public class SpringIndexerXML implements SpringIndexer { @Override public void removeProject(IJavaProject project) throws Exception { - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); this.cache.remove(cacheKey); } @@ -149,7 +151,7 @@ public class SpringIndexerXML implements SpringIndexer { scanFile(project, content, docURI, updatedDoc.getLastModified(), generatedSymbols); - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); String file = new File(new URI(docURI)).getAbsolutePath(); this.cache.update(cacheKey, file, updatedDoc.getLastModified(), generatedSymbols, null); @@ -172,7 +174,7 @@ public class SpringIndexerXML implements SpringIndexer { List generatedSymbols = new ArrayList(); scanFile(project, content, docURI, updatedDoc.getLastModified(), generatedSymbols); - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); String file = new File(new URI(docURI)).getAbsolutePath(); this.cache.update(cacheKey, file, updatedDoc.getLastModified(), generatedSymbols, null); @@ -184,7 +186,7 @@ public class SpringIndexerXML implements SpringIndexer { @Override public void removeFiles(IJavaProject project, String[] docURIs) throws Exception { - SymbolCacheKey cacheKey = getCacheKey(project); + IndexCacheKey cacheKey = getCacheKey(project); for (String docURI : docURIs) { String file = new File(new URI(docURI)).getAbsolutePath(); @@ -267,7 +269,7 @@ public class SpringIndexerXML implements SpringIndexer { return xmlFiles; } - private SymbolCacheKey getCacheKey(IJavaProject project) { + private IndexCacheKey getCacheKey(IJavaProject project) { IClasspath classpath = project.getClasspath(); Stream classpathEntries = IClasspathUtil.getAllBinaryRoots(classpath).stream(); @@ -276,7 +278,7 @@ public class SpringIndexerXML implements SpringIndexer { .map(file -> file.getAbsolutePath() + "#" + file.lastModified()) .collect(Collectors.joining(",")); - return new SymbolCacheKey(project.getElementName() + "-xml-", DigestUtils.md5Hex(classpathIdentifier).toUpperCase()); + return new IndexCacheKey(project.getElementName() + "-xml-", DigestUtils.md5Hex(classpathIdentifier).toUpperCase()); } private void clearIndex() { diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCache.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCache.java deleted file mode 100644 index bad9fad2a..000000000 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SymbolCache.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2019, 2020 Pivotal, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.utils; - -import java.util.List; -import java.util.Set; - -import org.apache.commons.lang3.tuple.Pair; - -import com.google.common.collect.Multimap; - -/** - * @author Martin Lippert - */ -public interface SymbolCache { - - void store(SymbolCacheKey cacheKey, String[] files, List generatedSymbols, Multimap dependencies); - Pair> retrieve(SymbolCacheKey cacheKey, String[] files); - - void update(SymbolCacheKey cacheKey, String file, long lastModified, List generatedSymbols, Set dependencies); - void update(SymbolCacheKey cacheKey, String[] files, long[] lastModified, List generatedSymbols, Multimap dependencies); - - void remove(SymbolCacheKey cacheKey); - void removeFile(SymbolCacheKey symbolCacheKey, String file); - - default CachedSymbol[] retrieveSymbols(SymbolCacheKey cacheKey, String[] files) { - Pair> r = retrieve(cacheKey, files); - return r!=null ? r.getLeft() : null; - } - - long getModificationTimestamp(SymbolCacheKey cacheKey, String docURI); - -} diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/HoverTestConf.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/HoverTestConf.java index b5ca29598..e2ce13e7f 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/HoverTestConf.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/HoverTestConf.java @@ -15,10 +15,10 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.ide.vscode.boot.app.BootLanguageServerParams; import org.springframework.ide.vscode.boot.editor.harness.PropertyIndexHarness; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; 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.SymbolCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid; import org.springframework.ide.vscode.boot.metadata.ValueProviderRegistry; import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; @@ -29,8 +29,8 @@ import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness; @Import(AdHocPropertyHarnessTestConf.class) public class HoverTestConf { - @Bean SymbolCache symbolCache() { - return new SymbolCacheVoid(); + @Bean IndexCache symbolCache() { + return new IndexCacheVoid(); } @Bean PropertyIndexHarness indexHarness(ValueProviderRegistry valueProviders) { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/PropertyEditorTestConf.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/PropertyEditorTestConf.java index 11b524a28..576febc6c 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/PropertyEditorTestConf.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/PropertyEditorTestConf.java @@ -17,12 +17,12 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.ide.vscode.boot.app.BootLanguageServerParams; import org.springframework.ide.vscode.boot.editor.harness.PropertyIndexHarness; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; import org.springframework.ide.vscode.boot.java.links.JavaDocumentUriProvider; 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.CompilationUnitCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid; import org.springframework.ide.vscode.boot.metadata.ValueProviderRegistry; import org.springframework.ide.vscode.boot.metadata.types.TypeUtil; import org.springframework.ide.vscode.boot.metadata.types.TypeUtilProvider; @@ -38,8 +38,8 @@ import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness; @Import(AdHocPropertyHarnessTestConf.class) public class PropertyEditorTestConf { - @Bean SymbolCache symbolCache() { - return new SymbolCacheVoid(); + @Bean IndexCache symbolCache() { + return new IndexCacheVoid(); } @Bean PropertyIndexHarness indexHarness(ValueProviderRegistry valueProviders) { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/SourceLinksTestConf.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/SourceLinksTestConf.java index 2ce2ec818..fe03ede6c 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/SourceLinksTestConf.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/SourceLinksTestConf.java @@ -15,11 +15,11 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.ide.vscode.boot.app.BootLanguageServerParams; import org.springframework.ide.vscode.boot.editor.harness.PropertyIndexHarness; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; import org.springframework.ide.vscode.boot.java.links.SourceLinks; import org.springframework.ide.vscode.boot.java.links.VSCodeSourceLinks; import org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid; import org.springframework.ide.vscode.boot.java.utils.test.MockProjectObserver; import org.springframework.ide.vscode.boot.metadata.DefaultSpringPropertyIndexProvider; import org.springframework.ide.vscode.boot.metadata.ValueProviderRegistry; @@ -35,8 +35,8 @@ import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness; @Import(AdHocPropertyHarnessTestConf.class) public class SourceLinksTestConf { - @Bean public SymbolCache symbolCache() { - return new SymbolCacheVoid(); + @Bean public IndexCache symbolCache() { + return new IndexCacheVoid(); } @Bean PropertyIndexHarness indexHarness(ValueProviderRegistry valueProviders) { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/SymbolProviderTestConf.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/SymbolProviderTestConf.java index 486eae3c9..2df55f009 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/SymbolProviderTestConf.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/SymbolProviderTestConf.java @@ -15,10 +15,10 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.ide.vscode.boot.app.BootLanguageServerParams; import org.springframework.ide.vscode.boot.editor.harness.PropertyIndexHarness; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; 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.SymbolCache; -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; @@ -30,8 +30,8 @@ import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness; @Import(AdHocPropertyHarnessTestConf.class) public class SymbolProviderTestConf { - @Bean public SymbolCache symbolCache() { - return new SymbolCacheVoid(); + @Bean public IndexCache symbolCache() { + return new IndexCacheVoid(); } @Bean PropertyIndexHarness indexHarness(ValueProviderRegistry valueProviders) { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/XmlBeansTestConf.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/XmlBeansTestConf.java index f603b792b..b56eae8d0 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/XmlBeansTestConf.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/bootiful/XmlBeansTestConf.java @@ -15,12 +15,12 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.ide.vscode.boot.app.BootLanguageServerParams; import org.springframework.ide.vscode.boot.editor.harness.PropertyIndexHarness; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; import org.springframework.ide.vscode.boot.java.links.JavaDocumentUriProvider; 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.CompilationUnitCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid; import org.springframework.ide.vscode.boot.java.utils.test.MockProjectObserver; import org.springframework.ide.vscode.boot.metadata.DefaultSpringPropertyIndexProvider; import org.springframework.ide.vscode.boot.metadata.ValueProviderRegistry; @@ -34,8 +34,8 @@ import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness; @Import(AdHocPropertyHarnessTestConf.class) public class XmlBeansTestConf { - @Bean public SymbolCache symbolCache() { - return new SymbolCacheVoid(); + @Bean public IndexCache symbolCache() { + return new IndexCacheVoid(); } @Bean PropertyIndexHarness indexHarness(ValueProviderRegistry valueProviders) { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheKeyTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheKeyTest.java similarity index 70% rename from headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheKeyTest.java rename to headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheKeyTest.java index 72709e96e..a3e83cf80 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheKeyTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheKeyTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2019 Pivotal, Inc. + * Copyright (c) 2019, 2023 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -8,22 +8,22 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.utils.test; +package org.springframework.ide.vscode.boot.index.cache.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; import org.junit.jupiter.api.Test; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheKey; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheKey; /** * @author Martin Lippert */ -public class SymbolCacheKeyTest { +public class IndexCacheKeyTest { @Test void testCacheKey() { - SymbolCacheKey key = new SymbolCacheKey("primary", "version"); + IndexCacheKey key = new IndexCacheKey("primary", "version"); assertEquals("primary", key.getPrimaryIdentifier()); assertEquals("version", key.getVersion()); @@ -32,33 +32,33 @@ public class SymbolCacheKeyTest { @Test void testCacheKeyParsingFromFileName() { - SymbolCacheKey key = SymbolCacheKey.parse("primary-version.json"); + IndexCacheKey key = IndexCacheKey.parse("primary-version.json"); assertEquals("primary", key.getPrimaryIdentifier()); assertEquals("version", key.getVersion()); - key = SymbolCacheKey.parse("primary-name-with-separator-123ABC.json"); + key = IndexCacheKey.parse("primary-name-with-separator-123ABC.json"); assertEquals("primary-name-with-separator", key.getPrimaryIdentifier()); assertEquals("123ABC", key.getVersion()); } @Test void testCacheKeyParsingWithoutFileExtension() { - SymbolCacheKey key = SymbolCacheKey.parse("primary-version"); + IndexCacheKey key = IndexCacheKey.parse("primary-version"); assertEquals("primary", key.getPrimaryIdentifier()); assertEquals("version", key.getVersion()); - key = SymbolCacheKey.parse("primary-name-with-separator-123ABC"); + key = IndexCacheKey.parse("primary-name-with-separator-123ABC"); assertEquals("primary-name-with-separator", key.getPrimaryIdentifier()); assertEquals("123ABC", key.getVersion()); } @Test void testCacheKeyEquals() { - SymbolCacheKey key1 = new SymbolCacheKey("primary", "1"); - SymbolCacheKey key2 = new SymbolCacheKey("primary", "1"); + IndexCacheKey key1 = new IndexCacheKey("primary", "1"); + IndexCacheKey key2 = new IndexCacheKey("primary", "1"); - SymbolCacheKey key3 = new SymbolCacheKey("primary", "2"); - SymbolCacheKey key4 = new SymbolCacheKey("secondary", "1"); + IndexCacheKey key3 = new IndexCacheKey("primary", "2"); + IndexCacheKey key4 = new IndexCacheKey("secondary", "1"); assertEquals(key1, key1); assertEquals(key2, key2); diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheOnDiscTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheOnDiscTest.java similarity index 85% rename from headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheOnDiscTest.java rename to headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheOnDiscTest.java index 5188b6a4c..b5935bde1 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheOnDiscTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheOnDiscTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2019, 2020 Pivotal, Inc. + * Copyright (c) 2019, 2023 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -8,7 +8,7 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.utils.test; +package org.springframework.ide.vscode.boot.index.cache.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -36,12 +36,12 @@ import org.eclipse.lsp4j.jsonrpc.messages.Either; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheKey; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDisc; import org.springframework.ide.vscode.boot.java.handlers.EnhancedSymbolInformation; import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation; import org.springframework.ide.vscode.boot.java.requestmapping.WebfluxElementsInformation; import org.springframework.ide.vscode.boot.java.utils.CachedSymbol; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheKey; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheOnDisc; import org.springframework.ide.vscode.commons.util.UriUtil; import com.google.common.collect.ImmutableList; @@ -49,15 +49,15 @@ import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; -public class SymbolCacheOnDiscTest { +public class IndexCacheOnDiscTest { private Path tempDir; - private SymbolCacheOnDisc cache; + private IndexCacheOnDisc cache; @BeforeEach public void setup() throws Exception { tempDir = Files.createTempDirectory("cachetest"); - cache = new SymbolCacheOnDisc(tempDir.toFile()); + cache = new IndexCacheOnDisc(tempDir.toFile()); } @AfterEach @@ -67,7 +67,7 @@ public class SymbolCacheOnDiscTest { @Test void testEmptyCache() throws Exception { - Pair> result = cache.retrieve(new SymbolCacheKey("something", "0"), new String[0]); + Pair> result = cache.retrieve(new IndexCacheKey("something", "0"), new String[0]); assertNull(result); } @@ -89,13 +89,13 @@ public class SymbolCacheOnDiscTest { EnhancedSymbolInformation enhancedSymbol = new EnhancedSymbolInformation(symbol, null); generatedSymbols.add(new CachedSymbol("", timeFile1.toMillis(), enhancedSymbol, null)); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols, ImmutableMultimap.of( + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols, ImmutableMultimap.of( file1.toString(), "file1dep1", file2.toString(), "file2dep1", file2.toString(), "file2dep2" )); - Pair> result = cache.retrieve(new SymbolCacheKey("somekey", "1"), files); + Pair> result = cache.retrieve(new IndexCacheKey("somekey", "1"), files); CachedSymbol[] cachedSymbols = result.getLeft(); assertNotNull(cachedSymbols); @@ -111,8 +111,8 @@ public class SymbolCacheOnDiscTest { assertEquals(dependencies.get(file1.toString()), ImmutableSet.of("file1dep1")); assertEquals(dependencies.get(file2.toString()), ImmutableSet.of("file2dep1", "file2dep2")); - assertEquals(timeFile1.toMillis(), cache.getModificationTimestamp(new SymbolCacheKey("somekey", "1"), file1.toString())); - assertEquals(0, cache.getModificationTimestamp(new SymbolCacheKey("somekey", "1"), "random-non-existing-file")); + assertEquals(timeFile1.toMillis(), cache.getModificationTimestamp(new IndexCacheKey("somekey", "1"), file1.toString())); + assertEquals(0, cache.getModificationTimestamp(new IndexCacheKey("somekey", "1"), "random-non-existing-file")); assertNull(cachedSymbols[0].getBean()); } @@ -135,9 +135,9 @@ public class SymbolCacheOnDiscTest { EnhancedSymbolInformation enhancedSymbol = new EnhancedSymbolInformation(symbol, null); generatedSymbols.add(new CachedSymbol("", timeFile1.toMillis(), enhancedSymbol, null)); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols, null); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols, null); - Pair> result = cache.retrieve(new SymbolCacheKey("otherkey", "1"), files); + Pair> result = cache.retrieve(new IndexCacheKey("otherkey", "1"), files); assertNull(result); } @@ -159,14 +159,14 @@ public class SymbolCacheOnDiscTest { EnhancedSymbolInformation enhancedSymbol = new EnhancedSymbolInformation(symbol, null); generatedSymbols.add(new CachedSymbol("", timeFile1.toMillis(), enhancedSymbol, null)); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols, ImmutableMultimap.of( + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols, ImmutableMultimap.of( file1.toString(), "file1dep", file2.toString(), "file2dep" )); assertTrue(file1.toFile().setLastModified(timeFile1.toMillis() + 1000)); - Pair> result = cache.retrieve(new SymbolCacheKey("somekey", "1"), files); + Pair> result = cache.retrieve(new IndexCacheKey("somekey", "1"), files); assertNull(result); } @@ -181,10 +181,10 @@ public class SymbolCacheOnDiscTest { Files.createFile(file3); String[] files = {file1.toString(), file2.toString()}; - cache.store(new SymbolCacheKey("somekey", "1"), files, new ArrayList<>(), null); + cache.store(new IndexCacheKey("somekey", "1"), files, new ArrayList<>(), null); String[] moreFiles = {file1.toString(), file2.toString(), file3.toString()}; - assertNull(cache.retrieve(new SymbolCacheKey("somekey", "1"), moreFiles)); + assertNull(cache.retrieve(new IndexCacheKey("somekey", "1"), moreFiles)); } @Test @@ -198,19 +198,19 @@ public class SymbolCacheOnDiscTest { Files.createFile(file3); String[] files = {file1.toString(), file2.toString(), file3.toString()}; - cache.store(new SymbolCacheKey("somekey", "1"), files, new ArrayList<>(), null); + cache.store(new IndexCacheKey("somekey", "1"), files, new ArrayList<>(), null); String[] fewerFiles = {file1.toString(), file2.toString()}; - assertNull(cache.retrieve(new SymbolCacheKey("somekey", "1"), fewerFiles)); + assertNull(cache.retrieve(new IndexCacheKey("somekey", "1"), fewerFiles)); } @Test void testDeleteOldCacheFileIfNewOneIsStored() throws Exception { - SymbolCacheKey key1 = new SymbolCacheKey("somekey", "1"); + IndexCacheKey key1 = new IndexCacheKey("somekey", "1"); cache.store(key1, new String[0], new ArrayList<>(), null); assertTrue(Files.exists(tempDir.resolve(Paths.get(key1.toString() + ".json")))); - SymbolCacheKey key2 = new SymbolCacheKey("somekey", "2"); + IndexCacheKey key2 = new IndexCacheKey("somekey", "2"); cache.store(key2, new String[0], new ArrayList<>(), null); assertTrue(Files.exists(tempDir.resolve(Paths.get(key2.toString() + ".json")))); assertFalse(Files.exists(tempDir.resolve(Paths.get(key1.toString() + ".json")))); @@ -233,9 +233,9 @@ public class SymbolCacheOnDiscTest { generatedSymbols.add(new CachedSymbol(doc1URI, timeFile1.toMillis(), enhancedSymbol, null)); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols, null); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols, null); - CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new SymbolCacheKey("somekey", "1"), files); + CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new IndexCacheKey("somekey", "1"), files); assertNotNull(cachedSymbols); assertEquals(1, cachedSymbols.length); @@ -270,7 +270,7 @@ public class SymbolCacheOnDiscTest { EnhancedSymbolInformation enhancedSymbol1 = new EnhancedSymbolInformation(symbol1, null); generatedSymbols1.add(new CachedSymbol(doc1URI, timeFile1.toMillis(), enhancedSymbol1, null)); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols1, null); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols1, null); List generatedSymbols2 = new ArrayList<>(); symbol1 = new WorkspaceSymbol("symbol1", SymbolKind.Field, Either.forLeft(new Location(doc1URI, new Range(new Position(3, 10), new Position(3, 20))))); @@ -283,13 +283,13 @@ public class SymbolCacheOnDiscTest { generatedSymbols2.add(new CachedSymbol(doc1URI, timeFile1.toMillis() + 2000, enhancedSymbol2, null)); assertTrue(file1.toFile().setLastModified(timeFile1.toMillis() + 2000)); - cache.update(new SymbolCacheKey("somekey", "1"), file1.toAbsolutePath().toString(), timeFile1.toMillis() + 2000, generatedSymbols2, null); + cache.update(new IndexCacheKey("somekey", "1"), file1.toAbsolutePath().toString(), timeFile1.toMillis() + 2000, generatedSymbols2, null); - CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new SymbolCacheKey("somekey", "1"), files); + CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new IndexCacheKey("somekey", "1"), files); assertNotNull(cachedSymbols); assertEquals(2, cachedSymbols.length); - assertEquals(timeFile1.toMillis() + 2000, cache.getModificationTimestamp(new SymbolCacheKey("somekey", "1"), file1.toString())); + assertEquals(timeFile1.toMillis() + 2000, cache.getModificationTimestamp(new IndexCacheKey("somekey", "1"), file1.toString())); } @Test @@ -328,7 +328,7 @@ public class SymbolCacheOnDiscTest { generatedSymbols.add(new CachedSymbol(doc3URI, timeFile3.toMillis(), enhancedSymbol3, null)); // store original version of the symbols to the cache - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols, null); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols, null); // create updated and new symbols @@ -353,10 +353,10 @@ public class SymbolCacheOnDiscTest { long[] updatedModificationTimestamps = new long[]{timeFile1.toMillis() + 2000, timeFile2.toMillis() + 3000}; // update multiple files in the cache - cache.update(new SymbolCacheKey("somekey", "1"), updatedFiles, updatedModificationTimestamps, updatedSymbols, null); + cache.update(new IndexCacheKey("somekey", "1"), updatedFiles, updatedModificationTimestamps, updatedSymbols, null); // double check whether all changes got stored and retrieved correctly - CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new SymbolCacheKey("somekey", "1"), files); + CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new IndexCacheKey("somekey", "1"), files); assertNotNull(cachedSymbols); assertEquals(4, cachedSymbols.length); @@ -365,9 +365,9 @@ public class SymbolCacheOnDiscTest { assertSymbol(updatedEnhancedSymbol2, cachedSymbols); assertSymbol(enhancedSymbol3, cachedSymbols); - assertEquals(timeFile1.toMillis() + 2000, cache.getModificationTimestamp(new SymbolCacheKey("somekey", "1"), file1.toString())); - assertEquals(timeFile2.toMillis() + 3000, cache.getModificationTimestamp(new SymbolCacheKey("somekey", "1"), file2.toString())); - assertEquals(timeFile3.toMillis(), cache.getModificationTimestamp(new SymbolCacheKey("somekey", "1"), file3.toString())); + assertEquals(timeFile1.toMillis() + 2000, cache.getModificationTimestamp(new IndexCacheKey("somekey", "1"), file1.toString())); + assertEquals(timeFile2.toMillis() + 3000, cache.getModificationTimestamp(new IndexCacheKey("somekey", "1"), file2.toString())); + assertEquals(timeFile3.toMillis(), cache.getModificationTimestamp(new IndexCacheKey("somekey", "1"), file3.toString())); } private void assertSymbol(EnhancedSymbolInformation enhancedSymbol, CachedSymbol[] cachedSymbols) { @@ -395,13 +395,13 @@ public class SymbolCacheOnDiscTest { List generatedSymbols = ImmutableList.of(); Multimap dependencies = ImmutableMultimap.of(file1.toString(), "dep1"); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols, dependencies); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols, dependencies); assertTrue(file1.toFile().setLastModified(timeFile1.toMillis() + 2000)); Set dependencies2 = ImmutableSet.of("dep1", "dep2"); - cache.update(new SymbolCacheKey("somekey", "1"), file1.toAbsolutePath().toString(), timeFile1.toMillis() + 2000, generatedSymbols, dependencies2); + cache.update(new IndexCacheKey("somekey", "1"), file1.toAbsolutePath().toString(), timeFile1.toMillis() + 2000, generatedSymbols, dependencies2); - Pair> result = cache.retrieve(new SymbolCacheKey("somekey", "1"), files); + Pair> result = cache.retrieve(new IndexCacheKey("somekey", "1"), files); assertNotNull(result); assertEquals(ImmutableSet.of("dep1", "dep2"), result.getRight().get(file1.toString())); } @@ -422,14 +422,14 @@ public class SymbolCacheOnDiscTest { EnhancedSymbolInformation enhancedSymbol1 = new EnhancedSymbolInformation(symbol1, null); generatedSymbols1.add(new CachedSymbol(doc1URI, timeFile1.toMillis(), enhancedSymbol1, null)); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols1, null); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols1, null); List generatedSymbols2 = new ArrayList<>(); assertTrue(file1.toFile().setLastModified(timeFile1.toMillis() + 2000)); - cache.update(new SymbolCacheKey("somekey", "1"), file1.toAbsolutePath().toString(), timeFile1.toMillis() + 2000, generatedSymbols2, null); + cache.update(new IndexCacheKey("somekey", "1"), file1.toAbsolutePath().toString(), timeFile1.toMillis() + 2000, generatedSymbols2, null); - CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new SymbolCacheKey("somekey", "1"), files); + CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new IndexCacheKey("somekey", "1"), files); assertNotNull(cachedSymbols); assertEquals(0, cachedSymbols.length); } @@ -450,15 +450,15 @@ public class SymbolCacheOnDiscTest { file1.toString(), "dep2" ); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols1, dependencies1); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols1, dependencies1); List generatedSymbols2 = new ArrayList<>(); assertTrue(file1.toFile().setLastModified(timeFile1.toMillis() + 2000)); Set dependencies2 = ImmutableSet.of("dep2"); - cache.update(new SymbolCacheKey("somekey", "1"), file1.toAbsolutePath().toString(), timeFile1.toMillis() + 2000, generatedSymbols2, dependencies2); + cache.update(new IndexCacheKey("somekey", "1"), file1.toAbsolutePath().toString(), timeFile1.toMillis() + 2000, generatedSymbols2, dependencies2); - Pair> result = cache.retrieve(new SymbolCacheKey("somekey", "1"), files); + Pair> result = cache.retrieve(new IndexCacheKey("somekey", "1"), files); assertNotNull(result); assertEquals(ImmutableSet.of("dep2"), result.getRight().get(file1.toString())); } @@ -483,7 +483,7 @@ public class SymbolCacheOnDiscTest { EnhancedSymbolInformation enhancedSymbol1 = new EnhancedSymbolInformation(symbol1, null); generatedSymbols1.add(new CachedSymbol(doc1URI, timeFile1.toMillis(), enhancedSymbol1, null)); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols1, null); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols1, null); List generatedSymbols2 = new ArrayList<>(); WorkspaceSymbol symbol2 = new WorkspaceSymbol("symbol2", SymbolKind.Interface, Either.forLeft(new Location(doc2URI, new Range(new Position(5, 5), new Position(5, 10))))); @@ -491,9 +491,9 @@ public class SymbolCacheOnDiscTest { generatedSymbols2.add(new CachedSymbol(doc2URI, timeFile2.toMillis(), enhancedSymbol2, null)); - cache.update(new SymbolCacheKey("somekey", "1"), file2.toString(), timeFile2.toMillis(), generatedSymbols2, null); + cache.update(new IndexCacheKey("somekey", "1"), file2.toString(), timeFile2.toMillis(), generatedSymbols2, null); - CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new SymbolCacheKey("somekey", "1"), new String[]{file1.toString(), file2.toString()}); + CachedSymbol[] cachedSymbols = cache.retrieveSymbols(new IndexCacheKey("somekey", "1"), new String[]{file1.toString(), file2.toString()}); assertNotNull(cachedSymbols); assertEquals(2, cachedSymbols.length); } @@ -513,12 +513,12 @@ public class SymbolCacheOnDiscTest { Multimap dependencies1 = ImmutableMultimap.of( file1.toString(), "dep1" ); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols1, dependencies1); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols1, dependencies1); Set dependencies2 = ImmutableSet.of("dep2"); - cache.update(new SymbolCacheKey("somekey", "1"), file2.toString(), timeFile2.toMillis(), generatedSymbols1, dependencies2); + cache.update(new IndexCacheKey("somekey", "1"), file2.toString(), timeFile2.toMillis(), generatedSymbols1, dependencies2); - Pair> result = cache.retrieve(new SymbolCacheKey("somekey", "1"), new String[]{file1.toString(), file2.toString()}); + Pair> result = cache.retrieve(new IndexCacheKey("somekey", "1"), new String[]{file1.toString(), file2.toString()}); assertNotNull(result); assertEquals(ImmutableSet.of("dep2"), result.getRight().get(file2.toString())); assertEquals(ImmutableSet.of("dep1"), result.getRight().get(file1.toString())); @@ -526,7 +526,7 @@ public class SymbolCacheOnDiscTest { @Test void testProjectDeleted() throws Exception { - SymbolCacheKey key1 = new SymbolCacheKey("somekey", "1"); + IndexCacheKey key1 = new IndexCacheKey("somekey", "1"); cache.store(key1, new String[0], new ArrayList<>(), null); assertTrue(Files.exists(tempDir.resolve(Paths.get(key1.toString() + ".json")))); @@ -564,11 +564,11 @@ public class SymbolCacheOnDiscTest { file1.toString(), "dep1", file2.toString(), "dep2" ); - cache.store(new SymbolCacheKey("somekey", "1"), files, generatedSymbols, dependencies); - cache.removeFile(new SymbolCacheKey("somekey", "1"), file1.toAbsolutePath().toString()); + cache.store(new IndexCacheKey("somekey", "1"), files, generatedSymbols, dependencies); + cache.removeFile(new IndexCacheKey("somekey", "1"), file1.toAbsolutePath().toString()); files = new String[]{file2.toAbsolutePath().toString()}; - Pair> result = cache.retrieve(new SymbolCacheKey("somekey", "1"), files); + Pair> result = cache.retrieve(new IndexCacheKey("somekey", "1"), files); CachedSymbol[] cachedSymbols = result.getLeft(); assertNotNull(result); assertEquals(1, cachedSymbols.length); diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheTimestampsOnly.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheTimestampsOnly.java similarity index 67% rename from headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheTimestampsOnly.java rename to headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheTimestampsOnly.java index 362839e1b..44ccd2b75 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SymbolCacheTimestampsOnly.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/cache/test/IndexCacheTimestampsOnly.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2020 Pivotal, Inc. + * Copyright (c) 2020, 2023 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -8,7 +8,7 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.utils.test; +package org.springframework.ide.vscode.boot.index.cache.test; import java.io.File; import java.io.IOException; @@ -23,25 +23,25 @@ import java.util.TreeMap; import java.util.stream.Collectors; import org.apache.commons.lang3.tuple.Pair; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheKey; import org.springframework.ide.vscode.boot.java.utils.CachedSymbol; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheKey; import com.google.common.collect.Multimap; /** * @author Martin Lippert */ -public class SymbolCacheTimestampsOnly implements SymbolCache { +public class IndexCacheTimestampsOnly implements IndexCache { - private Map> timestampCache; + private Map> timestampCache; - public SymbolCacheTimestampsOnly() { + public IndexCacheTimestampsOnly() { this.timestampCache = new HashMap<>(); } @Override - public void store(SymbolCacheKey cacheKey, String[] files, List generatedSymbols, Multimap dependencies) { + public void store(IndexCacheKey cacheKey, String[] files, List generatedSymbols, Multimap dependencies) { SortedMap timestampedFiles = new TreeMap<>(); timestampedFiles = Arrays.stream(files) @@ -58,18 +58,18 @@ public class SymbolCacheTimestampsOnly implements SymbolCache { } @Override - public Pair> retrieve(SymbolCacheKey cacheKey, String[] files) { + public Pair> retrieve(IndexCacheKey cacheKey, String[] files) { return null; } @Override - public void update(SymbolCacheKey cacheKey, String file, long lastModified, List generatedSymbols, Set dependencies) { + public void update(IndexCacheKey cacheKey, String file, long lastModified, List generatedSymbols, Set dependencies) { Map timestampMap = timestampCache.get(cacheKey); timestampMap.put(file, lastModified); } @Override - public void update(SymbolCacheKey cacheKey, String[] files, long[] lastModified, List generatedSymbols, Multimap dependencies) { + public void update(IndexCacheKey cacheKey, String[] files, long[] lastModified, List generatedSymbols, Multimap dependencies) { Map timestampMap = timestampCache.get(cacheKey); for (int i = 0; i < files.length; i++) { @@ -78,15 +78,15 @@ public class SymbolCacheTimestampsOnly implements SymbolCache { } @Override - public void remove(SymbolCacheKey cacheKey) { + public void remove(IndexCacheKey cacheKey) { } @Override - public void removeFile(SymbolCacheKey symbolCacheKey, String file) { + public void removeFile(IndexCacheKey symbolCacheKey, String file) { } @Override - public long getModificationTimestamp(SymbolCacheKey cacheKey, String file) { + public long getModificationTimestamp(IndexCacheKey cacheKey, String file) { Map timestampMap = timestampCache.get(cacheKey); if (timestampMap != null) { Long timestamp = timestampMap.get(file); diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringIndexViaLSPMethodTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringIndexViaLSPMethodTest.java similarity index 98% rename from headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringIndexViaLSPMethodTest.java rename to headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringIndexViaLSPMethodTest.java index 12498dde5..7a277c1a0 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringIndexViaLSPMethodTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringIndexViaLSPMethodTest.java @@ -8,7 +8,7 @@ * Contributors: * VMware, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.metamodel.test; +package org.springframework.ide.vscode.boot.index.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexTest.java similarity index 98% rename from headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexTest.java rename to headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexTest.java index 411a3e623..99a67e37f 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexTest.java @@ -8,7 +8,7 @@ * Contributors: * VMware, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.metamodel.test; +package org.springframework.ide.vscode.boot.index.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -25,7 +25,7 @@ import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.Range; import org.junit.jupiter.api.Test; import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheOnDisc; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDisc; import org.springframework.ide.vscode.commons.protocol.spring.Bean; import org.springframework.ide.vscode.commons.protocol.spring.DefaultValues; import org.springframework.ide.vscode.commons.protocol.spring.InjectionPoint; @@ -224,7 +224,7 @@ public class SpringMetamodelIndexTest { Bean bean1 = new Bean("beanName1", "beanType", locationForDoc1, new InjectionPoint[] {point1, point2}, new String[] {"supertype1", "supertype2"}, emptyAnnotations); String serialized = bean1.toString(); - Gson gson = SymbolCacheOnDisc.createGson(); + Gson gson = IndexCacheOnDisc.createGson(); Bean deserializedBean = gson.fromJson(serialized, Bean.class); assertEquals("beanName1", deserializedBean.getName()); @@ -252,7 +252,7 @@ public class SpringMetamodelIndexTest { Bean bean1 = new Bean("beanName1", "beanType", locationForDoc1, emptyInjectionPoints, emptySupertypes, emptyAnnotations); String serialized = bean1.toString(); - Gson gson = SymbolCacheOnDisc.createGson(); + Gson gson = IndexCacheOnDisc.createGson(); Bean deserializedBean = gson.fromJson(serialized, Bean.class); assertEquals("beanName1", deserializedBean.getName()); diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexerBeansTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexerBeansTest.java similarity index 99% rename from headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexerBeansTest.java rename to headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexerBeansTest.java index 46b566357..fd4a5af9c 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexerBeansTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexerBeansTest.java @@ -8,7 +8,7 @@ * Contributors: * VMware, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.metamodel.test; +package org.springframework.ide.vscode.boot.index.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexingTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexingTest.java similarity index 99% rename from headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexingTest.java rename to headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexingTest.java index 49655027a..3deb66d98 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/metamodel/test/SpringMetamodelIndexingTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/index/test/SpringMetamodelIndexingTest.java @@ -8,7 +8,7 @@ * Contributors: * VMware, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.metamodel.test; +package org.springframework.ide.vscode.boot.index.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java index 05d68dacf..eae4b291b 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java @@ -32,12 +32,12 @@ import org.springframework.ide.vscode.boot.app.BootLanguageServerParams; import org.springframework.ide.vscode.boot.bootiful.AdHocPropertyHarnessTestConf; import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest; import org.springframework.ide.vscode.boot.editor.harness.PropertyIndexHarness; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; 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.CompilationUnitCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid; import org.springframework.ide.vscode.boot.metadata.ValueProviderRegistry; import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; @@ -73,8 +73,8 @@ public class CompilationUnitCacheTest { @Configuration static class TestConf { - @Bean SymbolCache symbolCache() { - return new SymbolCacheVoid(); + @Bean IndexCache symbolCache() { + return new IndexCacheVoid(); } @Bean PropertyIndexHarness indexHarness(ValueProviderRegistry valueProviders) { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerMultipleFilesTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerMultipleFilesTest.java index e0be7e47a..8e165a556 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerMultipleFilesTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerMultipleFilesTest.java @@ -33,7 +33,8 @@ import org.springframework.context.annotation.Import; import org.springframework.ide.vscode.boot.app.SpringSymbolIndex; import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest; import org.springframework.ide.vscode.boot.bootiful.SymbolProviderTestConf; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.test.IndexCacheTimestampsOnly; import org.springframework.ide.vscode.boot.java.utils.SymbolIndexConfig; import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder; import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness; @@ -53,8 +54,8 @@ public class SpringIndexerMultipleFilesTest { // in order to check the java symbol indexer feature which avoid scanning the // same file again even if the timestamp hasn't changed public static class TimestampingAwareCacheConfig extends SymbolProviderTestConf { - @Bean public SymbolCache symbolCache() { - return new SymbolCacheTimestampsOnly(); + @Bean public IndexCache symbolCache() { + return new IndexCacheTimestampsOnly(); } } diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/ValueCompletionTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/ValueCompletionTest.java index bf6b21649..733348789 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/ValueCompletionTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/ValueCompletionTest.java @@ -35,11 +35,11 @@ import org.springframework.ide.vscode.boot.bootiful.AdHocPropertyHarnessTestConf import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest; import org.springframework.ide.vscode.boot.editor.harness.AdHocPropertyHarness; import org.springframework.ide.vscode.boot.editor.harness.PropertyIndexHarness; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; 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.CompilationUnitCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid; import org.springframework.ide.vscode.boot.java.value.ValueCompletionProcessor; import org.springframework.ide.vscode.boot.metadata.ValueProviderRegistry; import org.springframework.ide.vscode.commons.java.IJavaProject; @@ -117,8 +117,8 @@ public class ValueCompletionTest { ); } - @Bean SymbolCache symbolCache() { - return new SymbolCacheVoid(); + @Bean IndexCache symbolCache() { + return new IndexCacheVoid(); } @Bean SourceLinks sourceLinks(SimpleTextDocumentService documents, CompilationUnitCache cuCache) { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/ValueSpelExpressionValidationTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/ValueSpelExpressionValidationTest.java index 46ec5f24a..d583b8a1e 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/ValueSpelExpressionValidationTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/value/test/ValueSpelExpressionValidationTest.java @@ -40,14 +40,14 @@ import org.springframework.ide.vscode.boot.app.BootLanguageServerParams; import org.springframework.ide.vscode.boot.bootiful.AdHocPropertyHarnessTestConf; import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest; import org.springframework.ide.vscode.boot.editor.harness.PropertyIndexHarness; +import org.springframework.ide.vscode.boot.index.cache.IndexCache; +import org.springframework.ide.vscode.boot.index.cache.IndexCacheVoid; import org.springframework.ide.vscode.boot.java.handlers.BootJavaReconcileEngine; 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.reconcilers.JavaReconciler; import org.springframework.ide.vscode.boot.java.reconcilers.JdtReconciler; import org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCache; -import org.springframework.ide.vscode.boot.java.utils.SymbolCacheVoid; import org.springframework.ide.vscode.boot.metadata.ValueProviderRegistry; import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder; @@ -129,8 +129,8 @@ public class ValueSpelExpressionValidationTest { ); } - @Bean SymbolCache symbolCache() { - return new SymbolCacheVoid(); + @Bean IndexCache symbolCache() { + return new IndexCacheVoid(); } @Bean SourceLinks sourceLinks(SimpleTextDocumentService documents, CompilationUnitCache cuCache) {