Skip to content

Commit d2b8cdb

Browse files
committed
GH-1500: do not generate repo symbol when type is annotated with NoRepositoryBean
Fixes GH-1500
1 parent e7eb27c commit d2b8cdb

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,18 +167,18 @@ protected String beanLabel(boolean isFunctionBean, String beanName, String beanT
167167
}
168168

169169
private static Tuple4<String, ITypeBinding, String, DocumentRegion> getRepositoryBean(TypeDeclaration typeDeclaration, TextDocument doc) {
170-
ITypeBinding resolvedType = typeDeclaration.resolveBinding();
170+
AnnotationHierarchies annotationHierarchies = AnnotationHierarchies.get(typeDeclaration);
171171

172-
if (resolvedType != null) {
172+
ITypeBinding resolvedType = typeDeclaration.resolveBinding();
173+
if (resolvedType != null && !annotationHierarchies.isAnnotatedWith(resolvedType, Annotations.NO_REPO_BEAN)) {
173174
return getRepositoryBean(typeDeclaration, doc, resolvedType);
174175
}
175176
else {
176177
return null;
177178
}
178179
}
179180

180-
private static Tuple4<String, ITypeBinding, String, DocumentRegion> getRepositoryBean(TypeDeclaration typeDeclaration, TextDocument doc,
181-
ITypeBinding resolvedType) {
181+
private static Tuple4<String, ITypeBinding, String, DocumentRegion> getRepositoryBean(TypeDeclaration typeDeclaration, TextDocument doc, ITypeBinding resolvedType) {
182182

183183
ITypeBinding[] interfaces = resolvedType.getInterfaces();
184184
for (ITypeBinding resolvedInterface : interfaces) {

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,16 @@ void testSimpleRepositorySymbol() throws Exception {
7272
assertTrue(containsSymbol(symbols, "@+ 'customerRepository' (Customer) Repository<Customer,Long>", docUri, 6, 17, 6, 35));
7373
}
7474

75+
@Test
76+
void testNoRepositorySymbolForNoRepositoryAnnotation() throws Exception {
77+
String docUri = directory.toPath().resolve("src/main/java/org/test/CustomerRepositoryParentInterface.java").toUri().toString();
78+
List<? extends WorkspaceSymbol> symbols = indexer.getSymbols(docUri);
79+
assertEquals(2, symbols.size());
80+
81+
assertTrue(containsSymbol(symbols, "@NoRepositoryBean", docUri, 8, 0, 8, 17));
82+
assertTrue(containsSymbol(symbols, "@Query(\"PARENT REPO INTERFACE QUERY STATEMENT\")", docUri, 11, 4, 11, 51));
83+
}
84+
7585
@Test
7686
void testDocumentSymbolsForRepository() throws Exception {
7787
String docUri = directory.toPath().resolve("src/main/java/org/test/CustomerRepository.java").toUri().toString();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.test;
2+
3+
import java.util.List;
4+
5+
import org.springframework.data.jpa.repository.Query;
6+
import org.springframework.data.repository.CrudRepository;
7+
import org.springframework.data.repository.NoRepositoryBean;
8+
9+
@NoRepositoryBean
10+
public interface CustomerRepositoryParentInterface extends CrudRepository<Customer, Long> {
11+
12+
@Query("PARENT REPO INTERFACE QUERY STATEMENT")
13+
List<Object> findParentPetTypes();
14+
}

0 commit comments

Comments
 (0)