langtools/test/jdk/javadoc/tool/modules/ModuleTestBase.java
changeset 44301 2f97c71f06f4
parent 44288 c33a416cfcf8
--- a/langtools/test/jdk/javadoc/tool/modules/ModuleTestBase.java	Thu Mar 16 17:13:10 2017 -0700
+++ b/langtools/test/jdk/javadoc/tool/modules/ModuleTestBase.java	Thu Mar 16 18:50:50 2017 -0700
@@ -27,7 +27,7 @@
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Arrays;
-import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
@@ -158,6 +158,12 @@
         }
     }
 
+    void checkTypesSelected(String... args) throws Exception {
+        for (String arg : args) {
+            checkDocletOutputPresent("Selected", ElementKind.CLASS, arg);
+        }
+    }
+
     void checkMembersSelected(String... args) throws Exception {
         for (String arg : args) {
             checkDocletOutputPresent("Selected", ElementKind.METHOD, arg);
@@ -280,6 +286,17 @@
         StringWriter sw = new StringWriter();
         PrintWriter ps = new PrintWriter(sw);
 
+        DocletEnvironment docEnv = null;
+
+        boolean hasDocComments = false;
+
+        String hasDocComments(Element e) {
+            String comment = docEnv.getElementUtils().getDocComment(e);
+            return comment != null && !comment.isEmpty()
+                    ? "hasDocComments"
+                    : "noDocComments";
+        }
+
         // csv style output, for simple regex verification
         void printDataSet(String header, Set<? extends Element> set) {
             for (Element e : set) {
@@ -290,7 +307,12 @@
                         ps.print(FS);
                         ps.print(e.getKind());
                         ps.print(FS);
-                        ps.println(e.getQualifiedName());
+                        ps.print(e.getQualifiedName());
+                        if (hasDocComments) {
+                            ps.print(FS);
+                            ps.print(hasDocComments(e));
+                        }
+                        ps.println();
                         return null;
                     }
 
@@ -299,7 +321,12 @@
                         ps.print(FS);
                         ps.print(e.getKind());
                         ps.print(FS);
-                        ps.println(e.getQualifiedName());
+                        ps.print(e.getQualifiedName());
+                        if (hasDocComments) {
+                            ps.print(FS);
+                            ps.print(hasDocComments(e));
+                        }
+                        ps.println();
                         return null;
                     }
 
@@ -308,7 +335,12 @@
                         ps.print(FS);
                         ps.print(ElementKind.CLASS);
                         ps.print(FS);
-                        ps.println(e.getQualifiedName());
+                        ps.print(e.getQualifiedName());
+                        if (hasDocComments) {
+                            ps.print(FS);
+                            ps.print(hasDocComments(e));
+                        }
+                        ps.println();
                         return null;
                     }
 
@@ -338,7 +370,12 @@
                         ps.print(FS);
                         ps.print(fqn);
                         ps.print(".");
-                        ps.println(e.getSimpleName());
+                        ps.print(e.getSimpleName());
+                        if (hasDocComments) {
+                            ps.print(FS);
+                            ps.print(hasDocComments(e));
+                        }
+                        ps.println();
                         return null;
                     }
                 }.visit(e);
@@ -347,6 +384,7 @@
 
         @Override
         public boolean run(DocletEnvironment docenv) {
+            this.docEnv = docenv;
             ps.println("ModuleMode" + FS + docenv.getModuleMode());
             printDataSet("Specified", docenv.getSpecifiedElements());
             printDataSet("Included", docenv.getIncludedElements());
@@ -369,7 +407,9 @@
                 addEnclosedElements(docenv, result, me);
             }
             for (PackageElement pe : ElementFilter.packagesIn(elements)) {
-                addEnclosedElements(docenv, result, docenv.getElementUtils().getModuleOf(pe));
+                ModuleElement mdle = docenv.getElementUtils().getModuleOf(pe);
+                if (mdle != null)
+                    addEnclosedElements(docenv, result, mdle);
                 addEnclosedElements(docenv, result, pe);
             }
             for (TypeElement te : ElementFilter.typesIn(elements)) {
@@ -390,7 +430,45 @@
 
         @Override
         public Set<Doclet.Option> getSupportedOptions() {
-            return Collections.emptySet();
+            Option[] options = {
+                new Option() {
+                    private final List<String> someOption = Arrays.asList(
+                            "-hasDocComments"
+                    );
+
+                    @Override
+                    public int getArgumentCount() {
+                        return 0;
+                    }
+
+                    @Override
+                    public String getDescription() {
+                        return "print disposition of doc comments on an element";
+                    }
+
+                    @Override
+                    public Option.Kind getKind() {
+                        return Option.Kind.STANDARD;
+                    }
+
+                    @Override
+                    public List<String> getNames() {
+                        return someOption;
+                    }
+
+                    @Override
+                    public String getParameters() {
+                        return "flag";
+                    }
+
+                    @Override
+                    public boolean process(String opt, List<String> arguments) {
+                        hasDocComments = true;
+                        return true;
+                    }
+                }
+            };
+            return new HashSet<>(Arrays.asList(options));
         }
 
         @Override