< prev index next >

src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocTool.java

Print this page




  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package jdk.javadoc.internal.tool;
  27 
  28 import java.nio.file.Files;
  29 import java.nio.file.InvalidPathException;
  30 import java.nio.file.Paths;
  31 import java.util.ArrayList;
  32 import java.util.HashSet;
  33 import java.util.LinkedHashSet;
  34 import java.util.List;
  35 import java.util.Map;
  36 import java.util.Set;
  37 
  38 import javax.lang.model.element.Element;
  39 import javax.lang.model.element.ElementKind;
  40 import javax.tools.JavaFileObject;
  41 import javax.tools.StandardJavaFileManager;
  42 
  43 import com.sun.tools.javac.code.ClassFinder;
  44 import com.sun.tools.javac.code.DeferredCompletionFailureHandler;
  45 import com.sun.tools.javac.code.Symbol.Completer;
  46 import com.sun.tools.javac.code.Symbol.CompletionFailure;
  47 import com.sun.tools.javac.code.Symbol.PackageSymbol;
  48 import com.sun.tools.javac.comp.Enter;
  49 import com.sun.tools.javac.tree.JCTree;
  50 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
  51 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
  52 import com.sun.tools.javac.util.Abort;
  53 import com.sun.tools.javac.util.Context;
  54 import com.sun.tools.javac.util.ListBuffer;
  55 import com.sun.tools.javac.util.Position;


 104     public static JavadocTool make0(Context context) {
 105         Messager messager = null;
 106         try {
 107             // force the use of Javadoc's class finder
 108             JavadocClassFinder.preRegister(context);
 109 
 110             // force the use of Javadoc's own enter phase
 111             JavadocEnter.preRegister(context);
 112 
 113             // force the use of Javadoc's own member enter phase
 114             JavadocMemberEnter.preRegister(context);
 115 
 116             // force the use of Javadoc's own todo phase
 117             JavadocTodo.preRegister(context);
 118 
 119             // force the use of Messager as a Log
 120             messager = Messager.instance0(context);
 121 
 122             return new JavadocTool(context);
 123         } catch (CompletionFailure ex) {

 124             messager.error(Position.NOPOS, ex.getMessage());
 125             return null;
 126         }
 127     }
 128 
 129     public DocletEnvironment getEnvironment(Map<ToolOption,
 130             Object> jdtoolOpts,
 131             List<String> javaNames,
 132             Iterable<? extends JavaFileObject> fileObjects) throws ToolException {
 133         toolEnv = ToolEnvironment.instance(context);
 134         toolEnv.initialize(jdtoolOpts);
 135         ElementsTable etable = new ElementsTable(context, jdtoolOpts);
 136         javadocFinder.sourceCompleter = etable.xclasses
 137                 ? Completer.NULL_COMPLETER
 138                 : sourceCompleter;
 139 
 140         if (etable.xclasses) {
 141             // If -Xclasses is set, the args should be a list of class names
 142             for (String arg: javaNames) {
 143                 if (!isValidPackageName(arg)) { // checks
 144                     String text = messager.getText("main.illegal_class_name", arg);
 145                     throw new ToolException(CMDERR, text);
 146                 }
 147             }
 148             if (messager.hasErrors()) {
 149                 return null;
 150             }
 151             etable.setClassArgList(javaNames);
 152             // prepare, force the data structures to be analyzed
 153             etable.analyze();
 154             return new DocEnvImpl(toolEnv, etable);
 155         }




  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package jdk.javadoc.internal.tool;
  27 
  28 import java.nio.file.Files;
  29 import java.nio.file.InvalidPathException;
  30 import java.nio.file.Paths;
  31 import java.util.ArrayList;
  32 import java.util.HashSet;
  33 import java.util.LinkedHashSet;
  34 import java.util.List;

  35 import java.util.Set;
  36 
  37 import javax.lang.model.element.Element;
  38 import javax.lang.model.element.ElementKind;
  39 import javax.tools.JavaFileObject;
  40 import javax.tools.StandardJavaFileManager;
  41 
  42 import com.sun.tools.javac.code.ClassFinder;
  43 import com.sun.tools.javac.code.DeferredCompletionFailureHandler;
  44 import com.sun.tools.javac.code.Symbol.Completer;
  45 import com.sun.tools.javac.code.Symbol.CompletionFailure;
  46 import com.sun.tools.javac.code.Symbol.PackageSymbol;
  47 import com.sun.tools.javac.comp.Enter;
  48 import com.sun.tools.javac.tree.JCTree;
  49 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
  50 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
  51 import com.sun.tools.javac.util.Abort;
  52 import com.sun.tools.javac.util.Context;
  53 import com.sun.tools.javac.util.ListBuffer;
  54 import com.sun.tools.javac.util.Position;


 103     public static JavadocTool make0(Context context) {
 104         Messager messager = null;
 105         try {
 106             // force the use of Javadoc's class finder
 107             JavadocClassFinder.preRegister(context);
 108 
 109             // force the use of Javadoc's own enter phase
 110             JavadocEnter.preRegister(context);
 111 
 112             // force the use of Javadoc's own member enter phase
 113             JavadocMemberEnter.preRegister(context);
 114 
 115             // force the use of Javadoc's own todo phase
 116             JavadocTodo.preRegister(context);
 117 
 118             // force the use of Messager as a Log
 119             messager = Messager.instance0(context);
 120 
 121             return new JavadocTool(context);
 122         } catch (CompletionFailure ex) {
 123             assert messager != null;
 124             messager.error(Position.NOPOS, ex.getMessage());
 125             return null;
 126         }
 127     }
 128 
 129     public DocletEnvironment getEnvironment(ToolOptions toolOptions,

 130             List<String> javaNames,
 131             Iterable<? extends JavaFileObject> fileObjects) throws ToolException {
 132         toolEnv = ToolEnvironment.instance(context);
 133         toolEnv.initialize(toolOptions);
 134         ElementsTable etable = new ElementsTable(context, toolOptions);
 135         javadocFinder.sourceCompleter = etable.xclasses
 136                 ? Completer.NULL_COMPLETER
 137                 : sourceCompleter;
 138 
 139         if (etable.xclasses) {
 140             // If -Xclasses is set, the args should be a list of class names
 141             for (String arg: javaNames) {
 142                 if (!isValidPackageName(arg)) { // checks
 143                     String text = messager.getText("main.illegal_class_name", arg);
 144                     throw new ToolException(CMDERR, text);
 145                 }
 146             }
 147             if (messager.hasErrors()) {
 148                 return null;
 149             }
 150             etable.setClassArgList(javaNames);
 151             // prepare, force the data structures to be analyzed
 152             etable.analyze();
 153             return new DocEnvImpl(toolEnv, etable);
 154         }


< prev index next >