private void addTagAttributesFromParent()

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


    private void addTagAttributesFromParent(Tag tag, TypeElement type) {
        for (ExecutableElement method : ElementFilter.methodsIn(processingEnv.getElementUtils().getAllMembers(type))) {
            AnnotationMirror annotation = getAnnotation(method, TAG_ATTRIBUTE);
            if (method.getModifiers().contains(Modifier.PUBLIC) && annotation != null) {
                String name = String.valueOf(Character.toLowerCase(method.getSimpleName()
                        .charAt(3)))
                        + method.getSimpleName().subSequence(4, method.getSimpleName().length());
                if (!tag.getSkipAttributes().contains(name)) {
                    Map<String, Object> values = new HashMap<>();
                    for (Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : processingEnv.getElementUtils().getElementValuesWithDefaults(annotation).entrySet()) {
                        values.put(entry.getKey().getSimpleName().toString(), entry.getValue().getValue());
                    }
                    TagAttribute attribute = new TagAttribute();
                    populateTagAttributes(attribute, values);
                    attribute.setName(name);
                    tag.addTagAttribute(attribute);
                }
            }
        }
    }