GH-1500: do not generate repo symbol when type is annotated with NoRepositoryBean
Fixes GH-1500
This commit is contained in:
@@ -167,9 +167,10 @@ public class DataRepositorySymbolProvider implements SymbolProvider {
|
||||
}
|
||||
|
||||
private static Tuple4<String, ITypeBinding, String, DocumentRegion> getRepositoryBean(TypeDeclaration typeDeclaration, TextDocument doc) {
|
||||
ITypeBinding resolvedType = typeDeclaration.resolveBinding();
|
||||
AnnotationHierarchies annotationHierarchies = AnnotationHierarchies.get(typeDeclaration);
|
||||
|
||||
if (resolvedType != null) {
|
||||
ITypeBinding resolvedType = typeDeclaration.resolveBinding();
|
||||
if (resolvedType != null && !annotationHierarchies.isAnnotatedWith(resolvedType, Annotations.NO_REPO_BEAN)) {
|
||||
return getRepositoryBean(typeDeclaration, doc, resolvedType);
|
||||
}
|
||||
else {
|
||||
@@ -177,8 +178,7 @@ public class DataRepositorySymbolProvider implements SymbolProvider {
|
||||
}
|
||||
}
|
||||
|
||||
private static Tuple4<String, ITypeBinding, String, DocumentRegion> getRepositoryBean(TypeDeclaration typeDeclaration, TextDocument doc,
|
||||
ITypeBinding resolvedType) {
|
||||
private static Tuple4<String, ITypeBinding, String, DocumentRegion> getRepositoryBean(TypeDeclaration typeDeclaration, TextDocument doc, ITypeBinding resolvedType) {
|
||||
|
||||
ITypeBinding[] interfaces = resolvedType.getInterfaces();
|
||||
for (ITypeBinding resolvedInterface : interfaces) {
|
||||
|
||||
@@ -72,6 +72,16 @@ public class DataRepositorySymbolProviderTest {
|
||||
assertTrue(containsSymbol(symbols, "@+ 'customerRepository' (Customer) Repository<Customer,Long>", docUri, 6, 17, 6, 35));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNoRepositorySymbolForNoRepositoryAnnotation() throws Exception {
|
||||
String docUri = directory.toPath().resolve("src/main/java/org/test/CustomerRepositoryParentInterface.java").toUri().toString();
|
||||
List<? extends WorkspaceSymbol> symbols = indexer.getSymbols(docUri);
|
||||
assertEquals(2, symbols.size());
|
||||
|
||||
assertTrue(containsSymbol(symbols, "@NoRepositoryBean", docUri, 8, 0, 8, 17));
|
||||
assertTrue(containsSymbol(symbols, "@Query(\"PARENT REPO INTERFACE QUERY STATEMENT\")", docUri, 11, 4, 11, 51));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDocumentSymbolsForRepository() throws Exception {
|
||||
String docUri = directory.toPath().resolve("src/main/java/org/test/CustomerRepository.java").toUri().toString();
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import org.springframework.data.repository.NoRepositoryBean;
|
||||
|
||||
@NoRepositoryBean
|
||||
public interface CustomerRepositoryParentInterface extends CrudRepository<Customer, Long> {
|
||||
|
||||
@Query("PARENT REPO INTERFACE QUERY STATEMENT")
|
||||
List<Object> findParentPetTypes();
|
||||
}
|
||||
Reference in New Issue
Block a user