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 }
|