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);
}
}
}
}