*
* @param classDoc The class to process
*/
private void write(ClassDoc classDoc) throws IOException
{
Metaclass clazz;
Tag[] tagArray;
// Set up the current class
clazz = new Metaclass(getAlias(classDoc.name()));
tagArray = classDoc.tags(DESCRIPTION_TAG);
// Class @description
if (tagArray.length > 0)
{
clazz.setDescription(tagArray[0].text());
if (tagArray.length != 1)
{
warning(classDoc, "Multiple description tags found for " + clazz.getName());
}
}
if (classDoc.superclass() != null)
{
clazz.setBase(new Metaclass(getAlias(classDoc.superclass().name())));
if (clazz.getName().equals(clazz.getBase().getName()))
{
error(classDoc, "Type aliases cause circular hierarchy");
clazz.setBase(null);
}
}
// Process the methods
addMembers(clazz, classDoc);
ClassDoc[] innerTypeArray = classDoc.innerClasses();
for (int i = 0; i < innerTypeArray.length; i++)
{
addMembers(clazz, innerTypeArray[i]);
}
innerTypeArray = classDoc.interfaces();
for (int i = 0; i < innerTypeArray.length; i++)
{
addMembers(clazz, innerTypeArray[i]);
}
// Export to file
FileOutputStream fosStream = null;
IndentingXMLWriter xmlWriter = null;
try
{
fosStream = new FileOutputStream(new File(m_outputDir, clazz.getName() + ".meta"));
xmlWriter = new IndentingXMLWriter(new OutputStreamWriter(new BufferedOutputStream(fosStream), XMLUtil.ENCODING));
new XMLMetadataExporter(xmlWriter).exportMetaclass(clazz);
}
finally