From 1066941e2ebf9228c36cfd3b5a4fa72d239aaea3 Mon Sep 17 00:00:00 2001 From: evenisse Date: Tue, 21 Oct 2003 15:04:59 +0000 Subject: [PATCH] Externalise output directory and encoding. JellyDoc report works correctly now with multiproject git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@114226 13f79535-47bb-0310-9956-ffa450edef68 --- jellydoc/plugin.jelly | 22 ++--- jellydoc/project.xml | 10 +++ .../apache/maven/jellydoc/TagXMLDoclet.java | 85 ++++++++++++++++++- .../org/apache/maven/jellydoc/XMLDoclet.java | 79 ++++++++++++++++- jellydoc/xdocs/changes.xml | 4 + 5 files changed, 185 insertions(+), 15 deletions(-) diff --git a/jellydoc/plugin.jelly b/jellydoc/plugin.jelly index 672b24a2..e3df683a 100644 --- a/jellydoc/plugin.jelly +++ b/jellydoc/plugin.jelly @@ -54,14 +54,13 @@ + classpathref="doclet.classpath"> + + + + - - - - @@ -71,9 +70,12 @@ + classpathref="doclet.classpath"> + + + + diff --git a/jellydoc/project.xml b/jellydoc/project.xml index e0b5e4d7..778dc1ad 100644 --- a/jellydoc/project.xml +++ b/jellydoc/project.xml @@ -36,6 +36,16 @@ Java Developer + + Emmanuel Venisse + evenisse + emmanuel@venisse.net + + + Java Developer + + +18 + diff --git a/jellydoc/src/main/org/apache/maven/jellydoc/TagXMLDoclet.java b/jellydoc/src/main/org/apache/maven/jellydoc/TagXMLDoclet.java index 0ef52b4a..36d6f887 100644 --- a/jellydoc/src/main/org/apache/maven/jellydoc/TagXMLDoclet.java +++ b/jellydoc/src/main/org/apache/maven/jellydoc/TagXMLDoclet.java @@ -63,6 +63,7 @@ package org.apache.maven.jellydoc; import java.beans.Introspector; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.StringReader; @@ -79,6 +80,7 @@ import org.xml.sax.helpers.DefaultHandler; import com.sun.javadoc.ClassDoc; import com.sun.javadoc.Doc; +import com.sun.javadoc.DocErrorReporter; import com.sun.javadoc.Doclet; import com.sun.javadoc.MethodDoc; import com.sun.javadoc.PackageDoc; @@ -100,16 +102,20 @@ import com.sun.javadoc.Tag; public class TagXMLDoclet extends Doclet { private String xmlns = "jvx"; - private String encodingFormat="UTF-8"; + private String encodingFormat = "UTF-8"; private String localName = "javadoc"; private ContentHandler cm = null; - private String targetFileName="target/taglib.xml"; + private String targetFileName = null; private Attributes emptyAtts = new AttributesImpl(); - public TagXMLDoclet (RootDoc root) throws Exception { - + public TagXMLDoclet (RootDoc root) throws Exception + { + readOptions(root); + File targetFile = new File(targetFileName); + targetFile.getParentFile().mkdirs(); FileOutputStream writer = new FileOutputStream(targetFileName); OutputFormat format = OutputFormat.createPrettyPrint(); + format.setEncoding(encodingFormat); XMLWriter xmlWriter = new XMLWriter(writer, format); try { cm = xmlWriter; @@ -401,4 +407,75 @@ public class TagXMLDoclet extends Doclet { return false; } } + + private void readOptions(RootDoc root) + { + String[][] options = root.options(); + for (int i = 0; i < options.length; i++) + { + String[] opt = options[i]; + if (opt[0].equals("-d")) + { + targetFileName = opt[1] + "/taglib.xml"; + } + if (opt[0].equals("-encoding")) + { + encodingFormat = opt[1]; + } + } + } + + public static int optionLength(String option) + { + if(option.equals("-d")) + { + return 2; + } + if(option.equals("-encoding")) + { + return 2; + } + return 0; + } + + public static boolean validOptions(String options[][], + DocErrorReporter reporter) + { + boolean foundEncodingOption = false; + boolean foundDirOption = false; + for (int i = 0; i < options.length; i++) + { + String[] opt = options[i]; + if (opt[0].equals("-d")) + { + if (foundDirOption) + { + reporter.printError("Only one -d option allowed."); + return false; + } + else + { + foundDirOption = true; + } + } + if (opt[0].equals("-encoding")) + { + if (foundEncodingOption) + { + reporter.printError("Only one -encoding option allowed."); + return false; + } + else + { + foundEncodingOption = true; + } + } + } + if (!foundDirOption) + { + reporter.printError("Usage: javadoc -d -doclet TagXMLDoclet ..."); + return false; + } + return true; + } } diff --git a/jellydoc/src/main/org/apache/maven/jellydoc/XMLDoclet.java b/jellydoc/src/main/org/apache/maven/jellydoc/XMLDoclet.java index 5ba5e419..a67aa3fe 100644 --- a/jellydoc/src/main/org/apache/maven/jellydoc/XMLDoclet.java +++ b/jellydoc/src/main/org/apache/maven/jellydoc/XMLDoclet.java @@ -59,6 +59,7 @@ package org.apache.maven.jellydoc; import java.io.IOException; +import java.io.File; import java.io.FileOutputStream; import java.util.Enumeration; import java.util.Vector; @@ -66,6 +67,7 @@ import java.util.Vector; import com.sun.javadoc.ClassDoc; import com.sun.javadoc.ConstructorDoc; import com.sun.javadoc.Doc; +import com.sun.javadoc.DocErrorReporter; import com.sun.javadoc.Doclet; import com.sun.javadoc.ExecutableMemberDoc; import com.sun.javadoc.FieldDoc; @@ -99,12 +101,16 @@ public class XMLDoclet extends Doclet private String encodingFormat="UTF-8"; private String localName = "javadoc"; private ContentHandler cm = null; - private String targetFileName="target/javadoc.xml"; + private String targetFileName = null; private Attributes emptyAtts = new AttributesImpl(); public XMLDoclet (RootDoc root) throws Exception { + readOptions(root); + File targetFile = new File(targetFileName); + targetFile.getParentFile().mkdirs(); FileOutputStream writer = new FileOutputStream(targetFileName); OutputFormat format = OutputFormat.createPrettyPrint(); + format.setEncoding(encodingFormat); XMLWriter xmlWriter = new XMLWriter(writer, format); try { @@ -720,4 +726,75 @@ public class XMLDoclet extends Doclet return false; } } + + private void readOptions(RootDoc root) + { + String[][] options = root.options(); + for (int i = 0; i < options.length; i++) + { + String[] opt = options[i]; + if (opt[0].equals("-d")) + { + targetFileName = opt[1] + "/javadoc.xml"; + } + if (opt[0].equals("-encoding")) + { + encodingFormat = opt[1]; + } + } + } + + public static int optionLength(String option) + { + if(option.equals("-d")) + { + return 2; + } + if(option.equals("-encoding")) + { + return 2; + } + return 0; + } + + public static boolean validOptions(String options[][], + DocErrorReporter reporter) + { + boolean foundEncodingOption = false; + boolean foundDirOption = false; + for (int i = 0; i < options.length; i++) + { + String[] opt = options[i]; + if (opt[0].equals("-d")) + { + if (foundDirOption) + { + reporter.printError("Only one -d option allowed."); + return false; + } + else + { + foundDirOption = true; + } + } + if (opt[0].equals("-encoding")) + { + if (foundEncodingOption) + { + reporter.printError("Only one -encoding option allowed."); + return false; + } + else + { + foundEncodingOption = true; + } + } + } + if (!foundDirOption) + { + reporter.printError("Usage: javadoc -d -doclet TagXMLDoclet ..."); + return false; + } + return true; + } } diff --git a/jellydoc/xdocs/changes.xml b/jellydoc/xdocs/changes.xml index 3436051a..447ca13f 100644 --- a/jellydoc/xdocs/changes.xml +++ b/jellydoc/xdocs/changes.xml @@ -9,6 +9,10 @@ + + Externalise output directory and encoding. + JellyDoc report works correctly now with multiproject. + Only register report if sources exist