@Override
protected void addAttribute(MethodDeclaration method, Element tagElement, Document document) {
TagAttribute tagAttribute = method.getAnnotation(TagAttribute.class);
if (tagAttribute != null) {
UIComponentTagAttribute uiTagAttribute = null;
try {
uiTagAttribute = method.getAnnotation(UIComponentTagAttribute.class);
} catch (RuntimeException e) {
e.printStackTrace();
}
String simpleName = method.getSimpleName();
if (simpleName.startsWith("set")) {
Element attribute = document.createElement("attribute");
addDescription(method, attribute, document);
addLeafTextElement(simpleName.substring(3, 4).toLowerCase(Locale.ENGLISH)
+ simpleName.substring(4), "name", attribute, document);
addLeafTextElement(Boolean.toString(tagAttribute.required()), "required", attribute, document);
addLeafTextElement(Boolean.toString(tagAttribute.rtexprvalue()), "rtexprvalue", attribute, document);
if (uiTagAttribute != null) {
addLeafTextElement(uiTagAttribute.expression().toString(), "ui-attribute-expression", attribute, document);
String[] uiTypeClasses = uiTagAttribute.type();
if (uiTypeClasses.length > 0) {
Element uiAttributeType = document.createElement("ui-attribute-type");
for (String typeClass : uiTypeClasses) {
Element clazz = document.createElement("class");
addLeafTextElement(ClassUtils.getShortClassName(typeClass), "name", clazz, document);
addLeafTextElement(ClassUtils.getPackageName(typeClass), "package", clazz, document);
uiAttributeType.appendChild(clazz);
}
attribute.appendChild(uiAttributeType);
}
if (uiTagAttribute.defaultValue().length() > 0) {
addLeafTextElement(uiTagAttribute.defaultValue(), "ui-attribute-default-value", attribute, document);
}
}
tagElement.appendChild(attribute);