addDescription(decl, tagElement, document, false);
addLeafTextElement(tag.name(), "name", tagElement, document);
addLeafTextElement(className, "tag-class", tagElement, document);
BodyContent bodyContent = tag.bodyContent();
BodyContentDescription contentDescription = decl.getAnnotation(BodyContentDescription.class);
// TODO more error checking
if (contentDescription != null) {
if (bodyContent.equals(BodyContent.JSP)
&& contentDescription.contentType().length() > 0) {
throw new IllegalArgumentException(
"contentType " + contentDescription.contentType() + " for bodyContent JSP not allowed!");
} else if (bodyContent.equals(BodyContent.TAGDEPENDENT)
&& contentDescription.contentType().length() == 0) {
throw new IllegalArgumentException("contentType should set for tagdependent bodyContent");
}
}
addLeafTextElement(bodyContent.toString(), "body-content", tagElement, document);
if (contentDescription != null) {
Element bodyContentDescription = document.createElement("body-content-description");
for (int i = 0; i < contentDescription.anyClassOf().length; i++) {
Element clazz = document.createElement("class");
String typeClass = contentDescription.anyClassOf()[i];
addLeafTextElement(ClassUtils.getShortClassName(typeClass), "name", clazz, document);
addLeafTextElement(ClassUtils.getPackageName(typeClass), "package", clazz, document);
bodyContentDescription.appendChild(clazz);
}
if (contentDescription.anyTagOf().length() > 0) {
addLeafTextElement(contentDescription.anyTagOf(), "tags", bodyContentDescription, document);
}
if (contentDescription.contentType().length() > 0) {
addLeafTextElement(contentDescription.contentType(), "content-type", bodyContentDescription, document);
}
tagElement.appendChild(bodyContentDescription);
}
return tagElement;