in xbean-blueprint/src/main/java/org/apache/xbean/blueprint/generator/WikiDocumentationGenerator.java [55:126]
private void generateDocumentation(PrintWriter out, NamespaceMapping namespaceMapping) {
HashMap refercencedTypes = new HashMap();
// Build of map of types that are referenced by element types.
for (Iterator iter = namespaceMapping.getElements().iterator(); iter.hasNext();) {
ElementMapping element = (ElementMapping) iter.next();
for (Iterator iterator = element.getAttributes().iterator(); iterator.hasNext();) {
AttributeMapping attribute = (AttributeMapping) iterator.next();
Type type = getNestedType( attribute.getType() );
if( namespaceMapping.isSimpleType( type) )
continue;
if( !refercencedTypes.containsKey(type.getName()) )
refercencedTypes.put(type.getName(), new ArrayList());
}
}
// Add all the elements that implement those types.
for (Iterator iter = refercencedTypes.entrySet().iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry) iter.next();
String type = (String) entry.getKey();
ArrayList implementations = (ArrayList) entry.getValue();
for (Iterator iterator = namespaceMapping.getElements().iterator(); iterator.hasNext();) {
ElementMapping element = (ElementMapping) iterator.next();
// Check to see if the class is matches
boolean matched=false;
if (type.equals(element.getClassName())) {
implementations.add(element);
matched=true;
}
// Perhaps a super class matches.
if(!matched) {
for (Iterator j = element.getSuperClasses().iterator(); j.hasNext();) {
String t = (String) j.next();
if( type.equals(t) ) {
implementations.add(element);
matched=true;
break;
}
}
}
// Or it might be an interface.
if(!matched) {
for (Iterator j = element.getInterfaces().iterator(); j.hasNext();) {
String t = (String) j.next();
if( type.equals(t) ) {
implementations.add(element);
matched=true;
break;
}
}
}
}
}
// Remove any entries that did not have associated elements
for (Iterator iter = refercencedTypes.values().iterator(); iter.hasNext();) {
ArrayList implementations = (ArrayList) iter.next();
if( implementations.isEmpty() )
iter.remove();
}
generateElementsByType(out, namespaceMapping, refercencedTypes);
generateElementsDetail(out, namespaceMapping, refercencedTypes);
generateElementsIndex(out, namespaceMapping, refercencedTypes);
}