diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons.test/src/org/springframework/tooling/ls/eclipse/commons/test/JavaLangugeClientTest.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons.test/src/org/springframework/tooling/ls/eclipse/commons/test/JavaLangugeClientTest.java index 1fb9cfd4f..36f574dd6 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons.test/src/org/springframework/tooling/ls/eclipse/commons/test/JavaLangugeClientTest.java +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons.test/src/org/springframework/tooling/ls/eclipse/commons/test/JavaLangugeClientTest.java @@ -110,6 +110,15 @@ public class JavaLangugeClientTest { assertEquals("io.netty.util.Mapping", closeMatches.get(0).getFqName()); } + @Test + public void fuzzyFindAllTypesExcludingSysLibs() throws Exception { + List data = client + .javaSearchTypes(new JavaSearchParams(project.getLocationURI().toString(), "", true, false)) + .get(1000, TimeUnit.SECONDS); + assertNotNull(data); + assertTrue(data.size() > 10000); + } + @Test public void searchPackagesIncludingSysLibs() throws Exception { List packages = client.javaSearchPackages(new JavaSearchParams(project.getLocationURI().toString(), "java.lang", true, true)).get(30, TimeUnit.SECONDS); @@ -124,6 +133,12 @@ public class JavaLangugeClientTest { assertTrue(packages.contains("org.test")); } + @Test + public void searchAllPackagesExcludingSysLibs() throws Exception { + List packages = client.javaSearchPackages(new JavaSearchParams(project.getLocationURI().toString(), "", true, false)).get(30, TimeUnit.SECONDS); + assertTrue(packages.size() > 1000); + } + @Test public void map_Subtypes() throws Exception { List data = client diff --git a/headless-services/commons/commons-lsp-extensions/src/main/java/org/springframework/ide/vscode/commons/protocol/STS4LanguageClient.java b/headless-services/commons/commons-lsp-extensions/src/main/java/org/springframework/ide/vscode/commons/protocol/STS4LanguageClient.java index 4c9e4ddeb..9cbc6937e 100644 --- a/headless-services/commons/commons-lsp-extensions/src/main/java/org/springframework/ide/vscode/commons/protocol/STS4LanguageClient.java +++ b/headless-services/commons/commons-lsp-extensions/src/main/java/org/springframework/ide/vscode/commons/protocol/STS4LanguageClient.java @@ -58,10 +58,10 @@ public interface STS4LanguageClient extends LanguageClient { @JsonRequest("sts/javaLocation") CompletableFuture javaLocation(JavaDataParams params); - @JsonRequest("sts/searchJavaTypes") + @JsonRequest("sts/javaSearchTypes") CompletableFuture> javaSearchTypes(JavaSearchParams params); - @JsonRequest("sts/searchJavaPackages") + @JsonRequest("sts/javaSearchPackages") CompletableFuture> javaSearchPackages(JavaSearchParams params); @JsonRequest("sts/javaSubTypes") diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/ClassReferenceProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/ClassReferenceProvider.java index f2186a506..e4b79184e 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/ClassReferenceProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/ClassReferenceProvider.java @@ -26,12 +26,14 @@ import org.springframework.ide.vscode.boot.metadata.hints.StsValueHint; import org.springframework.ide.vscode.commons.java.Flags; import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.java.IType; +import org.springframework.ide.vscode.commons.util.FuzzyMatcher; import org.springframework.ide.vscode.commons.util.StringUtil; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import reactor.core.publisher.Flux; +import reactor.util.function.Tuples; /** * Provides the algorithm for 'class-reference' valueProvider. @@ -147,8 +149,8 @@ public class ClassReferenceProvider extends CachingValueProvider { if (allSubclasses.isEmpty()) { return Flux.empty(); } else { - return javaProject.getIndex() - .fuzzySearchTypes(query, true, false, type -> allSubclasses.contains(type)) + return Flux.fromIterable(allSubclasses) + .map(type -> Tuples.of(type, FuzzyMatcher.matchScore(query, type.getFullyQualifiedName()))) .collectSortedList((o1, o2) -> o2.getT2().compareTo(o1.getT2())) .flatMapIterable(l -> l) .map(t -> StsValueHint.create(sourceLinks, javaProject, t.getT1()));