diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java index f6bb21bbd..0f0227b50 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java @@ -18,6 +18,9 @@ import java.util.Map; import java.util.function.Consumer; import org.eclipse.jdt.core.dom.ITypeBinding; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.ide.vscode.boot.java.utils.SpringIndexerJava; import org.springframework.ide.vscode.commons.util.Assert; import com.google.common.collect.ImmutableList; @@ -32,6 +35,8 @@ import com.google.common.collect.ImmutableList; * @author Kris De Volder */ public class AnnotationHierarchyAwareLookup { + + private static final Logger log = LoggerFactory.getLogger(AnnotationHierarchyAwareLookup.class); private static class Binding { T value; @@ -100,15 +105,24 @@ public class AnnotationHierarchyAwareLookup { private void findElements(ITypeBinding typeBinding, HashSet seen, Consumer requestor) { String qname = typeBinding.getQualifiedName(); + log.info("find elements for " + typeBinding.getName() + " with qname " + qname); + if (seen.add(qname)) { Binding binding = bindings.get(qname); + + log.info("binding for " + qname + " is " + binding); + boolean isOverriding = false; - if (binding!=null) { + if (binding != null) { requestor.accept(binding.value); isOverriding = binding.isOverriding; } + if (!isOverriding) { - for (ITypeBinding superAnnotation : AnnotationHierarchies.getDirectSuperAnnotations(typeBinding)) { + Collection directSuperAnnotations = AnnotationHierarchies.getDirectSuperAnnotations(typeBinding); + log.info("direct super annotations found for " + typeBinding.getName() + " are: " + directSuperAnnotations); + + for (ITypeBinding superAnnotation : directSuperAnnotations) { findElements(superAnnotation, seen, requestor); } }