nicolaken2003/04/01 08:35:26
Modified:src/java/org/apache/alexandria/doclets XMLDoclet.java
Log:
Convert to use JAXP.
Revision ChangesPath
1.4 +72 -56
jakarta-alexandria/src/java/org/apache/alexandria/doclets/XMLDoclet.java
Index: XMLDoclet.java
===
RCS file:
/home/cvs/jakarta-alexandria/src/java/org/apache/alexandria/doclets/XMLDoclet.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XMLDoclet.java1 Apr 2003 13:56:43 - 1.3
+++ XMLDoclet.java1 Apr 2003 16:35:26 - 1.4
@@ -52,7 +52,9 @@
import java.io.*;
import java.util.*;
import com.sun.javadoc.*;
-import org.apache.xml.serialize.*;
+import javax.xml.transform.*;
+import javax.xml.transform.sax.*;
+import javax.xml.transform.stream.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
@@ -60,6 +62,7 @@
* Main Doclet class to generate JavaDocXML. This doclet generates the
* document conforming to DTD specified in javadoc-v04draft.dtd.
* @author a href=mailto:[EMAIL PROTECTED]Gopinath M.R./a
+ * @author a href=mailto:[EMAIL PROTECTED]Nicola Ken Barozzi/a
*/
public class XMLDoclet extends Doclet {
@@ -67,27 +70,35 @@
private String xmlns = jvx;
private String encodingFormat=ISO-8859-1;
private String localName = javadoc;
-private ContentHandler cm = null;
+private TransformerHandler handler = null;
private String targetFileName=simple.xml;
private Attributes emptyAtts = new AttributesImpl();
public XMLDoclet (RootDoc root) throws Exception {
-FileWriter writer = new FileWriter(targetFileName);
-try {
-OutputFormat format = new OutputFormat();
-format.setEncoding(encodingFormat);
-format.setIndenting(true);
-format.setIndent(4);
-format.setLineWidth(4);
-format.setDoctype(-//APACHE//DTD JavaDoc V0.4//EN,
javadoc-v04draft.dtd);
-XMLSerializer serializer = new XMLSerializer(writer, format);
-cm = serializer.asContentHandler();
-javadocXML(root);
-writer.close();
-} catch (IOException e) {
-writer.close();
-throw e;
-}
+
+ SAXTransformerFactory tFactory = (SAXTransformerFactory)
SAXTransformerFactory.newInstance();
+ if (!(tFactory.getFeature(javax.xml.transform.sax.SAXSource.FEATURE)
+tFactory.getFeature(javax.xml.transform.stream.StreamResult.FEATURE))){
+
+throw new Exception(The supplied TrAX transformer library is inadeguate.+
+Please upgrade to the latest version.);
+ }
+
+ File writer = new File(targetFileName);
+ StreamResult result = new StreamResult(writer);
+
+ // SAX2.0 ContentHandler.
+ handler = tFactory.newTransformerHandler();
+
+ Transformer serializer = handler.getTransformer();
+ serializer.setOutputProperty(OutputKeys.ENCODING, encodingFormat);
+ serializer.setOutputProperty(OutputKeys.INDENT , yes);
+ serializer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC , -//APACHE//DTD
JavaDoc V0.4//EN);
+ serializer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM ,
javadoc-v04draft.dtd);
+
+ handler.setResult(result);
+
+ javadocXML(root);
}
/**
@@ -95,7 +106,10 @@
* xmp!ELEMENT javadoc (package*, class*, interface*)/xmp
*/
private void javadocXML(RootDoc root) throws SAXException {
-cm.startElement(xmlns, localName, javadoc, emptyAtts);
+
+handler.startDocument();
+
+handler.startElement(xmlns, localName, javadoc, emptyAtts);
PackageDoc[] packageArray = root.specifiedPackages();
// Generate for packages.
@@ -120,7 +134,9 @@
ClassDoc interfaceDoc = (ClassDoc)interfaceEnum.nextElement();
interfaceXML(interfaceDoc);
}
-cm.endElement(xmlns, localName, javadoc);
+handler.endElement(xmlns, localName, javadoc);
+
+handler.endDocument();
}
/**
@@ -132,7 +148,7 @@
private void packageXML(PackageDoc packageDoc) throws SAXException {
AttributesImpl atts = new AttributesImpl();
atts.addAttribute(xmlns, localName, name, String, packageDoc.name());
-cm.startElement(xmlns, localName, package, atts);
+handler.startElement(xmlns, localName, package, atts);
// generate Doc element.
docXML(packageDoc);
@@ -163,7 +179,7 @@
interfaceXML(interfaceArray[i]);
}
-cm.endElement(xmlns, localName, package);
+