inherited interface recognition

This commit is contained in:
Brian Long 2025-02-10 11:46:19 -05:00
parent 0886a273e4
commit ed4326589b

View File

@ -28,6 +28,8 @@ import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
import org.slf4j.Logger;
@ -102,7 +104,9 @@ class ActivitiDocFilter {
Set<String> taskListenerMethodElements = new HashSet<>(5);
// getAllTypeElements() will get inherited interfaces
for (TypeMirror interfaceType : classElement.getInterfaces()) {
TypeElement superclassElement = classElement;
while (superclassElement != null) {
for (TypeMirror interfaceType : superclassElement.getInterfaces()) {
this.logger.trace("Found interface '{}' on bean '{}'", interfaceType, beanId);
switch (interfaceType.toString()) {
@ -121,6 +125,16 @@ class ActivitiDocFilter {
}
}
TypeMirror superclassMirror = superclassElement.getSuperclass();
if (superclassMirror == null) {
superclassElement = null;
} else if (superclassMirror.getKind() != TypeKind.DECLARED) {
superclassElement = null;
} else {
superclassElement = (TypeElement) ((DeclaredType) superclassMirror).asElement();
}
}
this.logger.info("delegates: {}", delegateMethodElements);
// getAllMembers() will get inherited methods