langtools/src/share/classes/com/sun/tools/javadoc/JavadocTool.java
changeset 23973 4b5f3a297142
parent 23116 4c134ccd6b8d
child 24604 7f68545b5128
--- a/langtools/src/share/classes/com/sun/tools/javadoc/JavadocTool.java	Wed Apr 16 18:36:43 2014 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/JavadocTool.java	Wed Apr 16 18:15:48 2014 -0700
@@ -68,6 +68,7 @@
     final Messager messager;
     final JavadocClassReader javadocReader;
     final JavadocEnter javadocEnter;
+    final Set<JavaFileObject> uniquefiles;
 
     /**
      * Construct a new JavaCompiler processor, using appropriately
@@ -78,6 +79,7 @@
         messager = Messager.instance0(context);
         javadocReader = JavadocClassReader.instance0(context);
         javadocEnter = JavadocEnter.instance0(context);
+        uniquefiles = new HashSet<>();
     }
 
     /**
@@ -148,9 +150,7 @@
                 String name = it.head;
                 if (!docClasses && fm != null && name.endsWith(".java") && new File(name).exists()) {
                     JavaFileObject fo = fm.getJavaFileObjects(name).iterator().next();
-                    docenv.notice("main.Loading_source_file", name);
-                    JCCompilationUnit tree = parse(fo);
-                    classTrees.append(tree);
+                    parse(fo, classTrees, true);
                 } else if (isValidPackageName(name)) {
                     names = names.append(name);
                 } else if (name.endsWith(".java")) {
@@ -163,9 +163,7 @@
                 }
             }
             for (JavaFileObject fo: fileObjects) {
-                docenv.notice("main.Loading_source_file", fo.getName());
-                JCCompilationUnit tree = parse(fo);
-                classTrees.append(tree);
+                parse(fo, classTrees, true);
             }
 
             if (!docClasses) {
@@ -213,7 +211,7 @@
      * .java files found in such a directory to args.
      */
     private void parsePackageClasses(String name,
-            Iterable<JavaFileObject> files,
+            List<JavaFileObject> files,
             ListBuffer<JCCompilationUnit> trees,
             List<String> excludedPackages)
             throws IOException {
@@ -221,7 +219,6 @@
             return;
         }
 
-        boolean hasFiles = false;
         docenv.notice("main.Loading_source_files_for_package", name);
 
         if (files == null) {
@@ -238,19 +235,22 @@
             }
             files = lb.toList();
         }
+        if (files.nonEmpty()) {
+            for (JavaFileObject fo : files) {
+                parse(fo, trees, false);
+            }
+        } else {
+            messager.warning(Messager.NOPOS, "main.no_source_files_for_package",
+                             name.replace(File.separatorChar, '.'));
+        }
+    }
 
-        Set<JavaFileObject> ufiles = new HashSet<>();
-        for (JavaFileObject fo : files) {
-            if (ufiles.add(fo)) { // ignore duplicates
-                // messager.notice("main.Loading_source_file", fn);
-                trees.append(parse(fo));
-                hasFiles = true;
-            }
-        }
-
-        if (!hasFiles) {
-            messager.warning(Messager.NOPOS, "main.no_source_files_for_package",
-                    name.replace(File.separatorChar, '.'));
+    private void parse(JavaFileObject fo, ListBuffer<JCCompilationUnit> trees,
+                       boolean trace) {
+        if (uniquefiles.add(fo)) { // ignore duplicates
+            if (trace)
+                docenv.notice("main.Loading_source_file", fo.getName());
+            trees.append(parse(fo));
         }
     }