Updates JreDocTool to print the JRE emulation reference HTML fragment to a file instead of stdout.
Rietveld review: http://gwt-code-reviews.appspot.com/130816
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7468 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/build-tools/doctool/src/com/google/doctool/JreDocTool.java b/build-tools/doctool/src/com/google/doctool/JreDocTool.java
index 7f33ce0..40b7b5c 100644
--- a/build-tools/doctool/src/com/google/doctool/JreDocTool.java
+++ b/build-tools/doctool/src/com/google/doctool/JreDocTool.java
@@ -39,6 +39,9 @@
} else if (null != (arg = tryParseArg(args, i, "-classpath"))) {
i++;
factory.setClasspath(arg);
+ } else if (null != (arg = tryParseArg(args, i, "-out"))) {
+ i++;
+ factory.setOutputFile(arg);
} else if (null != (arg = tryParseArg(args, i, "-packages"))) {
i++;
factory.setPackages(arg);
@@ -69,6 +72,8 @@
s += " -sourcepath\n";
s += " The path to find Java source for this doc set.\n";
s += " E.g. /gwt/src/trunk/user/super/com/google/gwt/emul\n";
+ s += " -out\n";
+ s += " The path and filename of the output file\n";
s += " -packages\n";
s += " A semicolon-separated list of fully-qualified package names.\n";
s += " E.g. java.lang;java.lang.annotation;java.util;java.io;java.sql\n";
@@ -112,12 +117,16 @@
private String classpath;
+ private String outputFile;
+
private String packages;
private String sourcepath;
- JreDocTool(String classpath, String packages, String sourcepath) {
+ JreDocTool(String classpath, String outputFile, String packages,
+ String sourcepath) {
this.classpath = classpath;
+ this.outputFile = outputFile;
this.packages = packages;
this.sourcepath = sourcepath;
}
@@ -141,6 +150,9 @@
args.add("-sourcepath");
args.add(this.sourcepath);
+ args.add(EztDoclet.OPT_EZTFILE);
+ args.add(this.outputFile);
+
args.addAll(Arrays.asList(this.packages.split(";")));
com.sun.tools.javadoc.Main.execute(args.toArray(new String[0]));
diff --git a/build-tools/doctool/src/com/google/doctool/JreDocToolFactory.java b/build-tools/doctool/src/com/google/doctool/JreDocToolFactory.java
index d131be7..0e7ac66 100644
--- a/build-tools/doctool/src/com/google/doctool/JreDocToolFactory.java
+++ b/build-tools/doctool/src/com/google/doctool/JreDocToolFactory.java
@@ -25,6 +25,8 @@
private String classpath;
+ private String outputFile;
+
private String packages;
private String sourcepath;
@@ -35,6 +37,11 @@
return null;
}
+ if (this.outputFile == null) {
+ err.println("You must specify the output file (-out)");
+ return null;
+ }
+
if (this.packages == null) {
err.println("You must specify the -packages");
return null;
@@ -45,13 +52,17 @@
return null;
}
- return new JreDocTool(classpath, packages, sourcepath);
+ return new JreDocTool(classpath, outputFile, packages, sourcepath);
}
public void setClasspath(String classpath) {
this.classpath = classpath;
}
+ public void setOutputFile(String outputFile) {
+ this.outputFile = outputFile;
+ }
+
public void setPackages(String packages) {
this.packages = packages;
}
diff --git a/build-tools/doctool/src/com/google/doctool/custom/EztDoclet.java b/build-tools/doctool/src/com/google/doctool/custom/EztDoclet.java
index 4fc4dbc..b19f9fe 100644
--- a/build-tools/doctool/src/com/google/doctool/custom/EztDoclet.java
+++ b/build-tools/doctool/src/com/google/doctool/custom/EztDoclet.java
@@ -17,10 +17,14 @@
package com.google.doctool.custom;
import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.DocErrorReporter;
import com.sun.javadoc.ExecutableMemberDoc;
import com.sun.javadoc.PackageDoc;
import com.sun.javadoc.RootDoc;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
@@ -34,15 +38,29 @@
*/
public class EztDoclet {
- private static final String JAVADOC_URL = "http://java.sun.com/javase/6/docs/api/";
+ public static final String OPT_EZTFILE = "-eztfile";
private static EztDoclet EZT_DOCLET;
+ private static final String JAVADOC_URL = "http://java.sun.com/javase/6/docs/api/";
+
+ public static int optionLength(String option) {
+ if (option.equals(OPT_EZTFILE)) {
+ return 2;
+ }
+ return 0;
+ }
+
public static boolean start(RootDoc root) {
getDoclet().process(root);
return true;
}
+ public static boolean validOptions(String[][] options,
+ DocErrorReporter reporter) {
+ return getDoclet().analyzeOptions(options, reporter);
+ }
+
private static EztDoclet getDoclet() {
if (EZT_DOCLET == null) {
EZT_DOCLET = new EztDoclet();
@@ -50,6 +68,24 @@
return EZT_DOCLET;
}
+ private String outputFile;
+
+ private boolean analyzeOptions(String[][] options, DocErrorReporter reporter) {
+ for (int i = 0; i < options.length; i++) {
+ if (options[i][0] == OPT_EZTFILE) {
+ outputFile = options[i][1];
+ }
+ }
+
+ if (outputFile == null) {
+ reporter.printError("You must specify an output filepath with "
+ + OPT_EZTFILE);
+ return false;
+ }
+
+ return true;
+ }
+
private String createMemberList(Collection<ExecutableMemberDoc> members) {
StringBuffer buffer = new StringBuffer();
Iterator<ExecutableMemberDoc> iter = members.iterator();
@@ -64,54 +100,61 @@
}
private void process(RootDoc root) {
- PrintWriter pw = new PrintWriter(System.out, true);
+ try {
+ File outFile = new File(outputFile);
+ outFile.getParentFile().mkdirs();
+ FileWriter fw = new FileWriter(outFile);
+ PrintWriter pw = new PrintWriter(fw, true);
- pw.println("<ol class=\"toc\" id=\"pageToc\">");
- for (PackageDoc pack : root.specifiedPackages()) {
- pw.format(" <li><a href=\"#Package_%s\">%s</a></li>\n",
- pack.name().replace('.', '_'), pack.name());
- }
- pw.println("</ol>\n");
-
- for (PackageDoc pack : root.specifiedPackages()) {
- pw.format("<h1 id=\"Package_%s\">Package %s</h1>\n", pack.name().replace(
- '.', '_'), pack.name());
- pw.println("<dl>");
-
- String packURL = JAVADOC_URL + pack.name().replace(".", "/") + "/";
-
- // Sort the classes alphabetically
- ClassDoc[] classes = pack.allClasses(true);
- Arrays.sort(classes, new Comparator<ClassDoc>() {
- public int compare(ClassDoc arg0, ClassDoc arg1) {
- return arg0.name().compareTo(arg1.name());
- }
- });
-
- Iterator<ClassDoc> iter = Arrays.asList(classes).iterator();
- while (iter.hasNext()) {
- ClassDoc cls = iter.next();
-
- // Each class links to Sun's main JavaDoc
- pw.format(" <dt><a href=\"%s%s.html\">%s</a></dt>\n", packURL,
- cls.name(), cls.name());
-
- // Print out all constructors and methods
- Collection<ExecutableMemberDoc> members = new ArrayList<ExecutableMemberDoc>();
- members.addAll(Arrays.asList(cls.constructors(true)));
- members.addAll(Arrays.asList(cls.methods(true)));
-
- if (!members.isEmpty()) {
- pw.format(" <dd>%s</dd>\n", createMemberList(members));
- }
-
- if (iter.hasNext()) {
- pw.print("\n");
- }
+ pw.println("<ol class=\"toc\" id=\"pageToc\">");
+ for (PackageDoc pack : root.specifiedPackages()) {
+ pw.format(" <li><a href=\"#Package_%s\">%s</a></li>\n",
+ pack.name().replace('.', '_'), pack.name());
}
+ pw.println("</ol>\n");
- pw.println("</dl>\n");
+ for (PackageDoc pack : root.specifiedPackages()) {
+ pw.format("<h1 id=\"Package_%s\">Package %s</h1>\n",
+ pack.name().replace('.', '_'), pack.name());
+ pw.println("<dl>");
+
+ String packURL = JAVADOC_URL + pack.name().replace(".", "/") + "/";
+
+ // Sort the classes alphabetically
+ ClassDoc[] classes = pack.allClasses(true);
+ Arrays.sort(classes, new Comparator<ClassDoc>() {
+ public int compare(ClassDoc arg0, ClassDoc arg1) {
+ return arg0.name().compareTo(arg1.name());
+ }
+ });
+
+ Iterator<ClassDoc> iter = Arrays.asList(classes).iterator();
+ while (iter.hasNext()) {
+ ClassDoc cls = iter.next();
+
+ // Each class links to Sun's main JavaDoc
+ pw.format(" <dt><a href=\"%s%s.html\">%s</a></dt>\n", packURL,
+ cls.name(), cls.name());
+
+ // Print out all constructors and methods
+ Collection<ExecutableMemberDoc> members = new ArrayList<ExecutableMemberDoc>();
+ members.addAll(Arrays.asList(cls.constructors(true)));
+ members.addAll(Arrays.asList(cls.methods(true)));
+
+ if (!members.isEmpty()) {
+ pw.format(" <dd>%s</dd>\n", createMemberList(members));
+ }
+
+ if (iter.hasNext()) {
+ pw.print("\n");
+ }
+ }
+
+ pw.println("</dl>\n");
+ }
+ pw.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
- pw.close();
}
}
diff --git a/doc/build.xml b/doc/build.xml
index 7f4be01..8c31465 100644
--- a/doc/build.xml
+++ b/doc/build.xml
@@ -100,23 +100,21 @@
</outofdate>
</target>
- <target name="wiki-lang">
+ <target name="emul-ezt">
<outofdate>
<sourcefiles>
- <fileset file="./src/RefJreHeader.wiki" />
<fileset dir="${gwt.root}/user/super/com/google/gwt/emul">
<include name="**/*.java" />
</fileset>
</sourcefiles>
<targetfiles>
- <pathelement path="${project.build}/wiki/RefJreEmulation.wiki" />
+ <pathelement path="${project.build}/emul-ezt/fragment.html" />
</targetfiles>
<sequential>
+ <echo>Building JRE emulation EZT</echo>
<java classpathref="DOC_PATH" classname="com.google.doctool.JreDocTool" fork="yes" failonerror="true">
<arg value="-out" />
- <arg value="${project.build}/wiki/RefJreEmulation.wiki" />
- <arg value="-header" />
- <arg value="./src/RefJreHeader.wiki" />
+ <arg value="${project.build}/emul-ezt/fragment.html" />
<arg value="-classpath" />
<arg pathref="USER_CLASS_PATH" />
<arg value="-sourcepath" />
@@ -128,5 +126,5 @@
</outofdate>
</target>
- <target name="build" depends="javadoc, wiki-lang" />
+ <target name="build" depends="javadoc, emul-ezt" />
</project>