From 6c607f679814fc98cf4e99082cf06ced65e5ed35 Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Wed, 8 Nov 2017 12:57:39 -0500 Subject: [PATCH] PT #152470354 Only method RM annotations for go to symbol --- .../RequestMappingSymbolProvider.java | 38 ++++++++++--------- .../RequestMappingSymbolProviderTest.java | 3 +- .../java/utils/test/SpringIndexerTest.java | 28 +++++--------- 3 files changed, 30 insertions(+), 39 deletions(-) diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingSymbolProvider.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingSymbolProvider.java index 400826044..164467b53 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingSymbolProvider.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingSymbolProvider.java @@ -42,26 +42,28 @@ public class RequestMappingSymbolProvider implements SymbolProvider { @Override public Collection getSymbols(Annotation node, TextDocument doc) { - try { - Location location = new Location(doc.getUri(), doc.toRange(node.getStartPosition(), node.getLength())); - String[] path = getPath(node); - String[] parentPath = getParentPath(node); - String[] method = getMethod(node); + if (node.getParent() instanceof MethodDeclaration) { + try { + Location location = new Location(doc.getUri(), doc.toRange(node.getStartPosition(), node.getLength())); + String[] path = getPath(node); + String[] parentPath = getParentPath(node); + String[] method = getMethod(node); - String methodStr = method == null || method.length == 0 ? "(no method defined)" : String.join(",", method); + String methodStr = method == null || method.length == 0 ? "(no method defined)" : String.join(",", method); - return (parentPath == null ? Stream.of("") : Arrays.stream(parentPath)).filter(Objects::nonNull) - .flatMap(parent -> (path == null ? Stream.empty() : Arrays.stream(path)) - .filter(Objects::nonNull).map(p -> { - String separator = !parent.endsWith("/") && !p.startsWith("/") ? "/" : ""; - String resultPath = parent + separator + p; - return resultPath.startsWith("/") ? resultPath : "/" + resultPath; - })) - .map(p -> "@" + p + " -- " + methodStr) - .map(symbolLabel -> new SymbolInformation(symbolLabel, SymbolKind.Interface, location)) - .collect(Collectors.toList()); - } catch (Exception e) { - e.printStackTrace(); + return (parentPath == null ? Stream.of("") : Arrays.stream(parentPath)).filter(Objects::nonNull) + .flatMap(parent -> (path == null ? Stream.empty() : Arrays.stream(path)) + .filter(Objects::nonNull).map(p -> { + String separator = !parent.endsWith("/") && !p.startsWith("/") ? "/" : ""; + String resultPath = parent + separator + p; + return resultPath.startsWith("/") ? resultPath : "/" + resultPath; + })) + .map(p -> "@" + p + " -- " + methodStr) + .map(symbolLabel -> new SymbolInformation(symbolLabel, SymbolKind.Interface, location)) + .collect(Collectors.toList()); + } catch (Exception e) { + e.printStackTrace(); + } } return null; } diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java index 18b8999cc..4b319932b 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java @@ -55,8 +55,7 @@ public class RequestMappingSymbolProviderTest { String uriPrefix = "file://" + directory.getAbsolutePath(); List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/ParentMappingClass.java"); - assertEquals(2, symbols.size()); - assertTrue(containsSymbol(symbols, "@/parent -- GET,POST,DELETE", uriPrefix + "/src/main/java/org/test/ParentMappingClass.java", 5, 0, 5, 58)); + assertEquals(1, symbols.size()); assertTrue(containsSymbol(symbols, "@/parent/greeting -- GET", uriPrefix + "/src/main/java/org/test/ParentMappingClass.java", 8, 1, 8, 47)); } diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java index 07a5664c9..0b74102ad 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java @@ -65,17 +65,15 @@ public class SpringIndexerTest { List allSymbols = indexer().getAllSymbols(""); - assertEquals(8, allSymbols.size()); + assertEquals(6, allSymbols.size()); String uriPrefix = "file://" + directory.getAbsolutePath(); assertTrue(containsSymbol(allSymbols, "@SpringBootApplication", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 24, 0, 24, 36)); assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); assertTrue(containsSymbol(allSymbols, "@/mapping1 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28)); assertTrue(containsSymbol(allSymbols, "@/mapping2 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); - assertTrue(containsSymbol(allSymbols, "@/classlevel -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 4, 0, 4, 30)); assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); } @@ -87,10 +85,9 @@ public class SpringIndexerTest { String uriPrefix = "file://" + directory.getAbsolutePath(); List symbols = indexer().getSymbols(uriPrefix + "/src/main/java/org/test/MainClass.java"); - assertEquals(4, symbols.size()); + assertEquals(3, symbols.size()); assertTrue(containsSymbol(symbols, "@SpringBootApplication", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); assertTrue(containsSymbol(symbols, "@/embedded-foo-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(symbols, "@/foo-root-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 24, 0, 24, 36)); assertTrue(containsSymbol(symbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); symbols = indexer().getSymbols(uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java"); @@ -99,8 +96,7 @@ public class SpringIndexerTest { assertTrue(containsSymbol(symbols, "@/mapping2 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); symbols = indexer().getSymbols(uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java"); - assertEquals(2, symbols.size()); - assertTrue(containsSymbol(symbols, "@/classlevel -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 4, 0, 4, 30)); + assertEquals(1, symbols.size()); assertTrue(containsSymbol(symbols, "@/classlevel/mapping-subpackage -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); } @@ -112,17 +108,15 @@ public class SpringIndexerTest { List allSymbols = indexer().getAllSymbols(""); - assertEquals(8, allSymbols.size()); + assertEquals(6, allSymbols.size()); String uriPrefix = "file://" + directory.getAbsolutePath() + "/test-annotation-indexing"; assertTrue(containsSymbol(allSymbols, "@SpringBootApplication", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 24, 0, 24, 36)); assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); assertTrue(containsSymbol(allSymbols, "@/mapping1 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28)); assertTrue(containsSymbol(allSymbols, "@/mapping2 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); - assertTrue(containsSymbol(allSymbols, "@/classlevel -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 4, 0, 4, 30)); assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); } @@ -147,17 +141,15 @@ public class SpringIndexerTest { // check for updated index in all symbols List allSymbols = indexer().getAllSymbols(""); - assertEquals(8, allSymbols.size()); + assertEquals(6, allSymbols.size()); String uriPrefix = "file://" + directory.getAbsolutePath(); assertTrue(containsSymbol(allSymbols, "@SpringBootApplication", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 24, 0, 24, 36)); assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); assertTrue(containsSymbol(allSymbols, "@/mapping1-CHANGED -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 36)); assertTrue(containsSymbol(allSymbols, "@/mapping2 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); - assertTrue(containsSymbol(allSymbols, "@/classlevel -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 4, 0, 4, 30)); assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage -- (no method defined)", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); } @@ -169,12 +161,11 @@ public class SpringIndexerTest { List allSymbols = indexer().getAllSymbols("mapp"); - assertEquals(6, allSymbols.size()); + assertEquals(5, allSymbols.size()); String uriPrefix = "file://" + directory.getAbsolutePath(); assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 24, 0, 24, 36)); assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); assertTrue(containsSymbol(allSymbols, "@/mapping1 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28)); assertTrue(containsSymbol(allSymbols, "@/mapping2 -- (no method defined)", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); @@ -189,11 +180,10 @@ public class SpringIndexerTest { List allSymbols = indexer().getAllSymbols("@/foo-root-mapping -- (no method defined)"); - assertEquals(2, allSymbols.size()); + assertEquals(1, allSymbols.size()); String uriPrefix = "file://" + directory.getAbsolutePath(); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 24, 0, 24, 36)); assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root -- (no method defined)", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); } @@ -236,7 +226,7 @@ public class SpringIndexerTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()); List allSymbols = indexer().getAllSymbols(""); - assertEquals(8, allSymbols.size()); + assertEquals(6, allSymbols.size()); File pomFile = directory.toPath().resolve(MavenCore.POM_XML).toFile(); @@ -247,7 +237,7 @@ public class SpringIndexerTest { allSymbols = indexer().getAllSymbols(""); assertFalse(indexer().isInitializing()); - assertEquals(8, allSymbols.size()); + assertEquals(6, allSymbols.size()); } }