in maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/Flattener.java [363:510]
private void flattenFaceletTag(FaceletTagMeta faceletTag)
{
if (flattened.contains(faceletTag))
{
// already done
return;
}
if (faceletTag.getSourceClassParentClassName() == null)
{
//No need to scan
return;
}
// In order of precedence
// 1. Merge base parent tag handler
String parentClassName = faceletTag.getParentClassName();
if (parentClassName != null)
{
FaceletTagMeta parent = model
.findFaceletTagByClassName(parentClassName);
if (parent != null)
{
flattenFaceletTag(parent);
faceletTag.merge(parent);
}
else
{
//do nothing.
}
}
//1.1 Mark all attributes on the facelets tag hierarchy as faceletsOnly
for (Iterator it = faceletTag.attributes(); it.hasNext();)
{
AttributeMeta a = (AttributeMeta) it.next();
a.setFaceletsOnly(Boolean.TRUE);
}
// 2. Merge from tag class
if (faceletTag.getTagClass() != null)
{
TagMeta tag = model.findTagByClassName(faceletTag.getTagClass());
if (null != tag)
{
if (tag.getLongDescription() != null)
{
faceletTag.setLongDescription(
tag.getLongDescription()+"<p>"+faceletTag.getLongDescription()+"</p>");
}
if (tag.getDescription() != null)
{
faceletTag.setDescription(
tag.getDescription()+" "+faceletTag.getDescription());
}
ModelUtils.mergeAttributes(faceletTag, tag);
}
}
// 3. Merge from converter/validator/component class
if (faceletTag.getConverterClass() != null)
{
ConverterMeta converter = model.findConverterByClassName(
faceletTag.getConverterClass());
if (null != converter)
{
if (converter.getLongDescription() != null)
{
faceletTag.setLongDescription(
converter.getLongDescription()+"<p>"+faceletTag.getLongDescription()+"</p>");
}
if (converter.getDescription() != null)
{
faceletTag.setDescription(
converter.getDescription()+" "+faceletTag.getDescription());
}
addOrMergePropertiesToAttributeHolder(faceletTag, converter);
}
}
if (faceletTag.getValidatorClass() != null)
{
ValidatorMeta validator = model.findValidatorByClassName(
faceletTag.getValidatorClass());
if (null != validator)
{
if (validator.getLongDescription() != null)
{
faceletTag.setLongDescription(
validator.getLongDescription()+"<p>"+faceletTag.getLongDescription()+"</p>");
}
if (validator.getDescription() != null)
{
faceletTag.setDescription(
validator.getDescription()+" "+faceletTag.getDescription());
}
addOrMergePropertiesToAttributeHolder(faceletTag, validator);
}
}
if (faceletTag.getBehaviorClass() != null)
{
BehaviorMeta behavior = model.findBehaviorByClassName(
faceletTag.getBehaviorClass());
if (null != behavior)
{
if (behavior.getLongDescription() != null)
{
faceletTag.setLongDescription(
behavior.getLongDescription()+"<p>"+faceletTag.getLongDescription()+"</p>");
}
if (behavior.getDescription() != null)
{
faceletTag.setDescription(
behavior.getDescription()+" "+faceletTag.getDescription());
}
addOrMergePropertiesToAttributeHolder(faceletTag, behavior);
}
}
if (faceletTag.getComponentClass() != null)
{
ComponentMeta component = model.findComponentByClassName(
faceletTag.getComponentClass());
if (null != component)
{
if (component.getLongDescription() != null)
{
faceletTag.setLongDescription(
component.getLongDescription()+"<p>"+faceletTag.getLongDescription()+"</p>");
}
if (component.getDescription() != null)
{
faceletTag.setDescription(
component.getDescription()+" "+faceletTag.getDescription());
}
addOrMergePropertiesToAttributeHolder(faceletTag, component);
}
}
flattened.add(faceletTag);
}