in maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/tagdoc/TagdocIndexReport.java [185:388]
private void _generateTagDocs() throws Exception
{
Model model = getModel();
if (model.getComponents().size() == 0)
{
getLog().info("Nothing to generate - no components found");
return;
}
Iterator components = model.components();
Iterator validators = model.validators();
Iterator converters = model.converters();
Iterator behaviors = model.behaviors();
Iterator tags = model.tags();
Iterator faceletTags = model.faceletTags();
Iterator faceletFunctions = model.faceletFunctions();
Map<String, List<FaceletFunctionMeta>> faceletFunctionByModelId =
new HashMap<String, List<FaceletFunctionMeta>>();
// =-=AEW Note that only updating out-of-date components, etc. is
// permanently tricky, even if we had proper detection in place,
// because the index always has to have all docs
/*
if (!components.hasNext() && !converters.hasNext() && !validators.hasNext())
{
getLog().info("Nothing to generate - all docs are up to date");
return;
}
*/
Set componentPages = new TreeSet();
Set converterPages = new TreeSet();
Set behaviorPages = new TreeSet();
Set validatorPages = new TreeSet();
Set tagsPages = new TreeSet();
Set faceletTagPages = new TreeSet();
Set faceletFunctionPages = new TreeSet();
int count = 0;
while (components.hasNext())
{
ComponentMeta component = (ComponentMeta) components.next();
if (canGenerate(component))
{
String pageName = _generateComponentDoc(component);
if (pageName != null)
{
componentPages.add(pageName);
count++;
}
}
}
while (converters.hasNext())
{
ConverterMeta converter = (ConverterMeta) converters.next();
if (canGenerate(converter))
{
String pageName = _generateConverterDoc(converter);
if (pageName != null)
{
converterPages.add(pageName);
count++;
}
}
}
while (validators.hasNext())
{
ValidatorMeta validator = (ValidatorMeta) validators.next();
if (canGenerate(validator))
{
String pageName = _generateValidatorDoc(validator);
if (pageName != null)
{
validatorPages.add(pageName);
count++;
}
}
}
while (behaviors.hasNext())
{
BehaviorMeta behavior = (BehaviorMeta) behaviors.next();
if (canGenerate(behavior))
{
String pageName = _generateBehaviorDoc(behavior);
if (pageName != null)
{
behaviorPages.add(pageName);
count++;
}
}
}
while (tags.hasNext())
{
TagMeta tag = (TagMeta) tags.next();
if (canGenerate(tag))
{
String pageName = _generateTagDoc(tag);
if (pageName != null)
{
tagsPages.add(pageName);
count++;
}
}
}
while (faceletTags.hasNext())
{
FaceletTagMeta faceletTag = (FaceletTagMeta) faceletTags.next();
if (canGenerate(faceletTag))
{
String pageName = _generateFaceletTagDoc(model, faceletTag);
if (pageName != null)
{
faceletTagPages.add(pageName);
count++;
}
}
}
for (int i = 0; i < modelIds.size(); i++)
{
String modelId = (String) modelIds.get(i);
faceletFunctionByModelId.put(modelId, new ArrayList<FaceletFunctionMeta>());
}
while (faceletFunctions.hasNext())
{
FaceletFunctionMeta faceletFunction = (FaceletFunctionMeta) faceletFunctions.next();
if (canGenerate(faceletFunction))
{
String pageName = _generateFaceletFunctionDoc(model, faceletFunction);
if (pageName != null)
{
faceletFunctionPages.add(pageName);
count++;
}
}
}
Set otherPages = _gatherOtherTags();
getLog().info("Generated " + count + " page(s)");
Sink sink = getSink();
sink.head();
sink.title();
sink.text("Tag library documentation");
sink.title_();
sink.head_();
sink.body();
sink.sectionTitle1();
sink.text("Tag library information");
sink.sectionTitle1_();
sink.section1();
for (Iterator i = taglibs.entrySet().iterator(); i.hasNext();)
{
Map.Entry entry = (Map.Entry) i.next();
sink.paragraph();
sink.bold();
sink.text("Short name:");
sink.bold_();
sink.nonBreakingSpace();
sink.text(entry.getKey().toString());
sink.lineBreak();
sink.bold();
sink.text("Namespace:");
sink.bold_();
sink.nonBreakingSpace();
sink.text(entry.getValue().toString());
sink.lineBreak();
sink.paragraph_();
}
sink.section1_();
_writeIndexSection(sink, componentPages, "Components");
_writeIndexSection(sink, converterPages, "Converters");
_writeIndexSection(sink, validatorPages, "Validators");
_writeIndexSection(sink, behaviorPages, "Behaviors");
_writeIndexSection(sink, tagsPages, "JSF Tags");
_writeIndexSection(sink, faceletTagPages, "JSF Facelet Tags");
_writeIndexSection(sink, faceletFunctionPages, "JSF Facelet EL Functions", "Function Name");
_writeIndexSection(sink, otherPages, "Miscellaneous");
sink.body_();
}