GH-1458: ignore org.springframework.lang annotations when creating default symbols

Fixed GH-1458
This commit is contained in:
Martin Lippert
2025-01-27 15:57:54 +01:00
parent 0bcbf0625e
commit 23ad220123
3 changed files with 16 additions and 8 deletions

View File

@@ -786,7 +786,9 @@ public class SpringIndexerJava implements SpringIndexer {
ITypeBinding type = node.resolveTypeBinding();
if (type != null) {
String qualifiedName = type.getQualifiedName();
if (qualifiedName != null && qualifiedName.startsWith("org.springframework") || isJakartaAnnotationWithDefaultSymbol(qualifiedName)) {
if (qualifiedName != null
&& ((qualifiedName.startsWith("org.springframework") && !qualifiedName.startsWith("org.springframework.lang"))
|| isJakartaAnnotationWithDefaultSymbol(qualifiedName))) {
TextDocument doc = DocumentUtils.getTempTextDocument(context.getDocURI(), context.getDocRef(), context.getContent());
return DefaultSymbolProvider.provideDefaultSymbol(node, doc);
}

View File

@@ -94,7 +94,7 @@ public class SpringIndexerTest {
assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38));
docUri = directory.toPath().resolve("src/main/java/org/test/ClassWithDefaultSymbol.java").toUri().toString();
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 4, 0, 4, 13));
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 5, 0, 5, 13));
}
@Test
@@ -153,7 +153,7 @@ public class SpringIndexerTest {
docUri = directory.toPath().resolve("src/main/java/org/test/ClassWithDefaultSymbol.java").toUri().toString();
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 4, 0, 4, 13));
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 5, 0, 5, 13));
}
@Test
@@ -190,7 +190,7 @@ public class SpringIndexerTest {
assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38));
docUri = directory.toPath().resolve("src/main/java/org/test/ClassWithDefaultSymbol.java").toUri().toString();
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 4, 0, 4, 13));
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 5, 0, 5, 13));
}
@Test
@@ -251,7 +251,7 @@ public class SpringIndexerTest {
assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38));
docUri = directory.toPath().resolve("src/main/java/org/test/ClassWithDefaultSymbol.java").toUri().toString();
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 4, 0, 4, 13));
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 5, 0, 5, 13));
assertTrue(containsSymbol(allSymbols, "@/created-mapping1", createdDocURI, 6, 1, 6, 36));
assertTrue(containsSymbol(allSymbols, "@/created-mapping2", createdDocURI, 11, 1, 11, 36));
@@ -286,7 +286,7 @@ public class SpringIndexerTest {
assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38));
docUri = directory.toPath().resolve("src/main/java/org/test/ClassWithDefaultSymbol.java").toUri().toString();
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 4, 0, 4, 13));
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 5, 0, 5, 13));
}
@Test
@@ -322,7 +322,7 @@ public class SpringIndexerTest {
assertFalse(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38));
docUri = directory.toPath().resolve("src/main/java/org/test/ClassWithDefaultSymbol.java").toUri().toString();
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 4, 0, 4, 13));
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 5, 0, 5, 13));
}
@Test
@@ -358,7 +358,7 @@ public class SpringIndexerTest {
assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38));
docUri = directory.toPath().resolve("src/main/java/org/test/ClassWithDefaultSymbol.java").toUri().toString();
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 4, 0, 4, 13));
assertTrue(containsSymbol(allSymbols, "@Configurable", docUri, 5, 0, 5, 13));
}
@Test

View File

@@ -1,7 +1,13 @@
package org.test;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.lang.NonNull;
@Configurable
public class ClassWithDefaultSymbol {
@NonNull
public String foo() {
return "foo";
}
}