Skip to content

Commit 1fe205f

Browse files
committed
create type names for stereotype index with $ for inner classes (binary name instead of qualified name)
1 parent 5944fdb commit 1fe205f

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/stereotypes/StereotypesIndexer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ private void createStereotypeElementForType(TypeDeclaration typeDeclaration, Spr
129129
// capture type information element for later tree generation
130130
AnnotationHierarchies annotationHierarchies = AnnotationHierarchies.get(typeDeclaration);
131131

132-
String qualifiedName = typeBinding.getQualifiedName();
132+
String qualifiedName = typeBinding.getBinaryName();
133133
Set<String> supertypes = ASTUtils.findSupertypes(typeBinding);
134134

135135
List<IAnnotationBinding> superTypeAnnotations = new ArrayList<>();

headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/stereotypes/StereotypesIndexerTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,21 @@ void testPackageElement() throws Exception {
9393
assertEquals(2, packages.size()); // package nodes are created for package declarations in package-info.java files only
9494
}
9595

96+
@Test
97+
void testInnerClassElements() throws Exception {
98+
List<StereotypeClassElement> stereotypeNodes = springIndex.getNodesOfType(StereotypeClassElement.class);
99+
100+
List<String> list = stereotypeNodes.stream()
101+
.filter(node -> node.getType().startsWith("example.application.TypeWithInnerClass"))
102+
.map(node -> node.getType())
103+
.toList();
104+
105+
assertEquals(3, list.size());
106+
assertTrue(list.contains("example.application.TypeWithInnerClass"));
107+
assertTrue(list.contains("example.application.TypeWithInnerClass$InnerClass"));
108+
assertTrue(list.contains("example.application.TypeWithInnerClass$InnerClass$InnerClassInInnerClass"));
109+
}
110+
96111
@Test
97112
void testLocationInformationForTypeElement() throws Exception {
98113
String docUri = directory.toPath().resolve("src/main/java/example/application/SampleController.java").toUri().toString();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package example.application;
2+
3+
public class TypeWithInnerClass {
4+
5+
static class InnerClass {
6+
7+
static class InnerClassInInnerClass {
8+
9+
}
10+
11+
}
12+
13+
}

0 commit comments

Comments
 (0)