langtools/src/share/classes/com/sun/tools/javadoc/JavadocTool.java
changeset 14543 43edeaf6d0a9
parent 14260 727a84636f12
child 14545 2e7bab0639b8
equal deleted inserted replaced
14542:7062120649c2 14543:43edeaf6d0a9
    36 import javax.tools.JavaFileObject;
    36 import javax.tools.JavaFileObject;
    37 import javax.tools.StandardJavaFileManager;
    37 import javax.tools.StandardJavaFileManager;
    38 import javax.tools.StandardLocation;
    38 import javax.tools.StandardLocation;
    39 
    39 
    40 import com.sun.tools.javac.code.Symbol.CompletionFailure;
    40 import com.sun.tools.javac.code.Symbol.CompletionFailure;
    41 import com.sun.tools.javac.comp.Annotate;
       
    42 import com.sun.tools.javac.tree.JCTree;
    41 import com.sun.tools.javac.tree.JCTree;
    43 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
    42 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
    44 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
    43 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
    45 import com.sun.tools.javac.util.Abort;
    44 import com.sun.tools.javac.util.Abort;
    46 import com.sun.tools.javac.util.Context;
    45 import com.sun.tools.javac.util.Context;
    63  *  @author Neal Gafter
    62  *  @author Neal Gafter
    64  */
    63  */
    65 public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
    64 public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
    66     DocEnv docenv;
    65     DocEnv docenv;
    67 
    66 
    68     final Context context;
       
    69     final Messager messager;
    67     final Messager messager;
    70     final JavadocClassReader reader;
    68     final JavadocClassReader javadocReader;
    71     final JavadocEnter enter;
    69     final JavadocEnter javadocEnter;
    72     final Annotate annotate;
       
    73 
    70 
    74     /**
    71     /**
    75      * Construct a new JavaCompiler processor, using appropriately
    72      * Construct a new JavaCompiler processor, using appropriately
    76      * extended phases of the underlying compiler.
    73      * extended phases of the underlying compiler.
    77      */
    74      */
    78     protected JavadocTool(Context context) {
    75     protected JavadocTool(Context context) {
    79         super(context);
    76         super(context);
    80         this.context = context;
       
    81         messager = Messager.instance0(context);
    77         messager = Messager.instance0(context);
    82         reader = JavadocClassReader.instance0(context);
    78         javadocReader = JavadocClassReader.instance0(context);
    83         enter = JavadocEnter.instance0(context);
    79         javadocEnter = JavadocEnter.instance0(context);
    84         annotate = Annotate.instance(context);
       
    85     }
    80     }
    86 
    81 
    87     /**
    82     /**
    88      * For javadoc, the parser needs to keep comments. Overrides method from JavaCompiler.
    83      * For javadoc, the parser needs to keep comments. Overrides method from JavaCompiler.
    89      */
    84      */
   136         docenv.breakiterator = breakiterator;
   131         docenv.breakiterator = breakiterator;
   137         docenv.setLocale(doclocale);
   132         docenv.setLocale(doclocale);
   138         docenv.setEncoding(encoding);
   133         docenv.setEncoding(encoding);
   139         docenv.docClasses = docClasses;
   134         docenv.docClasses = docClasses;
   140         docenv.legacyDoclet = legacyDoclet;
   135         docenv.legacyDoclet = legacyDoclet;
   141         reader.sourceCompleter = docClasses ? null : this;
   136         javadocReader.sourceCompleter = docClasses ? null : this;
   142 
   137 
   143         ListBuffer<String> names = new ListBuffer<String>();
   138         ListBuffer<String> names = new ListBuffer<String>();
   144         ListBuffer<JCCompilationUnit> classTrees = new ListBuffer<JCCompilationUnit>();
   139         ListBuffer<JCCompilationUnit> classTrees = new ListBuffer<JCCompilationUnit>();
   145         ListBuffer<JCCompilationUnit> packTrees = new ListBuffer<JCCompilationUnit>();
   140         ListBuffer<JCCompilationUnit> packTrees = new ListBuffer<JCCompilationUnit>();
   146 
   141 
   154                     JCCompilationUnit tree = parse(fo);
   149                     JCCompilationUnit tree = parse(fo);
   155                     classTrees.append(tree);
   150                     classTrees.append(tree);
   156                 } else if (isValidPackageName(name)) {
   151                 } else if (isValidPackageName(name)) {
   157                     names = names.append(name);
   152                     names = names.append(name);
   158                 } else if (name.endsWith(".java")) {
   153                 } else if (name.endsWith(".java")) {
   159                     docenv.error(null, "main.file_not_found", name);
   154                         docenv.error(null, "main.file_not_found", name);
   160                 } else {
   155                 } else {
   161                     docenv.error(null, "main.illegal_package_name", name);
   156                     docenv.error(null, "main.illegal_package_name", name);
   162                 }
   157                 }
   163             }
   158             }
   164 
   159 
   177 
   172 
   178                 if (messager.nerrors() != 0) return null;
   173                 if (messager.nerrors() != 0) return null;
   179 
   174 
   180                 // Enter symbols for all files
   175                 // Enter symbols for all files
   181                 docenv.notice("main.Building_tree");
   176                 docenv.notice("main.Building_tree");
   182                 enter.main(classTrees.toList().appendList(packTrees.toList()));
   177                 javadocEnter.main(classTrees.toList().appendList(packTrees.toList()));
   183             }
   178             }
   184         } catch (Abort ex) {}
   179         } catch (Abort ex) {}
   185 
   180 
   186         if (messager.nerrors() != 0)
   181         if (messager.nerrors() != 0)
   187             return null;
   182             return null;
   238             trees.append(parse(fo));
   233             trees.append(parse(fo));
   239             hasFiles = true;
   234             hasFiles = true;
   240         }
   235         }
   241 
   236 
   242         if (!hasFiles) {
   237         if (!hasFiles) {
   243             messager.warning(null, "main.no_source_files_for_package",
   238             messager.warning(Messager.NOPOS, "main.no_source_files_for_package",
   244                     name.replace(File.separatorChar, '.'));
   239                     name.replace(File.separatorChar, '.'));
   245         }
   240         }
   246     }
   241     }
   247 
   242 
   248     /**
   243     /**