test/jdk/javadoc/tool/6227454/Test.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -27,28 +27,40 @@
* @summary package.html and overview.html may not be read fully
* @modules jdk.javadoc
*/
import java.io.*;
+import java.util.Arrays;
-import com.sun.javadoc.Doclet;
-import com.sun.javadoc.RootDoc;
+import java.util.HashSet;
+import java.util.ListIterator;
+import java.util.Locale;
+import java.util.Set;
-public class Test extends Doclet {
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.Element;
+
+import com.sun.source.doctree.DocCommentTree;
+import com.sun.source.util.DocTrees;
+import jdk.javadoc.doclet.Doclet;
+import jdk.javadoc.doclet.Reporter;
+import jdk.javadoc.doclet.DocletEnvironment;
+
+
+public class Test implements Doclet {
public static void main(String... args) throws Exception {
new Test().run();
}
+ File referenceFile = new File("Foo.java");
+
void run() throws Exception {
test("<body>ABC XYZ</body>");
test("<body>ABC XYZ</BODY>");
test("<BODY>ABC XYZ</body>");
test("<BODY>ABC XYZ</BODY>");
test("<BoDy>ABC XYZ</bOdY>");
- test(" ABC XYZ</bOdY>", "Body tag missing from HTML");
- test("<body>ABC XYZ ", "Close body tag missing from HTML");
- test(" ABC XYZ ", "Body tag missing from HTML");
test("<body>ABC" + bigText(8192, 40) + "XYZ</body>");
if (errors > 0)
throw new Exception(errors + " errors occurred");
}
@@ -56,37 +68,38 @@
void test(String body) throws IOException {
test(body, null);
}
void test(String body, String expectError) throws IOException {
+ if (!referenceFile.exists()) {
+ writeFile(referenceFile.getName(), "public class Foo {}");
+ }
String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+ "\"http://www.w3.org/TR/html4/loose.dtd\">";
String headTag = "<head><title>Title </title></head>";
String text = docType + "<html>" + headTag + body + "</html>";
testNum++;
System.err.println("test " + testNum);
File file = writeFile("overview" + testNum + ".html", text);
String thisClassName = Test.class.getName();
- File testSrc = new File(System.getProperty("test.src"));
String[] args = {
"-bootclasspath",
System.getProperty("java.class.path")
+ File.pathSeparator
+ System.getProperty("sun.boot.class.path"),
"-classpath", ".",
+ "-docletpath", System.getProperty("test.classes"),
+ "-doclet", thisClassName,
"-package",
"-overview", file.getPath(),
- new File(testSrc, thisClassName + ".java").getPath()
+ "-sourcepath", ".",
+ referenceFile.getPath()
};
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
- int rc = com.sun.tools.javadoc.Main.execute(
- "javadoc",
- pw, pw, pw,
- thisClassName,
- args);
+ int rc = jdk.javadoc.internal.tool.Main.execute(args, pw);
pw.close();
String out = sw.toString();
if (!out.isEmpty())
System.err.println(out);
System.err.println("javadoc exit: rc=" + rc);
@@ -129,12 +142,23 @@
}
int testNum;
int errors;
- public static boolean start(RootDoc root) {
- String text = root.commentText();
+ public boolean run(DocletEnvironment root) {
+ DocTrees docTrees = root.getDocTrees();
+ System.out.println("classes:" + root.getIncludedClasses());
+
+ Element klass = root.getIncludedClasses().iterator().next();
+ String text = "";
+ try {
+ DocCommentTree dcTree = docTrees.getDocCommentTree(klass, overviewpath);
+ text = dcTree.getFullBody().toString();
+ } catch (IOException ioe) {
+ throw new Error(ioe);
+ }
+
if (text.length() < 64)
System.err.println("text: '" + text + "'");
else
System.err.println("text: '"
+ text.substring(0, 20)
@@ -141,6 +165,70 @@
+ "..."
+ text.substring(text.length() - 20)
+ "'");
return text.startsWith("ABC") && text.endsWith("XYZ");
}
+
+ @Override
+ public String getName() {
+ return "Test";
+ }
+
+ private String overviewpath;
+
+ @Override
+ public Set<Option> getSupportedOptions() {
+ Option[] options = {
+ new Option() {
+
+ @Override
+ public int getArgumentCount() {
+ return 1;
+ }
+
+ @Override
+ public String getDescription() {
+ return "overview";
+ }
+
+ @Override
+ public Option.Kind getKind() {
+ return Option.Kind.STANDARD;
+ }
+
+ @Override
+ public String getName() {
+ return "overview";
+ }
+
+ @Override
+ public String getParameters() {
+ return "url";
+ }
+
+ @Override
+ public boolean matches(String option) {
+ String opt = option.startsWith("-") ? option.substring(1) : option;
+ return getName().equals(opt);
+ }
+
+ @Override
+ public boolean process(String option, ListIterator<String> arguments) {
+ if (matches(option)) {
+ overviewpath = arguments.next();
+ }
+ return true;
+ }
+ }
+ };
+ return new HashSet<Option>(Arrays.asList(options));
+ }
+
+ @Override
+ public SourceVersion getSupportedSourceVersion() {
+ return SourceVersion.latest();
+ }
+
+ public void init(Locale locale, Reporter reporter) {
+ return;
+ }
}