private void processHierarchy()

in src/main/java/org/apache/struts/annotations/taglib/apt/TagAnnotationProcessor.java [168:186]


    private void processHierarchy(Tag tag) {
        TypeElement type = processingEnv.getElementUtils().getTypeElement(tag.getDeclaredType());
        List<String> skipAttributes = tag.getSkipAttributes();
        while (type != null && !(type instanceof NoType) && getAnnotation(type, TAG_SKIP_HIERARCHY) == null) {
            Tag parentTag = tags.get(type.getQualifiedName().toString());
            // copy parent annotations to this tag
            if (parentTag != null) {
                for (TagAttribute attribute : parentTag.getAttributes()) {
                    if (!skipAttributes.contains(attribute.getName())) {
                        tag.addTagAttribute(attribute);
                    }
                }
            } else {
                // Maybe the parent class is already compiled
                addTagAttributesFromParent(tag, type);
            }
            type = (TypeElement) processingEnv.getTypeUtils().asElement(type.getSuperclass());
        }
    }